FB 4 - Angewandte Informatik
Compilerbau
SS 2019
Home
Copyright
Version 11.07.2019
Prüfung
Folien

Zusammen mit den Folien gibt es Mitschnitte, die zwischen 50 und 200 MByte groß sind. Das Abspielen unter Windows/Linux/Mac geht am besten mit dem VLC-Player .
In der Video-Version ist ein Video des Dozenten rechts unten klein eingeblendet, der Nur-Ton-Version fehlt dies, was die Dateien kleiner macht.

Titel
1 Folie/
Seite
2 Folien/
Seite
Maven
Grundlagen
Grammatik
Scanner
Parser1
Parser2
Syntaxbaum
Symboltabelle
Einfache Typen
Semantik
Komplexe Typen
Runtime System
Speicherverwaltung
Codegenerierung
EM1
Qualität

Fragebögen
  1. Grundlagen
  2. Scanner
  3. Parser
  4. Syntaxbaum
  5. Semantik
  6. Runtime System
  7. Speicherverwaltung des Heaps
  8. - fällt aus -
  9. Codegenerierung
  10. Qualität von Programmiersprachen
Übungen

Sie können die Programmieraufgaben in Ihrer eigenen Lieblingsumgebung und in Ihrer Lieblingsprogrammiersprache realisieren. Es wird aber Java 12 empfohlen. Die unten angegebenen Umgebungen sind netbeans-11-Projekte basierend auf Java 12.

Zur Anfertigung der Übungen stehen Java-"Module" in Form von Packages zur Verfügung. Wenn die Quellen/Projekte vorhanden sind, dann können Sie mit dem Maven-Build eine Jar-Datei in Ihr lokales Repository im Ordner .m2 hinein übersetzen; steht nur die Jar-Datei zur Verfügung, so wird diese "lokal" per Maven installiert (Dependencies>rechte Maustaste). Für diese Fälle steht ein Interface zur Benutzung zur Verfügung.

Inzwischen ist alles auf Java 12 umgestellt; für die Sourcen ist das kein Problem, nur für den realisierten Scanner als jar-Datei. Daher wird diese Version in Java 11 und Java 12 zur Verfügung gestellt. Theoretisch dürfte kein Unterschied sein. Von Java her sollte auch alles in der Version 8, 11 und 12 laufen - theoretisch.

Bevor Sie beginnen, sollten Sie für alle Quellen die jar-Dateien mit "Clean and Build" frisch generieren.

  1. Package Plong.IO (Java12-Jar)
    Dieses Package realisiert die Lowlevel-I/O-Routinen und wird von der Testumgebung benötigt.
  2. Package Plong.Report (Java12-Jar)
    realisiert die Klasse, deren Objekte der Parser zurück gibt.
  3. Package Plong.SymbolTable (Java12-Jar)
    realisiert Klasse zur Realisierung der Symboltabellen.
  4. Package Plong.AST (Java12-Jar)
    realisiert die Klassen des Abstrakten Syntaxbaumes
  5. Fertiger Scanner (Java12-Jar) (Java11-Jar)

Nun zu den Aufgaben:

  1. Grammatik von Plong mit der Definition von Plong
    1. Scanner mit dem Rahmen samt Tests
      1. LL(1)-Parser mit dem Rahmen samt Tests; als Hilfe wird eine korrekte Implementierung des Scanners mit dem Interface aus Aufgabenblatt 2 als jar-File zur Verfügung gestellt. Zur Orientierung gibt es noch die Liste der Fehlermeldungen, wobei jeweils nur der erste Fehler zählt.
      2. Generierung des AST. Auch dazu gibt es einen Rahmen mit eigenen Tests. Für diese Aufgabe wurden verschiedene Routinen zusätzlich realisiert, so dass empfohlen wird, in diesen Rahmen das bisherige Implement des Parsers zu kopieren.
        In der Testklasse ParserPlongASTAnalyse1 wird der generierte AST in Zeichen ausgegeben (Klasse ASTPrint entsprechend dem Visitor-Pattern). In der Datei ParserPlongASTAnalyse1.txt befindet sich die korrekte Darstellung des AST; dies können Sie zur Orientierung benutzen.
      3. Zusatzaufgabe: Semantiktest
      4. Zusatzaufgabe: Codegenerierung