Recursive Descent Parsing

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

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

*Mit recursive descent parsing (rekursiver Abstieg) wird eine einfache Technik bezeichnet, bei der die EBNF-Regeln direkt in rekursive Prozeduren umgesetzt werden.
 
*Es wird mit einer Vorausschau von einem Terminal-Symbol gearbeitet, das in der Variablen sy abgelegt ist. Mit der Prozedur GetSy wird das nächste Terminal-Symbol aus der Eingabe beschafft.
 
*Es wird davon ausgegangen, daß es für jedes Non-Terminal nur eine Regel gibt. Jede dieser Regeln wird in eine Prozedur abgebildet.
 
*Im einfachsten Falle liefert diese Prozedur nur ein BOOLEAN-Resultat zurück, je nachdem, ob es geklappt hat oder nicht.
 
*Recursive-Descent-Parsing klappt nicht für jede kontext-freie Grammatik. Zu den Voraussetzungen später mehr.
 

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