Home
General
Staff
Contact
Partners
Alumni
Research
Areas
Projects
Papers
Books
Reports
Awards
Teaching
Lectures
Exams
B.Theses
M.Theses
PhD Theses
Go Abroad
Misc
Talks
Library
Gallery
Links
Search
Webmaster
|
Ü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
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
Ü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
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
Downloads
Weitere Informationen:
|