Attribute V

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

Expr3.om
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.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 29.06.1999