Home
General
Staff
Contact
Partners
Alumni
Research
Areas
Projects
Papers
Books
Reports
Awards
Teaching
Lectures
Exams
B.Theses
M.Theses
PhD Theses
Go Abroad
Misc
Talks
Library
Gallery
Links
Search
Webmaster
|
Compilerbau
339.280 |
Mössenböck |
Do 8:30 - 10:00 |
HS 19 |
Beginn: 10.10.2024 |
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.
|
|
Inhalt
- Überblick
1.1 Motivation
1.2 Struktur eines Compilers
1.3 Grammatiken
1.4 Syntaxbaum und Mehrdeutigkeit
1.5 Grammatikklassen nach Chomsky
1.6 Die Sprache MicroJava
- Lexikalische Analyse (Scanning)
2.1 Aufgaben der lexikalischen Analyse
2.2 Reguläre Grammatiken und Endliche Automaten
2.3 Scanner-Implementierung
- Syntaxanalyse (Parsing)
3.1 Kontextfreie Grammatiken und Kellerautomaten
3.2 Rekursiver Abstieg
3.3 LL(1)-Eigenschaft
3.4 Fehlerbehandlung
- Semantikanschluss
4.1 Attributierte Grammatiken (prozedurale Sicht)
4.2 Attributierte Grammatiken nach Knuth
- Symbolliste
5.1 Überblick
5.2 Objekte
5.3 Scopes
5.4 Typen
5.5 Universum
- Codeerzeugung
6.1 Überblick
6.2 Die MicroJava VM
6.3 Codespeicher
6.4 Operanden
6.5 Ausdrücke
6.6 Zuweisungen
6.7 Sprünge und Marken
6.8 Ablaufkontrollstrukturen
6.9 Methoden
- Bottomup-Syntaxanalyse
7.1 Arbeitsweise eines Bottomup-Parsers
7.2 LR-Grammatiken
7.3 LR-Tabellenerzeugung
7.4 Tabellenverkleinerung
7.5 Semantikanschluss
7.6 LR-Fehlerbehandlung
- Compiler-Generatoren
8.1 Yacc
8.2 Lex
8.3 Coco/R
- Weitere Themen
9.1 Objektorientierung
9.2 Exception Handling
9.3 Überladen von Methoden
9.4 Getrennte Übersetzung
Prüfung
Schriftliche Klausur am 23.01.2025, 8:30 - 10:00.
Skript
Die Folien im PDF-Format sind von der Kusss-Seite oder der Moodle-Seite dieser LVA herunterladbar.
Zum "Nachhören" stehen auch die Zoom-Aufzeichnungen aus dem WS21/22 zur Verfügung.
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
|