Rexx - Parsen

Eine der leistungsstärksten Funktionen von Rexx ist die Fähigkeit, Textwerte zu analysieren. Sie werden dies wahrscheinlich in keiner anderen Programmiersprache sehen.

Das allgemeine Format der Parse-Anweisung lautet wie folgt:

Syntax

PARSE {UPPER|LOWER|CASELESS} source {template}

Where,

  • UPPER - Die Quelle wird vor dem Parsen in Großbuchstaben konvertiert.

  • LOWER - Die Quelle wird vor dem Parsen in Kleinbuchstaben konvertiert.

  • CASELESS - Wenn dieser Parameter übergeben wird, wird das Gehäuse ignoriert.

  • source- Dies ist die Quelle, die analysiert werden muss. Hierfür stehen viele Optionen zur Verfügung, die eine der folgenden sein können:

    • ARG - Die Argumente für das Programm oder die Prozedur können als Quelle verwendet werden.

    • LINEIN - Der nächste Zeileneingang kann als Quelle verwendet werden.

    • SOURCE - Die Quellinformationen des Programms können als Quelle verwendet werden.

    • VAR name - Der Wert eines Variablennamens kann als Quelle verwendet werden.

  • template- Dieser Parameter gibt an, wie die Quelle analysiert werden soll. Hierfür stehen viele Optionen zur Verfügung. Einige von ihnen sind unten erwähnt.

    • variable name - Dies ist der der Variablen zugewiesene Wert.

    • literal string - Eine wörtliche Zeichenfolge, mit der ein Muster zum Teilen der Zeichenfolge verwendet werden kann.

    • #- Eine absolute Zeichenposition innerhalb der Quelle. Wenn Sie also einen Wert von 5 angeben, wird das 5 - ten Zeichen verwendet werden.

    • +#- Eine relative Zeichenposition innerhalb der Quelle. Wenn Sie also einen Wert von 5 angeben, die 5 th Charakter relativ verwendet werden.

Schauen wir uns ein einfaches Beispiel an, wie das Parsen in Rexx durchgeführt werden kann.

Beispiel

/* Main program */ 
parse value 'This is a Tutorial' with word1 word2 word3 word4 
say "'"word1"'" 
say "'"word2"'" 
say "'"word3"'" 
say "'"word4"'"

Das obige Programm analysiert die Wörter in der Phrase. Wenn ein Wert aus Wörtern besteht, die nur durch ein Leerzeichen getrennt sind und keine führenden oder nachfolgenden Leerzeichen vorhanden sind, kann der Wert wie folgt leicht in eine bekannte Anzahl von Wörtern analysiert werden.

Die Analysefunktion wird in Rexx verwendet, um einen Zeichenfolgenwert zu nehmen und ihn dann in Wörter zu zerlegen. Im obigen Beispiel werden die Wörter dann aufgeteilt und dann in den Wortvariablen gespeichert.

Die Ausgabe des obigen Programms wäre wie folgt:

'This' 
'is' 
'a' 
'Tutorial'

Ein weiteres Beispiel für das Parsen wird im folgenden Programm gezeigt. Dieses Mal verwenden wir eine while-Klausel, um das Parsen durchzuführen.

Beispiel

/* Main program */ 
phrase = 'This is a Tutorial' 

do while phrase <> '' 
   parse var phrase word phrase 
   say "'"word"'" 
   end

Das obige Programm gibt die folgende Ausgabe aus -

'This' 
'is' 
'a' 
'Tutorial'

Positionsanalyse

Mit Rexx kann man auch mit Positionsanalyse arbeiten. Sehen wir uns ein Beispiel an, wie wir mit der parse-Anweisung eine Positionsanalyse erreichen können.

Beispiel

/* Main program */ 
testString = "Doe       John M.   03/03/78  Mumbai              India"; 
parse var testString name1 11 name2 21 birthday 31 town 51 country 
say name1 
say name2 
say birthday 
say town 
say country

Aus dem obigen Beispiel können Sie ersehen, dass wir neben dem Variablennamen auch angeben, wo die Zeichenfolge enden soll. Für name1 sollten wir also mit dem 11. Zeichen enden und dann mit dem Parsen von name2 beginnen.

Die Ausgabe des obigen Programms wird wie folgt sein:

Doe 
John M. 
03/03/78 
Mumbai 
India

Sie können auch verwenden relative positional parsing in diesem Fall.

Beispiel

/* Main program */ 
testString = "Doe       John M.   03/03/78  Mumbai              India"; 
parse var testString name1 +10 name2 +10 birthday +10 town +20 country 
say name1 
say name2 
say birthday 
say town 
say country

Die Ausgabe des obigen Programms erfolgt wie unten gezeigt.

Doe 
John M. 
03/03/78 
Mumbai 
India