1 Einführung.- 1.1 Anwendungsgebiete.- 1.2 Übersetzungsphasen.- 1.3 Die Systemumgebung des Compilers.- 1.4 Compiler und Interpreter, reale und abstrakte Maschinen.- 1.5 Werkzeuge.- 1.6 Struktur des Buches.- 1.7 Literaturhinweise.- 2 Lexikalische Analyse.- 2.1 Beschreibung von Token durch reguläre Ausdrücke.- 2.2 Beschreibung von Token durch Zustandsdiagramme.- 2.3 Direkte Implementierung eines Scanners.- 2.4 Implementierung eines Scanners mit Lex.- 2.5 Aufgaben.- 2.6 Literaturhinweise.- 3 Syntaxanalyse.- 3.1 Kontextfreie Grammatiken und Syntaxbäume.- 3.2 Top-down-Analyse.- 3.2.1 Das Prinzip der Top-down-Analyse.- 3.2.2 LL(k)-Grammatiken.- 3.2.3 Berechnung von FIRST- und FOLLOW-Mengen, Modifikation von Grammatiken.- 3.2.4 Implementierung eines vorgreifenden Analysators mit Analysetabelle.- 3.2.5 Implementierung eines vorgreifenden Analysators durch rekursiven Abstieg.- 3.3 Bottom-up-Analyse.- 3.3.1 Das Prinzip der Bottom-up-Analyse.- 3.3.2 Operator-Vorranganalyse.- 3.3.3 LR-Analyse.- 3.3.4 Yacc: Ein Parsergenerator.- 3.4 Aufgaben.- 3.5 Literaturhinweise.- 4 Syntaxgesteuerte Übersetzung.- 4.1 Attributierte Grammatik, syntaxgesteuerte Definition.- 4.2 L-attributierte Definition, Übersetzungsschema.- 4.3 Top-down-Übersetzung.- 4.4 Bottom-up-Übersetzung.- 4.5 Aufgaben.- 4.6 Literaturhinweise.- 5 Übersetzung einer Dokument-Beschreibungssprache.- 5.1 Integration von Programmen und Dokumentation.- 5.2 Die Quellsprache: PD-Texte.- 5.2.1 Absatzformate.- 5.2.2 Zeichenformate.- 5.2.3 Sonderzeichen.- 5.3 Die Zielsprache: LaTeX.- 5.4 Entwurf des Übersetzers.- 5.4.1 Systemfunktion und Umgebung.- 5.4.2 Text-Datenstrukturen.- 5.4.3 Datenstrukturen für benutzerdefinierte Formate und Zeichen.- 5.4.4 Lexikalische Symbole und Grammatik.- 5.5 Literaturhinweise.- 6 Übersetzung imperativer Programmiersprachen.- 6.1 Speicherorganisation und Laufzeitsystem.- 6.1.1 Anforderungen.- 6.1.2 Speicheraufteilung.- 6.2 3-Adreß-Code: Eine Zwischensprache.- 6.2.1 Zwischendarstellungen.- 6.2.2 Eine abstrakte Maschine für 3-Adreß-Code.- 6.3 Übersetzung in 3-Adreß-Code.- 6.3.1 Deklarationen.- 6.3.2 Zuweisungen und Ausdrücke.- 6.3.3 Kontrollstrukturen und boolesche Ausdrücke.- 6.3.4 Prozedur- und Funktionsaufrufe.- 6.4 Aufgaben.- 6.5 Literaturhinweise.- 7 Übersetzung funktionaler Programmiersprachen.- 7.1 ML.- 7.2 Polymorphe Typsysteme und Typinferenz.- 7.2.1 Bestimmung von Typen.- 7.2.2 Ein polymorphes Typinferenzsystem.- 7.2.3 Automatische Typinferenz.- 7.3 Implementierung durch Interpretation.- 7.4 Implementierung durch Übersetzung.- 7.4.1 Die SECD-Maschine.- 7.4.2 Übersetzung von ML in SECD-Code.- 7.4.3 Behandlung von Rekursion.- 7.5 Aufgaben.- 7.6 Literaturhinweise.- 8 Codeerzeugung und Optimierung.- 8.1 Ein Überblick über Optimierungsverfahren.- 8.1.1 Basisblöcke und Flußgraphen.- 8.1.2 Algebraische Optimierung.- 8.1.3 Maschinenunabhängige Optimierung.- 8.1.4 Maschinenabhängige Optimierung.- 8.2 Datenflußanalyse.- 8.2.1 Datenflußgleichungen.- 8.2.2 Das Lösen von Datenflußgleichungen.- 8.3 Codeerzeugung.- 8.3.1 Maschinenmodell.- 8.3.2 Codeerzeugung für Basisblöcke.- 8.4 Aufgaben.- 8.5 Literaturhinweise.- Anhang A. Das PD-System.- Anhang B. File PDNestedText.h.- Anhang C. File PDNestedText.h.tex.- Anhang D. Übersetzung von Parameterlisten in Prozedurdeklarationen.- Lösungen zu den Aufgaben im Text.