Das Modul Parser enthält die grundlegenden Funktionen für einen Recursive-Descent-Parser.
Im Modul Parser sind die globalen Variablen inputstring, originalinput, errormessage und errorposition sowie eine minimale Menge von grundlegenden Funktionen zur Abarbeitung des Eingabewortes definiert.
Die Funktion parse erhält die Funktion startSymbol als Parameter. Diese Funktion implementieren Sie in einem eigenen Modul, das den konkreten Recursive-Descent-Parser enthält.
Die Grammatik mit den Produktionen
S
aSb | ε
erzeugt die Sprache
L = { anbn | n ∈ ℕ0 }.
Einen Parser für diese Sprache L implementieren Sie wie folgt in einem Modul AsbParser. Dort importieren Sie zunächst das Modul Parser. Dann implementieren Sie die Funktion s entsprechend der Produktion für die Variable S der Grammatik.
Im Hauptprogramm testen Sie den Parser dann folgendermaßen. Hierbei übergeben Sie der Funktion parse das Eingabewort und den Namen der Funktion, die dem Startsymbol der Grammatik entspricht.
Im Fehlerfall, etwa bei Eingabe des Wortes aaba, wird die Fehlerposition mit showErrorPosition ausgegeben: