Lexikalische Analyse IV

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

Expr2.om
PROCEDURE Factor() : BOOLEAN;
   (* Factor = "(" Expression ")" | ("+" | "-") Factor |
               Constant .
   *)
BEGIN
   IF sy = lparenSY THEN
      GetSy;
      IF ~Expression() OR (sy # rparenSY) THEN
         RETURN FALSE
      END;
      GetSy;
      RETURN TRUE
   ELSIF (sy = plusSY) OR (sy = minusSY) THEN
      GetSy;
      RETURN Factor()
   ELSE
      RETURN Constant()
   END;
END Factor;

*Die Nonterminals repräsentierenden Prozeduren operieren nun mit Terminal-Symbolen anstatt direkt mit Eingabe-Zeichen.
 
*Wichtig ist nun, daß bei der Aufsetzung der lexikalischen Analyse noch NextCh vor dem ersten GetSy aufgerufen wird.
 
Expr2.om
BEGIN (* Parse *)
   eof := FALSE; NextCh; GetSy;
   RETURN Expression() & (sy = eofSY)
END Parse;

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