Zurück Weiter Kapitel

Ausdrücke

Unter Ausdrücken versteht man eine Gruppe ausgewerteter Tokens. Die meisten Anweisungen enthlaten zumindest einen Ausdruck. Ausdrücke setzen sich aus folgenden Komponenten zusammen:

aus folgenden Komponenten zusammen:

In diesem Beispiel ist FACT der Funktionsname und (J) die dazugehörige Argumentenliste, die in diesem Fall nur den einzelnen Ausdruck J umfaßt.

Bevor die Auswertung eines Ausdrucks stattfinden kann, benötigt ARexx einen Wert für jedes Symbol in dem Ausdruck. Bei festen Symbolen ist dieser Wert der Symbolname selbst, variable Symbole müssen dagegen in der aktuellen Symboltabelle nachgesehen werden. Im obigen Beispiel würde der Ausdruck unter der Voraussetzung, daß dem Symbol J der Wert 3 zugewiesen wird, wie folgt aussehen:

3 `Fakultät ist' FACT (3)

Zur Vermeidung von Unklarheiten bezüglich der Werte, die den Symbolen während des Auflösungsprozesses zugewiesen werden, garantiert ARexx die strikte Einhaltung der Auflösungsreihenfolge von links nach rechts. Die Symbolauflösung wird ungeachtet der Priorität des Operators und der Anordnung der Klammern fortgesetzt. Wird ein Funktionsaufruf festgestellt, wird die Auflösung während der Auswertung der Funktion ausgesetzt.

Beachten Sie bitte, daß ein und dasselbe Symbol innerhalb eines Ausdrucks mehr als einen Wert annehmen kann.

Nehmen wir an, das obige Beispiel würde wie folgt umgestellt:

FACT(J) `ist' J `Fakultät'

Würde nun das zweite J ebenfalls in den Wert 3 aufgelöst? Allgemein können Funktionsaufrufe Nebeneffekte haben, z.B. die Veränderung der Variablenwerte. Der Aufruf FACT im umgestellten Beispiel könnte also eine Veränderung des Werts von J zur Folge haben, so daß beim zweiten Vorkommen von J schon der neue Wert wirksam wird.

Nach Auflösung aller Symbolwerte wird der Ausdruck ausgehend von den Prioritätswerten der Operatoren und der Anordnung der Klammerausdrücke ausgewertet. Bei der Auswertung von Operatoren mit gleichem Prioritätswert garantiert ARexx keine bestimmte Reihenfolge. Ferner verwendet ARexx bei der Auswertung boolescher Operationen keine "Abkürzungen". In dem Ausdruck:

(1 = 2) & (FACT(3) = 6)

wird z.B. die Funktion FACT aufgerufen, obwohl der erste Term der UND- (&-) Operation 0 ist. An diesem Beispiel wird deutlich, daß ARexx mit dem Lesen des Programms von links nach rechts fortfährt, obwohl die erste Klammer im Beispiel logisch falsch ist und einen Wert von 0 ergibt.

Hoch Zurück Weiter Kapitel