Die Vorlesung Übersetzerbau erzählt eine der Erfolgsgeschichten der Informatik:
Von der automatischen Übersetzung maschinenunabhängiger Programme
(`high-level') in maschinenausführbare Programme (`low-level').
Vor 50 Jahren war man der Überzeugung, dass eine Automatisierung des
Übersetzungsprozesses nicht möglich ist. Heute ist dies
(selbstverständliche) Realität.
Zwar werden die wenigsten jemals einen Übersetzer für eine
ausgewachsene Programmiersprache wie C, Java, Haskell oder Prolog
schreiben, dennoch sind viele Teilgebiete des Übersetzerbaus
unmittelbar für die Berufspraxis relevant, zum Beispiel:
-
Syntaxanalyse: Eingabevalidierung, Lesen von Konfigurationsdateien etc;
-
viele Probleme sind der Natur nach Übersetzungsprobleme;
-
Entwurf und Implementierung sogenannter anwendungsspezischer Sprachen
(`domain-specific languages'): wie z.B. Skriptsprachen, Web-Sprachen,
Schaltkreisentwurf, Robotersteuerung, Bildbeschreibungssprachen etc.
Darüber hinaus sind Übersetzer
-
Paradebeispiele für gut durchdachten Softwareentwurf ("Wer einen Compiler
schreiben kann, kann jedes Programm schreiben.");
-
Paradebeispiele für den erfolgreichen Einsatz formaler Methoden ("In der
Informatik gibt es keine Theorie.").
Material:
- Vorlesungsfolien
- Zusatzmaterial
- Übungsaufgaben
-
Teil I: Grundlagen des Übersetzerbaus
-
Einführung: PDF, PDF (weißer Hintergrund),
PS (4 Folien auf einer Seite),
PS (4 Folien auf einer Seite, weißer Hintergrund).
-
Lexikalische Analyse: PDF, PDF (weißer Hintergrund),
PS (4 Folien auf einer Seite),
PS (4 Folien auf einer Seite, weißer Hintergrund).
-
Syntaxanalyse: PDF, PDF (weißer Hintergrund),
PS (4 Folien auf einer Seite),
PS (4 Folien auf einer Seite, weißer Hintergrund).
-
Abstrakte Syntax: PDF, PDF (weißer Hintergrund),
PS (4 Folien auf einer Seite),
PS (4 Folien auf einer Seite, weißer Hintergrund).
-
Semantische Analyse: PDF, PDF (weißer Hintergrund),
PS (4 Folien auf einer Seite),
PS (4 Folien auf einer Seite, weißer Hintergrund).
-
Zwischensprachen: PDF, PDF (weißer Hintergrund),
PS (4 Folien auf einer Seite),
PS (4 Folien auf einer Seite, weißer Hintergrund).
-
Codeerzeugung: PDF, PDF (weißer Hintergrund),
PS (4 Folien auf einer Seite),
PS (4 Folien auf einer Seite, weißer Hintergrund).
-
Codeoptimierung: -
-
Teil II: Fortgeschrittene Themen
-
Interpreter, Übersetzer und partielle Auswerter
-
Domain-specific Languages (DSLs)
-
Polymorphe Typen
-
Garbage Collection
-
Ein einfacher Übersetzer: Replace.pdf
(Quellprogramm: Replace.lhs).
-
Lexikalische Analyse: PDF
(Quellprogramme: Lexing.tar.bz2).
In Java von Stefan Schulz: regexp.tar.bz2.
-
Syntaxanalyse: Parserkombinatoren
in Erlang von Matthias Kretschmer.
Möchte man die Haskell-Programme ausführen, muss zusätzlich die
folgende Bibliothek installiert werden: librh.tar.bz2.
-
Übungsblatt 1: PDF.
-
Übungsblatt 2: PDF.
-
Übungsblatt 3: PDF.
-
Übungsblatt 4: PDF.
-
Übungsblatt 5: PDF.
-
Übungsblatt 6: PDF.
-
Übungsblatt 7: PDF.
-
Übungsblatt 8: PDF.
-
Übungsblatt 9: PDF.
-
Übungsblatt 10: PDF.
-
Übungsblatt 11: PDF.
Ralf Hinze,
ralf@informatik.uni-bonn.de,
12 October 2004.