Compilerbau

339.280 Marr Do 8:30 - 10:00 Raum: HS 19 Beginn: 08.10.2026

Die Lehrveranstaltung vermittelt praktische Kenntnisse im Compilerbau. Studierende sollen in die Lage versetzt werden, Compiler für einfache Programmiersprachen, Kommandosprachen und allgemeine strukturierte Eingabeströme zu implementieren. Es werden die wichtigsten Phasen eines Compilers wie lexikalische Analyse, Syntaxanalyse, Semantikverarbeitung und Codeerzeugung behandelt. Darüber hinaus werden Beschreibungstechniken wie attributierte Grammatiken und ihre Verarbeitung durch Compiler-Generatoren erläutert. Die Vorlesung bietet auch eine Einführung in die Theorie der Formalen Sprachen, soweit sie für den Compilerbau relevant ist.

Compilerbau-Kenntnisse sind nicht nur für Compiler-Entwickler wichtig, sondern auch für Anwendungsprogrammierer. In vielen Programmen müssen Parameter, Programmoptionen oder Eingabedateien verarbeitet werden, die syntaktisch strukturiert sind. Für diese Aufgaben sind oft Kenntnisse über Syntaxanalyse oder Symbollistenverwaltung nötig. Die Vorlesung zeigt, wie man solche Aufgaben systematisch löst.

   Hanspeter Mössenböck:

Compilerbau -
Grundlagen und Anwendungen


dpunkt.verlag, 2024
ISBN 978-3-98889-008-5

Inhaltsüberblick

  1. Einführung und Überblick
  2. Lexikalische Analyse (Scanning)
  3. Syntaxanalyse (Parsing)
  4. Semantikanschluss mit attributierten Grammatiken
  5. Symbolliste
  6. Codeerzeugung
  7. Unterstützung von Objektorientierung
  8. Compilergeneratoren
  9. Abstrakte Syntaxbäume als Zwischensprache
  10. Ausführbare Bäume

Prüfung

Schriftliche Klausur. Der Termin wird im KUSSS hinterlegt.

Skript

Die Folien werden im Moodle bereitgestellt.
Zum "Nachhören" stehen auch die Zoom-Aufzeichnungen aus dem WS21/22 zur Verfügung. Die Vorlesungen werden jedoch jedes Jahr leicht überarbeitet und die Prüfung kann auch Stoff abfragen, der nicht in diesen Aufzeichnungen verfügbar ist.

Literatur

Hauptsächliche Literatur

  • H.Mössenböck: Compilerbau - Grundlagen und Anwendungen, dpunkt.verlag, 2024
    Das Buch entstand aus dieser Vorlesung und deckt den gesamten Vorlesungsstoff ab. Es beschreibt auch den Compilergenerator Coco/R samt Anwendungsbeispielen.

  • P.Rechenberg: Formale Sprachen und Automaten. In P.Rechenberg, G.Pomberger: Informatik-Handbuch, 4. Auflage, Hanser-Verlag 2006
    Die in der Vorlesung benötigte Theorie über Grammatiken, Sprachen und ihre Verarbeitung.

Weiterführende Literatur

  • A.V.Aho, M.Lam, R.Sethi, J.D.Ullman: Compiler -- Prinzipien, Techniken und Werkzeuge. Pearson Studium 2008.
    engl.: Compilers -- Principles, Techniques and Tools. Pearson Education 2007

    Ein Klassiker unter den Übersetzerbau-Büchern. Einfach zu lesen, wenn auch bereits etwas veraltet. Geht von den Grundlagen bis zur Optimierung.

  • B.Campbell, S.Iyer, B.Akbal-Delibas: Introduction to Compiler Construction in a Java World. CRC Press, 2013
    Praktisch orientiertes Buch, das über den Vorlesungsstoff hinausgeht. Es orientiert sich teilweise an der Implementierung des HotSpot Client Compilers von Oracle.

  • A.W.Appel: Modern Compiler Implementation in Java. 2nd edition. Cambridge University Press 2013
    Gutes Buch, das den Übersetzerbau in seiner vollen Breite und mit vielen Varianten abdeckt.

  • S.Muchnick: Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997.
    Ein sehr vollständiges und weit über den Stoff dieser Vorlesung hinausgehendes Compilerbuch. Nicht ganz billig, aber für Interessierte durchaus lohnend.

  • U.Kastens: Übersetzerbau. Oldenburg-Verlag 1990
    Gutes Kapitel über attributierte Grammatiken nach Knuth.

  • J.R.Levine, T.Mason, D.Brown: lex & yacc. O'Reilly & Associates 1995
    Ausführliche Beschreibung der Übersetzerbau-Werkzeuge lex und yacc.

Online-Quellen