Übungen zu Übersetzerbau

In den Übungen wird der Stoff der Vorlesung vertieft, d.h. sie können auch als gute (notwendige!) Vorbereitung für die Vorlesungsklausur gesehen werden.

Es 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, 9.10.2003

Es gibt im KUSSS ein Diskussionsform für die Übersetzerbau-Übungen.

LVA-Leiter

LVA-NR. Gruppe LVA-Leiter Zeit Raum Ergebnis
338.181 1 Wöß Do 10:15 - 11:45 K 012 D NEU! G1 & G2
338.182 2 Wöß Do 12:00 - 13:30 K 012 D
338.183 3 Rammerstorfer Do 17:15 - 18:45 T 857  

Tutoren

Korrekturrichtlinien

Kürzel Name Foto
PH Patrick Harucksteiner
KBP Kurt Prünner
RB Rene Bamberger

Ü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!
  • Aufgrund von Einsparungsmaßnahmen können nicht mehr alle UEs von den Tutoren korrigiert werden. Es wird folgendes Schema angewandt:
    Die UEs 1, 6, 7 werden komplett korrigiert. Hier können pro Übung maximal 24 Punkte erreicht werden.
    Von den UEs 2-5 werden nach dem Zufallsprinzip Stichproben korrigiert. Diese werden auch mit maximal 24 Punkten bewertet und von jedem Studenten wird mindestens eine der vier UEs korrigiert.
    Bei den nicht korrigierten UEs werden sog. Abgabechecks durchgeführt und Bonuspunkte vergeben (siehe Korrekturrichtlinien).
  • Übungsabgabe erfolgt in unregelmässigen Abständen jeweils bis Donnerstag, 8:15.
  • Notenschlüssel (wenn die ersten 6 Übungen gewertet wurden):
    ab Pkte Note
    21 Sehr gut (1)
    18 Gut (2)
    15 Befriedigend (3)
    12 Genügend (4)
    0 Nicht genügend (5)
    Der Punktedurchschnitt, der die Gesamtnote bestimmt, wird folgendermaßen berechnet:

    Punkteschnitt =  Summe der korrigierten Punkte + Summe der Bonuspunkte
    -----------------------------------------------------
    Anzahl der korrigierten UEs
  • Ab zwei abgegebenen Übungen wird ein Schein ausgestellt (positiv oder negativ).

Übungen

Abgabeanleitung

Testanleitung

Korrekturrichtlinien

Angabe Ausgabe letzter Abgabetermin Stoff
(Bearbeitungszeit)
Hinweise, Downloads, ...
Übung 1 (als .pdf) 9.10. 16.10.2003 Grundbegriffe (1 Wo.) MicroJava-Grammatik (als .pdf)
Übung 2 (als .pdf) 16.10. 30.10.2003 Lexikalische Analyse (2 Wo.) Dateien für UE 2
Achtung! Seit Fr., 17.10.2003, 8:00, ist eine neue Version der UB-UE2-Angabe.zip-Datei unter diesem Link erreichbar. Die erste Version war leider veraltet und deshalb funktionierten einige Testfälle nicht.
Achtung! Seit Di., 28.10.2003, 16:20, ist wieder eine neue Version der UB-UE2-Angabe.zip-Datei unter diesem Link erreichbar. Die zweite Version hatte gleich mehrere Fehler in der Testmethode ScannerTest.testInvalidESCsequence.
Übung 3 (als .pdf) 30.10. 13.11.2003 Syntaxanalyse (2 Wo.) Dateien für UE 3
Übung 4 (als .pdf) 13.11. 27.11.2003 Symbolliste & Fehlerbehandlung (2 Wo.) Dateien für UE 4
Hinweis! In der Methode Scanner.error fehlt ein else, sodass es bei den Testläufen ev. zu einer NullPointerException in Parser.Errors.synError kommen kann.
Die Methode Scanner.error sollte besser so lauten:
  public static void error (String message) {
    if (out != null) out.println(...);
    else Parser.Errors.synError(message);
  }

Hinweis! Damit es bei Programmen, wo gleich das erste Zeichen ungültig ist (INVALID_CHAR), nicht zum Programmabstutz kommt (NullPointerException), ist es notwendig bereits vor dem ersten Aufruf von scan() entsprechende Initialisierungen vorzunehmen.
Achtung! Seit Mo., 24.11.2003, 12:45, ist wieder eine neue Version der UB-UE4-Angabe.zip-Datei unter diesem Link erreichbar. Die erste Version erwartete 2 Fehler zuwenig in der Testmethode ParserTest.testAllProdsWithErrors (Details siehe Diskussionsforum im KUSSS, Thema "ue4, testAllProdsWithErrors").
Übung 5 (als .pdf) 27.11. Montag
15.12.2003
12:00
Codeerzeugung - Teil 1 (2 Wo.) Hinweis! Auf vielseitigen Wunsch der Studenten (wegen Klausuren) wurde die Abgabe der UE 5 bis Montag, 15.12.2003, 12:00 (Mittag) verlängert.
Dateien für UE 5
MicroJava-OpCodes (auf einer Seite zusammengefasst)
Hinweis! zu Java-Compilerfehlermeldung:
ssw\mj\test\TestByteArrayOutputStream.java:89:
warning: as of release 1.4, assert is a keyword, and may not be used as an identifier
    assert width >= 0;

Seit Java 1.4 gibt es ein Schlüsselwort assert, um Zusicherungen zu implementieren, die zur Laufzeit ein- bzw. ausgeschalten werden können.
Um zu äteren Java-Versionen kompatibel zu bleiben, muss man z.Z. noch die Compiler-Option -source 1.4 setzen.
Da aber dieses assert in der Angabe für die UE 5 nur ein einziges Mal vorkommt, gibt es seit Mo., 1.12.2003, 10:00, eine neue Version der UB-UE5-Angabe.zip, die kein assert mehr verwendet (einzige Änderung bei Methode TestByteArrayOutputStream.int2Str)
Übung 6 (als .pdf) 11.12. 8.1.2004 Codeerzeugung - Teil 2 (~4 Wo.) Dateien für UE 6, TestProgram.mj
Übung 7 (als .pdf) 8.1. 22.1.2004 Bottom-Up-Syntaxanalyse (2 Wo.) NEU! Lösungsvorschlag

Zeitplan

Std KW Datum Ausgabe Abgabe Hinweise, Unterlagen, ...
--- 40 2.10.      
1 41 9.10. UE 1    
2 42 16.10. UE 2 UE 1 Folien
3 43 23.10.     Folien (JUnit)
4 44 30.10. UE 3 UE 2 Folien
5 45 6.11.     Folien
6 46 13.11. UE 4 UE 3 Folien
7 47 20.11.     Folien
8 48 27.11. UE 5 UE 4 Da die VO heute ausfällt, es aber trotzdem neue UE-Angaben gibt, wird die 8. UE-Std sowohl diese als auch nächste Woche abgehalten. Es reicht natürlich aus nur an einem der beiden Tage die UE zu besuchen. Diesmal stehen alle angebotenen Termin allen Studenten offen (unabhängig von der eigentlichen Gruppenzuteilung).
  • 8:30-10:00: keine VO
  • 10:15-11:45: keine UE
  • 12:00-13:30: 8. UE-Std in HF 9901
  • 17:15-18:45: 8. UE-Std in T 857
Folien
49 4.12.    
  • 8:30-10:00: VO findet wie üblich statt
  • 10:15-11:45: 8. UE-Std in K 033 C
  • 12:00-13:30: keine UE
  • 17:15-18:45: keine UE
9 50 11.12. UE 6   Folien
--- 51 18.12.   UE 5
Montag, 15.12.2003, 12:00
LVA-frei (Weihnachtsferien)
--- 52 25.12.     LVA-frei (Weihnachtsferien)
--- 1 1.1.     LVA-frei (Weihnachtsferien)
10 2 8.1. UE 7 UE 6  
11 3 15.1.      
12 4 22.1.   UE 7  
--- 5 29.1.     VO-Klausur

Downloads

Weitere Informationen:

... zur Vorlesung