11.1.2 Syntaktische Analyse (Parser)



next up previous contents
Next: 11.1.3 Fehlerbehandlung (Error Corrector) Up: 11.1 Syntaxanalyse Previous: 11.1.1 Lexikalische Analyse (Scanner)

11.1.2 Syntaktische Analyse (Parser)

Die syntaktische Analyse faßt mehrere Terminalsymbole zu grammatikalischen Phrasen zusammen [155][8][3]. Die grammatikalischen Phrasen werden durch die (Ableitungs-) Regeln der Grammatik definiert. Anschaulich können die grammatikalischen Phrasen durch einen Ableitungsbaum dargestellt werden. Die Blätter dieses Baumes sind die Terminalsymbole. Wenn man die Blätter dieses Baumes von links nach rechts liest, so erhält man die Eingabe.

Bei der syntaktischen Analyse unterscheidet man zwei Hauptmethoden [3]:

LL(n):
Bei einer LL(n)-Grammatik wird die syntaktische Analyse von links nach rechts durchgeführt, wobei Linksableitungen verwendet werden. Dies ist ein Top-Down Verfahren.
LR(n):
Bei einer LR(n)-Grammatik wird die syntaktische Analyse von links nach rechts durchgeführt, wobei Rechtsableitungen verwendet werden. Dies ist eine Bottom-Up Methode.

Die Vorteile eines LR-Parsers sind [3]: Der Nachteil der LR-Parser - die schwierige Erzeugung der Parser-Tabellen - wird durch verfügbare Parser-Generatoren voll wettgemacht. Eine sehr populäre Variante der LR-Parser - der LALR(1) Parser (Lookahead LR) [3][2] - wird für JANAP verwendet. Diese Variante ist ein Kompromiß zwischen Mächtigkeit und Aufwand.

Zur Erstellung der Parser-Tabellen wurde das an der Unversität von Wisconsin entwickelte Programm ECP (Error Correcting Parser) [105] verwendet. Dieses Programm erstellt nicht nur die Parser-Tabellen, sondern erzeugt auch Tabellen für eine Error-Corrector (siehe nächster Abschnitt).

Die Definition der Sprache JANAP für ECP ist im Anhang B.2 enthalten. Der Parser erwartet als Eingabe die Terminal-Symbole, die der Scanner erkannt hat. Danach wird der Syntax-Baum aufgebaut. Sobald ein Teilbaum fertig ist, kann eine Semantik-Routine aufgerufen werden (siehe 11.2), die die notwendige Verarbeitung zur Erstellung der Netzwerkgleichungen durchführt.

Bei der syntaktischen Analyse mußten folgende Spezialitäten von JANAP eigens berücksichtigt werden:



next up previous contents
Next: 11.1.3 Fehlerbehandlung (Error Corrector) Up: 11.1 Syntaxanalyse Previous: 11.1.1 Lexikalische Analyse (Scanner)



Martin Stiftinger
Fri Jun 9 19:49:39 MET DST 1995