Compiler and Language-Processing Tools

Information about this lecture can be found in KIS and in the Module Handbook.

The lecture will be held in German.

Topics of the Lecture

  • Syntax specification of programming and formal languages
  • Lexical analysis: scaning, scanner generation, application of scanner generators
  • Context free analyses: parsing, parser generation, application of parser generators
  • Design and use of abstract syntax
  • Context sensitive analysis: name analysis, type analysis, attribution techniques and tools
  • Processing of XML documents
  • Compilation techniques for procedural and object-oriented languages
  • Intermediate languages for compilation
  • Semantical aspects and optimization techniques
  • Instruction selection
  • Register assignment
  • Code generation
  • Automatic memory management and garbage collection

People

Dr. Ina Schaefer will give the lecture and Dipl.-Inf. Jean-Marie Gaillourdet will give the practice sessions.

Organisation

  • The lecture will take place on Mondays and Wednesdays, from 10:00 to 11:30 in room 48-462. The first lecture is on Monday, April 20.
  • The classes will take place on Tuesdays at 17:15 in room 32/439. The first class will be held on 28.4.2009.
  • Frau Schaefer’s office hours for questions concerning the lecture are on Tuesdays from 9 to 10 am in room 32/430.
  • Oral Exam: First two weeks in August

Literature

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

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

For literature concerning the lecture, consult the following web site.

Kurzpräsentationen

Titel Vortragender Termin
SprachhierarchieundAutomaten Jan Bormann 29.4.
LL-Parsergenerator ANTLR (Demo) Raphael Reitzig 6.5.
Syntaxhighlighting Laura Zilles 27.5.
Geschichte und Verwendung vonMIPS DanielSchneider 8.6.
LLVM - eine Zwischensprache Adrian Willenbücher 24.6.
GCC - Systemüberblick Cornelius Moucha 10.6.
(2) Esoterische Programmiersprachen, z.B. Ook, Chef… Raphael Reitzig (15.6.) und Markus Engel (8.6.) 8.6. / 15.6.
Parrot.org (a Virtual Machine e.g. for Perl) Michael Arndt 24.6.
Optimierungen in existierenden Compilern Michael Geilke 1.7.
Garbage Collection in der JVM Artun Subasi 20.7.
Geschichte von XML Laura Zilles 13.7.

Material

Organisational Issues

Slides concerning the Organisation of the Lecture, 20.04.2009 Download

Lecture Slides

1 Introduction Vorlesung am 20.4. / 22.4. Folien 2 Folien pro Seite
2 Lexical Analysis Vorlesung am 22.4. / 27.4. Folien 2 Folien pro Seite (korrigierte Fassung!)
3 Context-Free Analysis (Teil 1) Vorlesung am 27.4. / 29.4./ 4.5 Folien 2 Folien pro Seite (korrigierte Fassung der Folien 1-12)
4 Context-Free Analysis (Teil 2) Vorlesung am 4.5. / 6.5. / 11.5. / 18.5. Folien 2 Folien pro Seite
5 Context-Dependent Analysis (Teil 1 - Name Analysis) Vorlesung am 18.5. / 20.5. / 27.5. Folien 2 Folien pro Seite
6 Context-Dependent Analysis (Teil 2 - Type Analysis) Vorlesung am 27.5. Folien 2 Folien pro Seite KombinierterFoliensatz als !PostScript
7 Translation of Imperative Constructs Vorlesung am 8.6. / 10.6. / 15.6. / 17.6. Folien 2 Folien pro Seite (korrigierter Foliensatz)
8 Translation of Object-Oriented Constructs Vorlesung am 17.6. / 22.6. Folien 2 Folien pro Seite
9 Selected Aspects of Compilers (Teil 1 - Intemediate Languages, Optimization, Data Flow Analysis) Vorlesung am 24.6. / 29.6. / 1.7. Folien 2 Folien pro Seite (korrigierte und erweiterte Fassung der Folien 1-33 )
10 Selected Aspects of Compilers (Teil 2 - Register Allocation, Code Generation) Vorlesung am 6.7. Folien 2 Folien pro Seite
11 Garbage Collection Vorlesung am 20.7. Folien 2 Folien pro Seite (korrigierte Fassung, Graphik Folie 29 )
12 XML Processing Vorlesung am 13.7./15.7. Folien 2 Folien pro Seite

Problem Sheets

1 Ausgabe am 20. April Übungsblatt 1Ex1.java
2 Ausgabe am 27. April Übungsblatt 2
3 Ausgabe am 4. Mai Übungsblatt 3
4 Ausgabe am 11. Mai Übungsblatt 4
5 Ausgabe am 18. Mai Übungsblatt 5 MiniJava.katja
6 Ausgabe am 25. Mai Übungsblatt 6
7 Ausgabe am 8. Juni Übungsblatt 7
8 Ausgabe am 15. Juni Übungsblatt 8 Framework fürs Backend
9 Ausgabe am 22. Juni Übungsblatt 9
10 Ausgabe am 29. Juni Übungsblatt 10
11 Ausgabe am 6. Juli Übungsblatt 11 SSA.katja
12 Ausgabe am 13. Juli Übungsblatt 12 Kunden.xml

Zusätzliche Materialien zur Übung

MiniJava-Beispiele
Folien zu Subtyping und Java Generics
Framework fürs Backend