Ü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, 7.10.2004

Für die Übersetzerbau-Übungen wurde ein Diskussionsforum eingerichtet.

LVA-Leiter

LVA-NR. Gruppe LVA-Leiter Zeit Raum Ergebnis
339.281 1 Thomas Kotzmann Do 10:15 - 11:45 HF 9905 Punkteliste
339.282 2 Christian Wimmer Do 12:00 - 13:30 HF 9905 Punkteliste
339.283 3 Albrecht Wöß Do 10:15 - 11:45 HF 9903 Punkteliste

Die 6. Übung kann bei den Postkästen des Instituts abgeholt werden. Bei Rückfragen zu den Punkten bitte direkt mit den Übungsleitern und nicht mit den Tutoren in Verbindung setzen. Die Scheine werden voraussichtlich Ende Februar ausgestellt.

Tutoren

Korrekturrichtlinien

Kürzel Name Foto
AS August Steinbacher
DD Deepak Dhungana
KBP Kurt Prünner
PG Philipp Grasböck

Ü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

Abgabe (Abgabeanleitung)

Testanleitung

Korrekturrichtlinien

Angabe Ausgabe letzter Abgabetermin Stoff
(Bearbeitungszeit)
Hinweise, Downloads, ...
Übung 1 (als .pdf) 07.10.2004 14.10.2004 Grundbegriffe (1 Wo.)  
Übung 2 (als .pdf) 14.10.2004 28.10.2004 Scanner (2 Wo.) NEU seit 21.10.2004! UB-UE2-Angabe.zip. Neue Version mit Basisklasse IdentifiedTestCase & zwei neuen Testfällen in ScannerTest

MicroJava-Grammatik für die Übung (Zusätzliche do-while-Schleife, die im Vorlesungs-Skriptum nicht enthalten ist)

Hinweis: Es ist nicht möglich, ein Hochkomma als Char-Konstante in einem Programm zu verwenden. Es muss dafür keine Sonderbehandlung implementiert werden. Sowohl ''' als auch '\'' führen zu Fehlermeldungen des Scanners.
Übung 3 (als .pdf) 28.10.2004 11.11.2004 Syntaxanalysator (2 Wo.) NEU seit 31.10.2004, 2:00! UB-UE3-Angabe.zip. Neue Gesamtversion mit den unten beschriebenen Updates.

MJ-Programs.zip

NEU seit 31.10.2004, 00:45! Leider ist uns bei der Angabe zur UE 3 eine Fehlermeldung entwischt (INVALID_DECL) und daher nicht in der messages.properties-Datei enthalten. UB-UE3-Angabe-Update1.zip enthält die aktualisierte Version von messages.properties.

NEU seit 31.10.2004, 02:00! Bei dem Testfall ParserTest.testScanErrIn1stSymbol fehlt bei der erwarteten Ausgabe das fehlerhafte Zeichen ( 'ö'). Eine korrigierte Version der Testfallklasse gibt es in UB-UE3-Angabe-Update2.zip

Hinweis: in der Methode Scanner.error muss nun - wie dort nach dem TODO bereits in der Angabe zu UE 2 beschrieben - der Code entkommentiert werden. Gleichzeitig ist auch noch die folgende Änderung im Aufruf von Parser.Errors.error anzubringen. Dann funktioniert auch der in Update2 geänderte Testfall.
private static void error (String msgKey, String postfix) {
  if (out != null) {  // testing scanner alone
    ...
  }  /* else  // testing scanner with a parser
      * Parser.Errors.error("",msgKey, postfix);
      *
      * TODO: remove this comment for UE 3 !!!
      */
  }
}
Übung 4 (als .pdf) 11.11.2004 25.11.2004 Fehlerbehandlung, Symbolliste (2 Wo.) UB-UE4-Angabe.zip. Enthält die vorgegeben Klassen der Symbolliste und neue Testfälle.

Zu prüfende Fehlermeldungen: Es ist derzeit noch nicht möglich, alle semantischen Fehlermeldungen von messages.properties zu überprüfen. Folgende Fehlermeldungen müssen für die Übung 4 auf jeden Fall ausgegeben werden:
Parser.java: CONST_TYPE, NO_MAIN, NO_PARAMS, NO_RETURN, NO_TYPE, RETURN_VOID, VOID_MAIN
Tab.java: Alle angegebenen Meldungen, d.h. DECL_NAME, GLOBALS, LOCALS, NO_FIELD, NOT_FOUND
Übung 5 (als .pdf) 25.11.2004 09.12.2004 Codeerzeugung Teil 1 (2 Wo.) UB-UE5-Angabe.zip. Enthält die vorgegeben Klassen für die Codeerzeugung und neue Testfälle.
MicroJava-OpCodes (auf einer Seite zusammengefasst)

MicroJava-IDE: Entwicklungs-Umgebung für MicroJava
Aufruf: Die Datei mjide.jar in das Basis-Verzeichnis des Compilers kopieren und die IDE mit
java -classpath .;mjide.jar ssw.mj.ide.Main
starten.

NEU seit 29.11.2004, 10:00! Kleine Fehlerkorrektur in der Übungsangabe.
Vereinfachung im Testfall "ParserTest.testWrongMethDecl": Die alte Version erwartete 2 Fehlermeldungen, der zweite Fehler war jedoch schwer zu reproduzieren. Die neue Version ist etwas vereinfacht, sodass nur mehr eine Fehlermeldung ausgegeben wird.
Übung 6 (als .pdf) 02.12.2004 13.01.2005 Codeerzeugung Teil 2 UB-UE6-Angabe.zip. Enthält die vorgegeben Klassen für die Codeerzeugung (neue Klasse Label) und neue Testfälle.
TestProgram.mj
NEU seit 09.12.2004, 11:00! Der Testfall "ParserTest.testWrongMethDecl" ist nun gleich wie bei Übung 5.
Übung 7 (als .pdf) 16.12.2004 13.01.2005 Bottom-Up-Syntaxanalyse (2 Wo.)  

Zeitplan

Std KW Datum Ausgabe Abgabe Hinweise, Unterlagen, ...
1 41 7.10. UE 1    
2 42 14.10. UE 2 UE 1 Folien der Übungsstunde
3 43 21.10.     Folien der Übungsstunde
4 44 28.10. UE 3 UE 2 Folien der Übungsstunde
5 45 4.11.     Folien der Übungsstunde
6 46 11.11. UE 4 UE 3 Folien der Übungsstunde
7 47 18.11.     Folien der Übungsstunde
8 48 25.11. UE 5 UE 4 Folien der Übungsstunde
9 49 2.12. UE 6   Folien der Übungsstunde
10 50 9.12.   UE 5  
11 51 16.12. UE 7    
--- 52 23.12.     LVA-frei (Weihnachtsferien)
--- 53 30.12.     LVA-frei (Weihnachtsferien)
--- 1 6.1.     LVA-frei (Weihnachtsferien)
12 2 13.1.   UE 6 + 7 Besprechung Übung 7, Fragestunde
13 3 20.1.     Fragestunde
--- 4 27.1.      

Downloads

Weitere Informationen:

... zur Vorlesung