Recursive Descent Parsing IV

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

Expr.om
PROCEDURE Parse(s: Streams.Stream) : BOOLEAN;
   (* parse input and return TRUE in case of success *)

   VAR
      sy: CHAR; (* current input token, 0X in case of eof *)
      eof: BOOLEAN; (* eof seen yet? *)

   PROCEDURE GetSy;
      VAR
         ch: CHAR;
   BEGIN
      IF eof OR ~Streams.ReadByte(s, ch) THEN
         sy := 0X; eof := TRUE;
      ELSE
         sy := ch;
      END;
   END GetSy;

   (* ... Constant, Factor, Term, and Expression ... *)

BEGIN (* Parse *)
   eof := FALSE; GetSy;
   RETURN Expression() & (sy = 0X)
END Parse;

*Streams.Stream ist der Typ der Ulmer Oberon-Bibliothek, der beliebige Ein- und Ausgabeverbindungen repräsentieren kann.
 
*Mit Streams.ReadByte kann ein Zeichen von einer solchen Verbindung eingelesen werden. Je nach Erfolg wird TRUE oder FALSE zurückgeliefert.
 

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