Übungen zu Übersetzerbau

In den Übungen wird ein vollständiger Übersetzer für eine Java-ähnliche Programmiersprache (MicroJava) implementiert. Die Übungen 2 bis 6 bauen aufeinander auf, sodass am Ende des Semesters ein vollständiger Übersetzer vorliegt.

Beginn: Do, 3.10.2002

LVA-Leiter

LVA-NR. Gruppe LVA-Leiter Zeit Raum Punkteliste
338.181 1 Wöß Do 10:15-11:45 K012D Ergebnis vom 3.2.2003
338.182 2 Wöß Do 12:00-13:30 K012D Ergebnis vom 3.2.2003
338.183 3 Rammerstorfer Do 13:45-15:15 K012D Ergebnis vom 3.2.2003

Tutoren

Korrekturrichtlinien

Kürzel Name Foto
CH Clemens Holzmann
CK Christoph Kramesch
HPB Hans-Peter Baumgartner
KBP Kurt Prünner
ML Markus Löberbauer
NP Natalie Pakhomova

Übungsmodus

  • Es gibt sieben (7) Übungen.
  • Die ersten sechs (6) davon sind obligatorisch!!!
  • Nur die siebte Übung ist optional.
  • Achtung! Abschreiben und abschreiben lassen ist daher besonders gefährlich.
    Abgeschriebene Übungen werden bei allen Beteiligten NICHT gewertet. Bei den ersten 6 Übungen resultiert das sofort in einem negativen Schein!
  • Pro Übung können maximal 24 Punkte erreicht werden.
  • Übungsabgabe erfolgt in unregelmässigen Abständen jeweils bis Donnerstag, 8:15.
  • Notenschlüssel (wenn die ersten 6 Übungen gewertet wurden):
      ab PkteNote
      21Sehr gut (1)
      18Gut (2)
      15Befriedigend (3)
      12Genügend (4)
      0Nicht genügend (5)
    Der Punktedurchschnitt, der die Gesamtnote bestimmt, wird aus den besten sechs (6) Ergebnissen berechnet.
  • Ab zwei abgegebenen Übungen wird ein Schein ausgestellt (positiv oder negativ).

Übungen

Abgabeanleitung

Passwortänderung

Testanleitung

Angabe Ausgabe letzter Abgabetermin Stoff
(Bearbeitungszeit)
Hinweise, Downloads, ...
Übung 1 3.10. 10.10. Grundbegriffe (1 Wo.)
  • ad Aufgabe 1 a):
    • Es soll ein Satz der Sprache MicroJava gebildet werden, d.h. das Ergebnis soll nur Terminalsymbole und keine Nonterminalsymbole enthalten. Daher muss auch das NTS Expr durch (möglichst wenige) Terminalsymbole ersetzt werden.
    • Das Ergebnis muss nur syntaktisch (nicht semantisch) korrekt sein. (Wer es auch semantisch korrekt macht, wird auch nicht bestraft. :-> )
Übung 2 10.10. 24.10. Lexikalische Analyse (2 Wo.)
Übung 3 24.10. 7.11. Syntaxanalyse (2 Wo.)
  • vorgegebene Dateien:
    Klasse Token, Gerüst für Klasse Scanner, Gerüst für Klasse Parser, Testklassen, Compilerklase, MicroJava-TestProgramme
  • Hinweis zu Implementierung der "Panic Mode"-Fehlerbehandlung (siehe Folie)
Übung 4 7.11. 21.11. Symbolliste & Fehlerbehandlung (2 Wo.)
  • vorgegebene Dateien:
    Klasse Token, Gerüst für Klasse Scanner (verwendet Parser.Errors), Gerüst für Klasse Parser (mit Parser.Errors), Testklassen, Compilerklasse (verwendet Parser.Errors)
  • Hinweise zur UE 4
Übung 5 21.11. 5.12. Codeerzeugung - Teil 1 (2 Wo.)
Übung 6 5.12. 9.1.2003 Codeerzeugung - Teil 2 (2 Wo.)
  • vorgegebene Dateien:
    NEW: Klasse Label, Gerüst für Klasse Code (mit Methoden für Sprünge), Testklassen (vollständige Codegenerierung), MicroJava-VM (Klasse Run), MicroJava-Testprogramme: TestScriptExample.mj, TestAllProds.mj, TestProgram.mj
  • trap-Anweisung:
    Bei der Beschreibung der Kontextbedingungen zur MicroJava-Grammatik (VO-Skript S.11 ff, 5.4) findet man bei der Regel MethodDecl die folgende Bedingung:
    Wenn die Methode eine Funktion ist, muss sie über eine return-Anweisung verlassen werden (wird zur Laufzeit geprüft).
    Für diese Laufzeitprüfung gibt es die trap-Anweisung, die so in den Code eingefügt werden soll, dass sie nur erreicht wird, falls eine Funktion nicht vorzeitig über eine return-Anweisung verlassen wird.
  • hinzugefügt, am 8.1.2003
    Fehler in MicroJava-VM (Run.java):
    Bei der Anweisung newarray wird beim Parameterwert 1 ein Byte-Array und bei allen anderen Werten ein Word-Array. Laut VO-Skript (S. 16 bzw. Folie 6.10) sollte es aber genau umgekehrt sein. Der Fehler ist in dieser Version behoben.
Übung 7 12.12. 9.1.2003 Bottom-Up-Syntaxanalyse (1 Wo.) Lösungsvorschlag

Zeitplan

Std KW Datum Ausgabe Abgabe Hinweise, Unterlagen, ...
1 40 3.10. UE 1    
2 41 10.10. UE 2 UE 1  
3 42 17.10.     Folien zu JUnit
4 43 24.10. UE 3 UE 2 Folie zur "Panic Mode"-Implementierung
5 44 31.10.     Folien zur Fehlerbehandlung und LL(1)-Bedingung
6 45 7.11. UE 4 UE 3 Folien zur Symbolliste
7 46 14.11.      
8 47 21.11. UE 5 UE 4 Folien zur Codeerzeugung für Ausdrücke und Zuweisungen
Beispiele zur Codeerzeugung für Ausdrücke und Zuweisungen
9 48 28.11.     Folien zur Codeerzeugung für Sprünge
Folien zur Codeerzeugung für Methoden(-aufrufe)
Beispiele zur Codeerzeugung für Sprünge
10 49 5.12. UE 6 UE 5  
11 50 12.12. UE 7   Beispiele zur Fehlerbehandlung bei LALR-Analyse
--- 51 19.12.     LVA-frei (Weihnachtsferien)
--- 52 26.12.     LVA-frei (Weihnachtsferien)
--- 1 2.1.     LVA-frei (Weihnachtsferien)
12 2 9.1.   UE 6 + 7 Fragestunde: Beispiele zur Fehlerbehandlung bei LALR-Analyse
--- 3 16.1.     VO-Klausur

Downloads

Weitere Informationen:

... zur Vorlesung