1. Problemstellung, erweitertes Syntaxdiagramm und das fertiges
Programm
1.Problemstellung
Da die Funktionalität unserer Programmiersprache durch den
Verzicht
auf
verschachtelte Strukturen (also z. B. eine
"wenn-dann"-Anweisung innerhalb einer "wenn-dann"-Anweisung) doch sehr
stark eingeschränkt ist, suchen wir nun nach Möglichkeiten,
diese zu integrieren.
Für den Scanner stellen verschachtelte Strukturen kein Problem da,
da
er sich nicht um die Anordnung der Ausdrücke kümmert, sondern
lediglich
bekannte Ausdrücke in die Tokenliste schreibt.
Der Interpreter hat durch sein rekursives Vorgehen mit diesen
Strukturen ebenfalls keine Probleme.
Daher leigt das Hauptproblem im Parser.
Da, wie bereits besprochen, zum Erkennen syntaktisch korrekter
Klammerausdrücke durch einen Automaten so viele Zustände wie
geöffnete Klammern
benötigt werden, ist eine syntaktische Prüfung von belibig
verschachtelten Strukturen durch einen erkennenden endlichen
deterministischen Automaten nicht
möglich. Um dies zu lösen kommen zwei verschiedene
Ansätze
zum Parsen in Betracht. Das Parsen durch:
einen Keller-Automaten
rekursiven Abstieg
Hier beschäftigen wir uns zunächst mit dem Parsen durch
einen Keller-Automaten.
2. erweitertes Syntaxdiagramm
Da nun verschachtelte Strukturen möglich sein sollen, müssen
wir
unser Syntaxdiagramm entsprechend anpassen.
Das neue Syntaxdiagramm der Sprache
Die benötigten Zusatzsyntaxdiagramme bleiben unverändert
3. Das fertige Programm
Das fertige Programm kann hier im
Delphi-Code heruntergeladen werden. Es enthält bereits die beiden
neuen Ansätze zum Parsen.