Praktikum Compiler/Interpreter


Das Praktikum dient der eigenständigen Umsetzung der in der Vorlesung vermittelten Konzepte und Verfahren. Dabei kann der Student die Programmiersprache zur Implementation frei wählen. Im Downloadbereich befinden sich Codeteile in C, die den Einstieg erleichtern sollen.


Aufgabe 1:
Prgrammieren Sie verschiedene Varianten eines Interpreters zur Berechnung von arithmetischen Ausdrücken (Grundrechenarten). Implementieren Sie diese Interpreter nach dem Verfahren des rekursiven Abstiegs. Programmieren Sie dazu folgende Funktionen:
- lex, ein einfacher Lexer, der Zahlen und Sonderzeichen (Operatoren und Klammern) erkennt.
- expr
- term
- faktor
- main zum Test des Ganzen
Verwenden Sie die in der Vorlesung vorgestellten Grammatiken


Aufgabe 2:
Bauen Sie einen Lexer für die Programmiersprache PL/0. Implementieren Sie den Lexer auf der Basis einer Automatentabelle und eines Zeichenklassenvektors. Variieren Sie den in der Vorlesung vorgestellten Lexer durch Einführung neuer Zeichenklassen für eine verbesserte Schlüsselworterkennung.


Aufgabe 3:
Bauen Sie einen Parser für die Programmiersprache PL/0. Implementieren Sie den Parser auf der Basis von Syntaxgraphen, die jeweils als Array von Strukturen oder adäquat je nach gewählter Implementierungssprache zu repräsentieren sind. Als Ergebnis sollte ein Akzeptor vorliegen, der die synatktische Richtigkeit eines PL/0-quelltextes erkennt.


Aufgabe 4:
Bauen Sie eine Namensliste auf, in der alle Bezeichner entsprechend Ihres Gültigkeitsbereiches und ihre Eigenschaften verwaltet werden.


Aufgabe 5:
Ergänzen Sie die Routinen zur semantischen Analyse und Codegenerierung, so dass ausführbarer Zwischencode genriert wird. Testen Sie den Zwischencode mit dem bereitgestellten Zwischencodeinterpreter, der virtuellen Maschine. Zu Testzwecken kann generierter Zwischencode mit dem Programm outCl0 mnemonisch augegeben werden.


Zusatzaufgabe:
Ergänzen Sie Ihren Compiler durch zusätzliche Sprachkonstrukte.


Zusatzaufgabe:
Erzeugen Sie einen Parsebaum, der alle Informationen über das Quellprogramm enthält.


Zusatzaufgabe:
Bauen Sie den Compiler unter Verwendung von flex/bison. Versuchen Sie dazu die Sematikroutinen/Routinen zur Codegenerierung weitestgehend wieder zu verwenden.


Download
Binaries (Lauffähiger Compiler, Virtuelle Maschine, Zwischencoderückübersetzer, Dump)
Sources (ausgewählte Headerfiles und C-Code-Schnipsel)

A. Beck