Home General Staff Contact Partners Alumni Research Areas Projects Papers Books Reports Awards Teaching Lectures Exams B.Projects M.Theses PhD Theses Go Abroad Misc Talks Library Gallery Links Search Webmaster |
Compilerbau
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. Fortgeschrittene Compilerbau-Techniken wie Codeerzeugung für Registermaschinen, Codeoptimierung und getrennte Übersetzung werden in der anschließenden Wahlvorlesung Advanced Compiler Construction angeboten (findet alle 2 Jahre im Sommersemester statt). Inhalt
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 2.1 Aufgaben der lexikalischen Analyse 2.2 Reguläre Grammatiken und Endliche Automaten 2.3 Scanner-Implementierung 3.1 Kontextfreie Grammatiken und Kellerautomaten 3.2 Rekursiver Abstieg 3.3 LL(1)-Eigenschaft 3.4 Fehlerbehandlung 4.1 Attributierte Grammatiken (prozedurale Sicht) 4.2 Attributierte Grammatiken nach Knuth 5.1 Überblick 5.2 Objekte 5.3 Scopes 5.4 Typen 5.5 Universum 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 7.1 Arbeitsweise eines Bottomup-Parsers 7.2 LR-Grammatiken 7.3 LR-Tabellenerzeugung 7.4 Tabellenverkleinerung 7.5 Semantikanschluss 7.6 LR-Fehlerbehandlung 8.1 Yacc 8.2 Lex 8.3 Coco/R 9.1 Objektorientierung 9.2 Exception Handling 9.3 Überladen von Methoden 9.4 Getrennte Übersetzung PrüfungSchriftliche Klausur (voraussichtlich in Präsenz) am 26.01.2023, 8:30 - 10:00. Skript
Die Folien im PDF-Format sind von der Kusss-Seite oder der Moodle-Seite dieser LVA herunterladbar. LiteraturHauptsächliche Literatur
|