Zurück Weiter Kapitel

Klauseln

Eine Klausel wird aus Token-Gruppen gebildet und stellt die kleinste als Anweisung ausführbare Spracheinheit dar.

Beim Lesen des Programms teilt der Sprachinterpreter das Programm in Klauselgruppen auf. Diese Gruppen mit einer oder mehreren Klauseln werden dann weiter in Token aufgeteilt, und jede Klausel wird dann unter einem bestimmten Typ klassifiziert. Dabei können unscheinbare syntaktische Unterschiede den semantischen Inhalt einer Anweisung vollständig verändern. Beispiel:

SAY `Halo, Willi'

ist eine Befehlsklausel und zeigt "Hallo, Willi" auf der Konsole an, aber:

` `SAY `Hallo, Willi'

ist eine Kommandoklausel, und gibt "SAY Hallo, Willi" als Kommando an ein externes Programm aus. Die führende Nullzeichenfolge (` `) wirkt sich also auf die Klassifizierung aus: aus einer Befehlsklausel wird eine Kommandoklausel.

Das Zeilenende gilt in der Regel implizit als Ende einer Klausel. Eine Klausel kann jedoch auch in der folgenden Zeile fortgesetzt werden. dazu muß die erste Zeile mit einem Komma abgeschlossen werden. Das Komma wird vom Programm ignoriert, und die nächste Zeile wird als Fortsetzung der Klausel interpretiert. Für solche Fortsetzungen gibt es kein festgelegtes Maximum (abgesehen davon, daß die Größe des Kommandopuffers nicht überschritten werden darf).

Zeichenfolgen- und Kommentar-Token werden automatisch fortgesetzt, wenn die Zeile vor Erreichen des abschließenden Begrenzungszeichens beendet ist. Das Zeichen für Neue Zeit (das mit der Eingabetaste generiert wird) wird nicht als Bestandteil des Tokens betrachtet.

Null-Klauseln

Zeilen, die lediglich aus Leerzeichen oder Kommentaren bestehen, werden als Null-Klauseln bezeichnet. Sie können an jeder beliebigen Stelle in einem Programm vorkommen. Für die Ausführung des Programms sind sie ohne Bedeutung. Sie verbessern jedoch die Übersichtlichkeit des Programms und erhöhen die Zeilenzahl.

Sprungmarkenklauseln

Ein Symbol, auf das ein Doppelpunkt (:) folgt, wird als Sprungmarkenklausel bezeichnet. Eine Sprungmarke dient als Markierungszeichen in einem Programm. Die Ausführung einer Sprungmarke hat jedoch keine Aktion zur Folge. Der Doppelpunkt wird als implizites Beendigungszeichen einer Klausel betrachtet, d.h. jede Sprungmarke bildet eine separate Klausel. Sprungmarkenklauseln können an jeder beliebigen Stelle im Programm vorkommen. Beispiel:

start: /*Ausführung beginnen*/
syntax: /*Fehlerbehandlung*/

Zuweisungsklauseln

Zuweisungsklauseln werden durch ein Variablensymbol gekennzeichnet, auf das der Operator = folgt. (In diesem Kapitel wird die normale Definition des Operators = - Prüfung auf Gleichheit - aufgehoben.) Die Token rechts vom Gleichheitszeichen werden als Ausdruck ausgewertet, und das Ergebnis wird der Variablen zugeordnet. Beispiel:

when = `Jetzt ist es soweit'
answ = 3.14 * fact (5)

Das Gleichheitszeichen (=) weist den Wert `Jetzt ist es soweit' der Variablen `when' und das Ergebnis der Rechenoperation 3.14 * fact(5) der Variablen `answ' zu.

Befehlsklauseln

Befehlsklauseln beginnen mit dem Namen des Befehls und weisen ARexx zur Ausführung einer Aktion an. Befehlsnamen werden in Kapitel 4 beschrieben. Beispiel:

DROP a b c
SAY `bitte'
IF j > 5 THEN LEAVE;

Kommandoklauseln

Kommandoklauseln sind alle ARexx-Ausdrücke, die nicht unter die bisher beschriebenen Klauselkategorien fallen. Der Ausdruck wird ausgewertet, und das Resultat wird als Kommando an einen externen Host (s.u., "Gastgeberprogramm") ausgegeben. Beispiel:

`delete! `Datei' /*Ein AmigaDOS-Befehl*/
`jump' current+10 /*Ein Editorbefehl*/

Der Befehl "delete" wird nicht als ARexx-Kommando erkannt und daher an einem externen Host - in diesem Fall AmigaDOS - gesendet. Der Befehl "jump" im zweiten Beispiel wird normalerweise von einem externen Texteditor verstanden.

Hoch Zurück Weiter Kapitel