Zur Themenübersicht    

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:
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.