Recursive Descent Parsing II

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

Expr.om
PROCEDURE ^ Expression() : BOOLEAN;

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

PROCEDURE Term() : BOOLEAN;
   (* Term = Factor { ("*" | "/") Factor } . *)
BEGIN
   IF ~Factor() THEN RETURN FALSE END;
   WHILE (sy = "*") OR (sy = "/") DO
      GetSy; (* skip operator *)
      IF ~Factor() THEN RETURN FALSE END;
   END;
   RETURN TRUE
END Term;

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