Aufgabe
Programmieren Sie einen graphengesteuerten PL0-Compiler der Code für eine virtuelle Maschine, die in der LV vorgestellt wurde, generiert.
Der Compiler bestehe aus
- Lexer mit Automatentabelle und Zeichenklassenvektor und individuell festgelegten Lösungen/Erweiterungen je nach Matrikelnummer (siehe Tabelle)
- graphengesteuertem Parser
- Routinen für Namenslistenverwaltung, semantische Prüfungen und Codegenerierung
in einzelnen Quellfiles.
In Abhängigkeit der Matrikelnummer ist ein Compiler für eine Verarbeitungsbreite von 16/32/64 Bit zu programmieren. Es stehehen dazu drei virtuelle Maschinen bereit
Persönliche Ausfgaben:
Codegenerierung für die virtuelle Maschine:
MatrNr % 3 |
Virtuelle Maschine |
0 |
r2416 |
1 |
r2431 |
2 |
r2464 |
Lexer:
MatrNr % 6 |
Lexerumnsetzung/Erweiterung |
0 |
Schlüsselworterkennung unterstützt von der Automatentabelle mit einer zusätzlichen Zeichenklasse für die Anfangsbuchstaben von Schlüsselworten |
1 |
Schlüsselworterkennung unterstützt von der Automatentabelle mit einer zusätzlichen Zeichenklasse für alle Buchstaben in Schlüsselworten |
2 |
Schlüsselworterkennung mit einer eigenen Hashfunktion |
3 |
Erkennung von Hexadezimalzahlen |
4 |
Akzeptanz von Kommentaren Kommentare sind in (* und *) eingeschlossen und können beliebige Zeichen enthalten, auch Zeilenwechsel. Sie bilden kein Token, bei erkanntem Kommentar muss der Lexer über ein restart neu gestartet werden, um ein Token zu liefern. |
5 |
Erkennung von Zeichenketten Zeichenketten sind in ““ eingeschlossen und dürfen alle Zeichen enthalten. Soll “ selbst Bestandteio eioner Zeichenkette sein, ist es doppelt anzugeben. |
Erweiterungen im Parser (notwendig für eine Note 1)
MatrNr % 5 |
Spracherweiterung zu PL0 |
0 |
Arrays |
1 |
Logische Ausdrücke And/Or |
2 |
else |
3 |
repeat until |
4 |
Parameter (call by Value) |
Bewertugsmaßstab:
Note |
Anforderungen |
4 |
- Lexer und Parser funktionieren ohne Erweiterungen |
3 |
- Compiler funktioniert teilweise, es können einfache PL0
-Programme comipiert und mit der gegebenen virtuellen Maschine
ausgeführt werden. |
2 |
- Compiler funktioniert vollständig, PL0-Programme werden
compiliert und können mit der virtuellen Maschine fehlerfrei
ausgeführt werden. |
1 |
- Erweiterungen lt. Aufgabenstellung (Matrnr. modulo 5)
funktionieren mit der virtuellen Maschine. |
Ausgabetermin: 01.12.2024
Abgabetermin: letztes Praktikum im Modul CI im Januar 2025