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 ein vollständiger Übersetzer für eine Java-ähnliche Programmiersprache (MicroJava) implementiert. Die Übungsaufgaben bauen aufeinander auf, so dass am Ende des Semesters ein vollständiger Übersetzer vorliegt.
Beginn: 4.10.2001
LVA-Leiter
Tutoren
Übungsmodus
Übungen
Angabe |
max.Pkt. | Ausgabe | Abgabe |
Hinweise, Downloads, ... |
Übung 1 (als .pdf) |
20 | 4.10. | 11.10. |
|
Übung 2 (als .pdf) |
24 | 11.10. | 25.10. |
Token.java |
Übung 3 (als .pdf) |
32 | 25.10. | 8.11. |
-
Fehlerbehandlung:
Es muss KEINE Fehlerbehandlung implementiert werden. Der Parser darf beim ersten Fehler abbrechen.
-
Testen: Es sollen folgende Dinge getestet werden:
- ein (längeres) MicroJava-Programm, das alle Grammatikregeln anwendet und erfolgreich (also fehlerfrei) geparst wird
- viele (ganz kurze) MicroJava-Programme, die jeweils unterschiedliche Fehlerfälle abdecken
|
Übung 4 (als .pdf) |
8 | 8.11. | 22.11. |
|
Übung 5 (als .pdf) |
20 | 22.11. | 6.12. |
MJ-Programm TestAllProds.mic (last updated: Nov 29, 2001)
Testoutput für TestAllProds.mic (last updated: Nov 29, 2001)
- Hinweis 1: beim Testoutput sind schon tatsächliche Adressen für die Methodenanfänge eingefügt. Diese können aber erst bei der Codegenerierung bestimmt werden, dh sie müssen bei UE 5 noch NICHT eingetragen werden! Bitte entschuldigt ev. Verwirrungen, die daraus entstanden sind.
- Hinweis 2: die Symbol-Objekte (Obj) des MicroJava-Programms (= Konstanten, innere Klassen, globale Variablen, Methoden) sollen an den
locals -Zeiger des Program-Objekts (kind = Obj.Prog) in der Symbolliste angehängt werden. Das Programm-Objekt selbst ist der letzte Knoten im "Universum" (s.VO-Skript S. 17).
|
Übung 6 (als .pdf) |
40 | 6.12. | 10.1. |
MicroJava VM
Code-Generator-Gerüst (last updated: Jan 02, 2002)
Decoder-Klasse (last updated: Jan 02, 2002)
MicroJava Testprogram zum Testen des Compilers
Testoutput für TestAllProds.mic (last updated: Jan 02, 2002)
- Hinweis 1: Arrays
Zum Anlegen eines Array verwendet man immer den Befehl newarray b . Dabei erhält b den Wert 0 , wenn es sich um ein char -Array handelt, in allen anderen Fällen 1 . Die Länge des Arrays muss zur Laufzeit zu oberst auf dem Expression Stack liegen.
- Fehler in Angabe: Datei
Code.java
Die Methoden Code.get und Code.get2 lieferten falsche Werte.
Die Datei Code.java enthält die Änderung seit 2.1.2002
-
Da in dieser Übung die Endversion des Compilers erstellt wird, muss dieser genau den Spezifikationen aus dem VO-Skriptum entsprechen.
Vergleichen Sie also Ihren Compiler mit allen Angaben aus der MicroJava-Sprachbeschreibung (Kapitel 5, S.8-13) und
überprüfen Sie auch, ob die erzeugten Maschinenanweisungen der Spezifikation der MicroJava-VM (Kapitel 6, S.14-18) entsprechen.
- Ergänzung der Spezifikation:
Die Spezifikation der Maschinenbefehle der MJ-VM ist bei der Angabe der Parameter ungenau und außerdem stimmen die Implementierungsbeschränkungen unter 5.5 des VO-Skripts nicht mit der tatsächlichen Implementierung der MJ-VM überein.
Richtig sollte es heissen:
- unter 6.2 Befehlssatz (S.15 VO-Skriptum):
b ein Byte (8 Bit, vorzeichenbehaftet)
s ein Shortint (16 Bit, vorzeichenbehaftet)
w ein Wort (32 Bit, vorzeichenbehaftet)
- 5.5 Implementierungsbeschränkungen: (S.13 VO-Skriptum):
- Es darf nicht mehr als 128 lokale Variablen geben.
- Es darf nicht mehr als 32768 globale Variablen geben.
- Eine Klasse darf nicht mehr als 32768 Felder haben.
- Der Code des gesamten Programms kann höchstens 8 KByte groß sein.
Die Dateien Code.java , Decoder.java und ue6_output.txt wurden am 2.1.2002 entsprechend angepasst.
|
Übung 7 (optional, als .pdf) |
24 | 10.1. | 24.1. |
|
Zeitplan
Downloads
Weitere Informationen:
|