Home
General
Staff
Contact
Partners
Alumni
Research
Areas
Projects
Papers
Books
Reports
Teaching
Lectures
Exams
B.Projects
M.Theses
PhD Theses
Go Abroad
Misc
Library
Seminars
Gallery
Links
Search
Webmaster
|
Übersetzerbau
| 339.280 |
Mössenböck |
Do 8:30 - 10:00 |
HS 2 |
Beginn: 8.10.2009
|
Die Lehrveranstaltung vermittelt praktische Kenntnisse im
Übersetzerbau. Studierende sollen in die Lage versetzt werden,
Übersetzer für einfache Programmiersprachen, Kommandosprachen
und allgemeine strukturierte Eingabeströme zu implementieren. Es
werden die wichtigsten Phasen eines Übersetzers 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 Übersetzerbau relevant ist.
Übersetzerbau-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.
Fortgeschrittene Übersetzerbau-Techniken wie Codeerzeugung
für Registermaschinen, Codeoptimierung und getrennte
Übersetzung werden in einer anschließenden Wahlvorlesung
angeboten.
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 Items
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
Skript
Das Skript ist auf der Webseite dieser LVA im KUSSS als PDF-Dokument verfügbar.
Literatur
Hauptsächliche Literatur
- H.Mössenböck: Übersetzer. In P.Rechenberg,
G.Pomberger: Informatik-Handbuch, 4. Auflage, Hanser-Verlag 2006
Eine Zusammenfassung des Übersetzerbaus auf 22 Seiten. Deckt sich
gut mit dem Vorlesungsstoff.
- 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.
- N.Wirth: Grundlagen und Techniken des Compilerbaus.
Oldenbourg, 2008
Ein Meister des Übersetzerbaus zeigt, wie er in der Praxis
arbeitet.
Englisch Ausgabe unter
www-old.oberon.ethz.ch/WirthPubl/CBEAll.pdf
- P.Terry: Compiling with C# and Java. Pearson Addison-Wesley 2005
Ein gutes Buch, das viele Teile dieser Vorlesung abdeckt und auch den
Einsatz des Compilergenerators Coco/R behandelt.
- R. Hunter: The Essence of Compilers.Pearson Prentice Hall, 1999
Ein gutes Buch, das den Stoff dieser Vorlesung recht gut abdeckt.
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. Geht von den Grundlagen bis zur Optimierung.
- A.W.Appel: Modern Compiler Implementation in Java. 2nd edition. Cambridge
University Press 2002
Sehr gutes und aktuelles 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.
- H.Bal, D.Grune, C.Jacobs: Modern Compiler Design. John Wiley,
2000
Ebenfalls ein gutes Buch, das den momentanen Stand der Technik gut
abdeckt.
- D.A.Watt, D.F.Brown: Programming Language Processors in Java.
Prentice-Hall 2000
Relativ umfassendes und praktisch orientiertes Buch.
- W.M.Waite, G.Goos: Compiler Construction. Springer-Verlag 1984
Gehaltvoll aber schwer zu lesen, weil stark theoretisch.
Ausführliches Kapitel über attributierte Grammatiken.
- U.Kastens: Übersetzerbau. Oldenburg-Verlag 1990
Gutes Kapitel über attributierte Grammatiken.
- R.Wilhelm, D.Maurer: Übersetzerbau. Springer-Verlag 1992
Behandelt auch die Übersetzung logischer und funktionaler Sprachen.
- J.R.Levine, T.Mason, D.Brown: lex & yacc. O'Reilly &
Associates 1995
Ausführliche Beschreibung der Übersetzerbau-Werkzeuge lex und
yacc.
Online-Quellen
Prüfung
Schriftliche Klausur am Ende des Semesters.
|