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
- Bei einer Belegvorführung können die Programme erklärt werden und kleine Änderungen können vorgenommen werden.
- Einzelne Milestones wurden in Praktika vorgestellt.

3

- Compiler funktioniert teilweise, es können einfache PL0 -Programme comipiert und mit der gegebenen virtuellen Maschine ausgeführt werden.
- Bei einer Belegvorführung können die Programme erklärt werden und kleine Änderungen können vorgenommen werden.
- Einzelne Milestones wurden in Praktika vorgestellt.

2

- Compiler funktioniert vollständig, PL0-Programme werden compiliert und können mit der virtuellen Maschine fehlerfrei ausgeführt werden.
- Der Lexer wird mit der geforderten Erweiterung/Technik (MatrNr. modulo 6) implementiert.
- Bei einer Belegvorführung können die Programme erklärt werden und kleine Änderungen können vorgenommen werden.
- Einzelne Milestones wurden in Praktika vorgestellt.

1

- Erweiterungen lt. Aufgabenstellung (Matrnr. modulo 5) funktionieren mit der virtuellen Maschine.
- Bei einer Belegvorführung können die Programme erklärt werden und kleine Änderungen können vorgenommen werden.
- Einzelne Milestones wurden in Praktika vorgestellt.



Ausgabetermin: 01.12.2024

Abgabetermin: letztes Praktikum im Modul CI im Januar 2025