logo of the SSW institute ;)
Computer Science
System Software

Home

General
Staff
Contact
Partners
Alumni

Research
Areas
Projects
Papers
Books
Reports
Awards

Teaching
Lectures
Exams
B.Projects
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

LVA-NR. Gruppe LVA-Leiter Zeit Raum Ergebnisse
338.181 1 Wöß Do 10:15 - 11:45 KHG II als pdf
338.182 2 Wöß Do 12:45 - 14:15 K 001 A als pdf
338.183 3 Rammerstorfer Do 14:30 - 16:15 K 001 A als pdf

Tutoren

Name Kürzel Email
Baumgartner, Hans-Peter HPB hans-peter.baumgartner@students.uni-linz.ac.at
Fahrnberger, Markus MF markus.fahrnberger@students.uni-linz.ac.at
Girlinger, Franz FG franz.girlinger@students.uni-linz.ac.at
Löberbauer, Markus ML markus.loeberbauer@students.uni-linz.ac.at
Pakhomova, Natalia NP nataliepakhomova@hotmail.com
Prünner, Kurt KP pruenner@ssw.uni-linz.ac.at

Übungsmodus

  • Es gibt 7 Übungen
  • Die ersten sechs davon sind obligatorisch!!!
  • Achtung! Abschreiben und abschreiben lassen ist gefährlich.
    Abgeschriebene Übungen werden bei allen Beteiligten NICHT gewertet. Bei den ersten 6 Übungen resultiert das sofort in einem negativen Schein!
  • Die Übungen haben eine Maximalpunktzahl die proportional zum geschätzten Übungsaufwand ist.
  • Die siebte Übung erlaubt ein Streichresultat (gewichtet nach max. Punktzahl)
  • Ü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 folgendermaßen berechnet:

    MAX ( Punktedurchschnitt UE1 bis UE6 ; Punktedurchschnitt UE1 bis UE7)

    Dh man kann sich durch die 7. Übung nur noch verbessern, nicht aber verschlechtern.

  • Ab zwei abgegebenen Übungen wird ein Schein ausgestellt (positiv oder negativ).

Ü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

UE-Std KW Datum Ausgabe Abgabe Hinweise, Unterlagen, ...
1 40 4.10. UE 1    
2 41 11.10. UE 2 UE 1 Folien UE-Std. 2
--- 42 18.10.     keine UE, VO findet statt!
3 43 25.10. UE 3 UE 2  
--- 44 1.11.     LVA-frei (Allerheiligen)
4 45 8.11. UE 4 UE 3  
--- 46 15.11.     LVA-frei (Landespatron)
5 47 22.11. UE 5 UE 4 Folien: Parser-Methoden (vorher/nachher)
Folie: MJ-Programm Abc
6 48 29.11.      
7 49 6.12. UE 6 UE 5 Folie: Codeerzeugungsanweisungen
8 50 13.12.     Folien: Methodenaufruf-Code
--- 51 20.12.     LVA-frei (Weihnachtsferien)
--- 52 27.12.     LVA-frei (Weihnachtsferien)
--- 1 3.1.     LVA-frei (Weihnachtsferien)
9 2 10.1. UE 7 UE 6  
10 3 17.1.      
11 4 24.1.   UE 7  

Downloads

Weitere Informationen: