Zurück Weiter Kapitel

Schablonen

Die Syntaxanalyse wird von einer Schablone gesteuert. Unter einer Schablone versteht man eine Token-Gruppe, in der die Variablen angegeben sind, die mit Werten ausgestattet werden sollen, und die Art und Weise, wie die Wertzeichenfolgen zu extrahieren sind. Die Anordnung der Tokens in der Schablone bestimmt, ob das Token eines der beiden Basisobjekte einer Schablone ist: eine Marke oder ein Ziel.

Marke

Legt die Start- und Endposition in der Analysezeichenfolge oder eine Suchposition fest.

Ziel

Ein Symbol, dem durch die Syntaxanalyseoperation ein Wert zugeordnet wird. Dieser Wert ist die durch die Position der Marken definierte Teilzeichenfolge.

Marken

Es gibt drei Arten von Markenobjekten:

Absolute Marken

Tatsächliche Indexposition in der Analysezeichenfolge.

Relative Marken

Position relativ zur aktuellen Position (positiver oder negativer Wert).

Mustermarken

Vergleicht das Suchmuster mit der Analysezeichenfolge, beginnend an der aktuellen Suchposition.

Ziele

Ziele können ebenso wie Marken auf die Suchposition Einfluß haben, wenn Wertzeichenfolgen durch "Tokenisierung", also die Zerlegung von Zeichenfolgen in Tokens, extrahiert werden. Syntaxanalyse durch Tokenisierung extrahiert Wörter (Tokens) aus der Analysezeichenfolge und wird immer dann verwendet, wenn auf ein Ziel unmittelbar ein weiteres Ziel folgt. Während der Tokenisierung wandert die aktuelle Suchposition über eventuelle Leerzeichen hinweg zum Anfang der nächsten Wortes weiter. Der Endeindex ist die Position genau hinter dem Ende des Worts, so daß die Wertzeichenfolge weder voran- noch nachgestellte Leerzeichen aufweist.

Ziele werden durch variable Symbole angegeben. Der Platzhalter Punkt (.) ist ein spezieller Zieltyp und verhält sich genau wie ein normales Ziel, mit der Ausnahme, daß er nicht über einen zugeordneten Wert verfügt.

Schablonenobjekte

Jedes Objekt in einer Schablone wird durch ein oder mehrere Tokens angegeben:

Symbole

Ein Symbol kann ein Ziel oder eine Marke angeben. Um eine Marke handelt es sich, wenn es auf einen Operator (+, - oder =) folgt und der Symbolwert als absolute oder relative Position verwendet wird. Symbole in runden Klammern sind dagegen Mustermarken, und der Symbolwert dient als Musterzeichenfolge. Symbole sind Ziele, wenn keiner der beschriebenen Fälle zutrifft und das Symbol eine Variable ist. Feste Symbole Bezeichnen stets absolute Marken und müssen ganze Zahlen sein. Einzige Ausnahme bildet der Platzhalter (.) als Zielangabe.

Zeichenfolgen

Eine Zeichenfolge stellt immer eine Mustermarke dar.

Runde Klammern

Ein in runden Klammern stehendes Symbol ist eine Mustermarke. Der Wert des Symbols dient als Musterzeichenfolge. Das Symbol kann fest oder variable sein, in der Regel ist es aber eine Variable, da ein festes Muster einfacher als Zeichenfolge angegeben werden könnte.

Operatoren

Die drei Operatoren (+, - und =) sind innerhalb einer Schablone gültig und müssen einem festen oder variablen Symbol vorangestellt sein. Der Wert des Symbols wird als Marke verwendet und muß ganzzahlig sein. Die Operatoren "+" und "-" bezeichnen eine relative Marke, wobei der Operator "-" einen negativen Wert definiert. Der Operator "=" bezeichnet eine absolute Marke und kann weggelassen werden, wenn die Marke durch ein festes Symbol definiert ist.

Kommas

Das Komma (,) markiert das Ende einer Schablone. Es dient auch als Trennzeichen, wenn innerhalb eines Befehls mehrere Schablonen angegeben werden. Vor der Verarbeitung aufeinanderfolgender Schablonen erhält der Interpreter jeweils eine neue Analysezeichenfolge. Bei einigen Quellprogrammoptionen ist die neue Zeichenfolge mit der vorherigen identisch. Die Optionen ARG, EXTERNAL und PULL liefern in der Regel eine von der vorherigen abweichenden Zeichenfolge, ebenso wie die Option VAR, wenn die Variable verändert wurde.

Das Kommandoanalyseprogramm der ARexx-Schnittstelle wurde dahingehend vereinheitlicht, daß Sequenzen mit doppelten Begrenzungszeichen innerhalb einer (in Anführungszeichen stehenden) Zeichenfolgendatei erkannt werden. Die Konvention für die Verwendung von Anführungszeichen ist besonders geeignet für kleinere Programme. In komplexeren Programmen kann es relativ leicht vorkommen, daß die Verschachtelungsebenen für das Setzen von Anführungszeichen nicht mehr ausreichen. Einzelne und doppelte Anführungszeichen sind innerhalb eines REXX-Programms äquivalent, allerdings trifft die externe Umgebung möglicherweise eine Unterscheidung zwischen den verschiedenen Anführungszeichen.

AmigaDOS verwendet das doppelte Anführungszeichen. Zeichenfolgen, die von einer Shell aus eingegeben werden, müssen mit einem doppelten Anführungszeichen beginnen, besonders, wenn sie Semikolons enthalten sollen. Beispiel:

RX "SAY `Das is'' ja `'n Ding - ich glaub'', mich tritt `'n Pferd!' "
-> Das is' ja `n Ding - ich glaub', mich tritt `n Pferd!
RX "SAY `""Hallo!""'" -> "Hallo!"

Hoch Zurück Weiter Kapitel