Übersetzer und sprachverarbeitende Werkzeuge

Informationen zu dieser Vorlesung sind im KIS und im Modulhandbuch zu finden.

Die Vorlesung wird auf Englisch gehalten.

Aktuelles

  • Die Termine für die mündlichen Prüfungen sind festgelegt (siehe Organisatorisches)

Inhalte der Vorlesung

  • Spezifikation der Syntax von formalen Beschreibungssprachen
  • lexikalische Analyse: Scannen, Scannergenerierung, Anwendung von Scannergeneratoren
  • kontextfreie Analyse: Parsen, Parsergenerierung, Anwenden von Parsergeneratoren
  • Arbeiten mit abstrakter Syntax
  • kontextabhängige Analyse: Namensanalyse, Typanalyse, Attributierungstechniken und -werkzeuge
  • Verarbeitung von XML-Dokumenten
  • Übersetzungstechniken für prozedurale und objektorientierte Sprachen
  • Zwischensprachen in der Übersetzung
  • semantische Analyse und Optimierungstechniken
  • Befehlsauswahl
  • Registerzuweisung
  • Kodegenerierung
  • automatische Speicherverwaltung

Personen

Prof. Dr. Arnd Poetzsch-Heffter wird die Vorlesung halten. %JAN_LINK% wird die Übungen halten.

Organisatorisches

  • Die Vorlesung findet mittwochs und freitags von 08.15 Uhr - 09.45 Uhr in Raum 32-439 statt. Die erste Vorlesung findet am Mittwoch den 20. April statt.
  • Die praktischen Übungen finden freitags von 11:45 Uhr - 13:15 Uhr in Raum 34-420 statt.
  • %N% Termine für die mündliche Prüfung sind am 18. August, 22. September und am 13. Oktober. Wenn Sie an einem dieser Tage geprüft werden wollen, melden Sie sich bitte per Email oder persönlich bei Frau Stengel an.

Unterlagen

Vorlesungsfolien

Nr Titel Datum Folien Info
1 Introduction Vorlesung am 20.4. Folien (1 pro Seite), Folien (2 pro Seite), Folien (8 pro Seite) aktualisiert am 20. April
2 Lexical Analysis Vorlesung am 27.4. Folien (1 pro Seite), Folien (2 pro Seite), Folien (8 pro Seite)
3 Context-free syntax analysis (slides 1-46) Vorlesung am 29.4. Folien (1 pro Seite), Folien (2 pro Seite), Folien (8 pro Seite)
4 (slides 47-84) Vorlesung am 4.5. Foliesätze von oben aktualisiert am 3. Mai
5 (slides (85-92)+((101-110) Vorlesung am 6.5. Foliesätze von oben aktualisiert am 4. Mai (Korrekturen auf 58-60, weitere Folien)
6 (slides (93-100)+(111-139) Vorlesung am 11.5. Foliesätze von oben aktualisiert am 8. Mai (neue Folien 93-100 und 121-152)
7a (slides (139-152) Vorlesung am 18.5. Foliesätze von oben
7b Context-dependent analysis (slides (1-32) Vorlesung am 18.5. Folien (1 pro Seite), Folien (2 pro Seite), Folien (8 pro Seite)
8 (slides 33-64) Vorlesung am 25.5. Foliesätze von oben aktualisiert am 23. Mai
9 (slides 65-114) Vorlesung am 1.6. Foliesätze von oben aktualisiert am 1. Juni
10 Translation of imperative language constructs (slides 1-41) Vorlesung am 3.6. Folien (1 pro Seite), Folien (2 pro Seite), Folien (8 pro Seite)
11 (slides 41-78) Vorlesung am 8.6. Foliesätze von oben aktualisiert am 8. Juni
12 (slides 79-11) Vorlesung am 10.6. Foliesätze von oben aktualisiert am 9. Juni
13a (slides 111-130) Vorlesung am 22.6. Foliesätze von oben aktualisiert am 20. Juni
13b Translation of object-oriented language constructs (slides 1-51) Vorlesung am 22.6. Folien (1 pro Seite), Folien (2 pro Seite), Folien (8 pro Seite)
14 Selected Topics in Compiler Construction (slides 1-57) Vorlesung am 24.6. Folien (1 pro Seite), Folien (2 pro Seite), Folien (8 pro Seite)
15 (slides 58-89) Vorlesung am 1.7. Foliesätze von oben Slides 58-95 aktualisiert am 1. Juli
16 (slides 90-129) Vorlesung am 8.7. Foliesätze von oben Slides 95-151 aktualisiert am 7. Juli
17 (slides 130-170) Vorlesung am 13.7. Foliesätze von oben Slides 130-187 aktualisiert am 13. Juli
18a (slides 171-195) Vorlesung am 15.7. Foliesätze von oben
18b Garbage Collection (slides 1-26) Vorlesung am 15.7. Folien (1 pro Seite), Folien (2 pro Seite), Folien (8 pro Seite)
19a (slides 27-41) Vorlesung am 20.7. Foliesätze von oben Slides 27-41 aktualisiert am 20. Juli
19b XML Processing (slides 1-54) Vorlesung am 20.7. Folien (1 pro Seite), Folien (2 pro Seite), Folien (8 pro Seite)
20 (slides 55-88) Vorlesung am 22.7. Foliesätze von oben

Praktische Übungen

Die praktischen Übungen finden im SCI-Terminalraum 32/411 statt.

Nr Titel Datum Material
1 Parser Generatoren und Java CUP 13. Mai 2011 Folien
2 ASTs in Java with Katja 20. Mai 2011 Folien, expr.katja, Evaluator.java, PrettyPrinter.java
3 Zweite Katja Übung 27. Mai 2011 Folien, Beispiel-Code als ZIP
4 MIPS Translation 29. Juni 2011 Folien
5 Translation of OO Concepts 8. Juli 2011 Folien

Übungsaufgaben

Die Übungsblätter bitte in 2er bzw. maximal 3er Gruppen bearbeiten. Die Lösungen bitte bis zu dem angegebenen Abgabetermin per E-Mail an %JAN_LINK% schicken. Eventuelle Fragen oder Unklarheiten bitte frühzeitig im Vorfeld mit %JAN_LINK% klären und nicht bis zur Abgabe warten!

Nr Ausgabe Abgabe Übungsblatt Zusätzliche Dateien Lösungs-Hinweise
1 20. April 27. April Übung 1 Ex1.java Notizen aus der Übung
2 27. April 4. Mai Übung 2 Lösungshinweise zu Aufgabe 1 Notizen aus der Übung
3 4. Mai 11. Mai Übung 3 Beispiel Makefile Notizen aus der Übung, Lösungshinweise zu den Aufgaben 1 und 2, XML-Parser: xml.flex, Grammatik (in JavaCUP), XMLParser.java
4 11. Mai 18. Mai Übung 4 MiniJava.flex, Token.java Notizen aus der Übung
5 18. Mai 25. Mai Übung 5 MiniJava.katja Lösungshinweise zu Aufgabe 1
6 25. Mai 1. Juni Übung 6 KatjaAttribute.java
7 1. Juni 8. Juni Übung 7 Lösungshinweise zu Aufgabe 1
8 9. Juni 22. Juni Übung 8
9 22. Juni 29. Juni Übung 9
10 29. Juni 6. Juli Übung 10 Notizen aus der Übung
11 6. Juni 13. Juli Übung 11
12 14. Juni 20. Juli Übung 12 TAC.katja Notizen aus der Übung

Zusätzliche Dateien

Literatur

  • A. Appel: Modern Compiler Implementation in Java, Cambridge University Press, 2002 (2nd edition), INF 466/120 / L INF 43

  • Wilhelm, R.; Maurer, D.: Übersetzerbau: Theorie, Konstruktion, Generierung, Springer, 1992. INF 466/109 / L INF 243

Weitergehende Literatur zur Veranstaltung finden Sie auf folgender Webseite.

Dokumentation und Hinweise zu den verwendeten Tools

  • JFlex (Scanner-Generator)
  • JavaCUP (Parser-Generator)
  • Katja (AST-Generator)

  • Katja - Java CUP - Tutorial. Unter KatjaUndJavaCUP findet ihr ein Tutorial, dass zeigt wie man Katja in Verbindung mit Java CUP benutzt.
  • Java CUP und static imports. Die offizielle Java CUP Version unterstützt keine static imports! Da das Arbeiten mit Katja dann etwas unschön wird, haben wir eine modifizierte Variante von Java CUP erstellt, die dieses Feature unterstützt. Ihr findet diese Version im Subversion unter https://softech.informatik.uni-kl.de/svn/Studenten/trunk/11_CLP/common/lib. Ihr findet dort ebenfalls JAR-Dateien für JFlex und Katja. Ihr könnt in eurem Build-Process auch auf diese JAR-Dateien direkt verweisen, oder mittels svn copy in euer Verzeichnis kopieren.
  • Erstellen von TAGS für Übungsabgaben. Um eure Abgaben jeweils zu markieren legt bitte in eurem group-Verzeichnis ein Verzeichnis tags an. Ihr benötigt außerdem ein weiteres Unterverzeichnis indem ihr die aktuelle Version eures Kompilers habt, z.b. trunk. Um jetzt eine Abgabe zu taggen, führt ihr den Befehl svn copy trunk tags/blattX durch.