|
PROCEDURE Term(VAR at: Attribute) : BOOLEAN; (* Term = Factor { ("*" | "/") Factor } . *) VAR leftop, rightop: Attribute; opsy: Symbol; BEGIN IF ~Factor(leftop) THEN RETURN FALSE END; WHILE (sy = multiplySY) OR (sy = divideSY) DO opsy := sy; GetSy; (* skip operator *) IF ~Factor(rightop) THEN RETURN FALSE END; CASE opsy OF | multiplySY: leftop := leftop * rightop; | divideSY: leftop := leftop DIV rightop; END; END; at := leftop; RETURN TRUE END Term; |
Bei assoziativen Operatoren (also denjenigen mit
einer Schleife) werden die Ergebnisse nach und nach
entsprechend der Assoziativität des Operators
(typischerweise links-assoziativ) zusammengefaßt.
|
Copyright © 1999, 2004 Andreas F. Borchert, in HTML konvertiert am 28.01.2005 |