Compilerbau
Grundlagen und Anwendungen
Cite this publication as
accesses
Description / Abstract
Compilerbau praxisnah erklärt
- Systematische Einführung mit zahlreichen Übungsaufgaben
- Entwicklung eines Compilers für
MicroJava
- Mit umfangreichem Zusatzmaterial zum Buch
Das Buch behandelt die praxisrelevanten Grundlagen des Compilerbaus, von der lexikalischen Analyse über die Syntaxanalyse bis zur Semantikverarbeitung und zur Codeerzeugung. Weitere Themen sind die systematische Beschreibung von Übersetzungsprozessen durch attributierte Grammatiken sowie der Einsatz eines Compilergenerators zur automatischen Erzeugung der Kernteile eines Compilers.
Als durchgängiges Beispiel wird ein Compiler für
MicroJava – eine einfache Java-ähnliche Programmiersprache – entwickelt, der ausführbaren Bytecode – ähnlich dem Java-Bytecode – erzeugt.
Das Buch kann als Begleitliteratur zu einer einführenden Compilerbau-Vorlesung oder zum Selbststudium verwendet werden, um die Arbeitsweise von Compilern zu verstehen und Compiler oder compilerähnliche Werkzeuge zu implementieren, wie sie in der Praxis der Softwareentwicklung häufig vorkommen. Die im Buch behandelten Techniken können immer dann angewendet werden, wenn eine strukturierte Eingabe vorliegt, die durch eine Grammatik beschrieben werden kann.
Die einzelnen Kapitel enthalten über 70 Übungsaufgaben, mit denen das Gelernte vertieft werden kann.
Webseite zum Buch:
http://ssw.jku.at/CompilerBuch mit
- Musterlösungen zu den Übungsaufgaben
- Folien einer zweistündigen Vorlesung
- Quellcode des
MicroJava-Compilers - Weitere Materialien
Description
Table of content
- Compilerbau
- Autor
- Impressum
- Geleitwort
- Vorwort
- Inhaltsverzeichnis
- Kapitel 1 - Überblick
- 1.1 Geschichte des Compilerbaus
- 1.2 Dynamische Struktur eines Compilers
- 1.3 Statische Struktur eines Compilers
- 1.4 Grammatiken
- 1.5 Syntaxbäume
- 1.6 MicroJava
- 1.7 Übungsaufgaben
- Kapitel 2 - Lexikalische Analyse
- 2.1 Reguläre Grammatiken und endliche Automaten
- 2.2 Der Scanner als endlicher Automat
- 2.3 Implementierung des Scanners
- 2.4 Übungsaufgaben
- Kapitel 3 - Syntaxanalyse
- 3.1 Kontextfreie Grammatiken und Kellerautomaten
- 3.2 Rekursiver Abstieg
- 3.3 LL(1)-Eigenschaft
- 3.4 Syntaxfehlerbehandlung
- 3.5 Übungsaufgaben
- Kapitel 4 - Attributierte Grammatiken
- 4.1 Bestandteile
- 4.2 Anwendungsbeispiele
- 4.3 Übungsaufgaben
- Kapitel 5 - Symbolliste
- 5.1 Objektknoten
- 5.2 Scopeknoten
- 5.3 Strukturknoten
- 5.4 Typprüfungen
- 5.5 Lösen von LL(1)-Konflikten mittels der Symbolliste
- 5.6 Initialisierung der Symbolliste
- 5.7 Übungsaufgaben
- Kapitel 6 - Codeerzeugung
- 6.1 Die MicroJava-VM
- 6.2 Codespeicher
- 6.3 Operanden der Codeerzeugung
- 6.4 Laden von Werten
- 6.5 Ausdrücke
- 6.6 Zuweisungen
- 6.7 Sprünge und Marken
- 6.8 Ablaufkontrollstrukturen
- 6.9 Methoden
- 6.10 Objektdatei
- 6.11 Übungsaufgaben
- Kapitel 7 - Der Compilergenerator Coco/R
- 7.1 Scannerbeschreibung
- 7.2 Parserbeschreibung
- 7.3 Fehlerbehandlung
- 7.4 LL(1)-Konflikte
- 7.5 Beispiele
- 7.6 Übungsaufgaben
- Kapitel 8 - Bottom-up-Syntaxanalyse
- 8.1 Arbeitsweise eines Bottom-up-Parsers
- 8.2 LR-Grammatiken
- 8.3 LR-Tabellenerzeugung
- 8.4 LR-Tabellenverkleinerung
- 8.5 Semantikanschluss
- 8.6 LR-Fehlerbehandlung
- 8.7 Übungsaufgaben
- Anhang A - Die Sprache MicroJava
- Anhang B - Der MicroJava-Compiler
- Literatur
- Index