Compilerbau
Wann und Wo
Vorlesung: Montag, 13-15 Uhr, RUD 25, 3.001
Vorlesung: Donnerstag, 13-15 Uhr, RUD 25, 3.001
Übung: Dienstag, 15-17 Uhr, RUD 25, 3.001
Wer
Dozent: Prof. Grunske / Alexander Schultheiß
Beschreibung und Aufbau der Lehrveranstaltung
Studierende erlernen die Grundlagen der Analyse und der Übersetzung von Programmiersprachen und wenden diese beim Bau eines einfachen Compilers selbst an.
- Architektur und Aufgaben eines Compilers
- Anwendung der Theorie der Automaten (endliche Automaten, Kellerautomaten) auf Probleme des Übersetzerbaus
- Konzepte und Techniken der lexikalischen Analyse
- Konzepte und Techniken des Parsings (LL Analyse, LR Analysetechniken)
- Semantische Analyse (inkl. Typerkennung, -verträglichkeit, Gültigkeitsbereiche, Abhängigkeitsanalyse)
- Grundlagen der Codegenerierung, Codeoptimierung und Verlinkung im Überblick
- Praktische Konstruktion eines Compilers aus den einzelnen Phasen
- Moderne Techniken wie JIT Compilation und neuere Forschungsthemen
Für Studierende der SPO 2015 besteht die LV nur aus V3/Ü1 und 5 LP.
Studierende nach der SPO 2022 erhalten 8 LP.
Wechselnde in die SPO 2022, die das Modul bereits mit 5 LP absolviert haben, erbringen zusätzliche 3 LP nach dem PA-Beschluss zum "Übergang zwischen Bachelor-Studium SPO 2015 und Bachelor-Studium SPO 2022" vom 24.10.2022 mit einer erfolgreich absolvierten Zusatzaufgabe (Programmierprojekt, in dem die Studierenden einen vollständigen Compiler bestehend aus Scanner und Parser für eine neuartige Anwendungsaufgabe schreiben).
Terminplanung Vorlesung bis Semesterende (Änderungen möglich)
Mo, 13.00-15.00 |
Thema |
Do, 13.00-15.00 |
Thema |
|||
---|---|---|---|---|---|---|
17.04.23 | V | Einführung Compilerbau | 20.04.23 | V | Einführung C/Rust | |
24.04.23 | V | Lexikalische Analyse: der Scanner | 27.04.23 | V | Lexikalische Analyse: der Scanner | |
01.05.23 | V | keine Vorlesung (Tag der Arbeit) |
04.05.23 | V | Syntaktische Analyse - Parsing I Grundlagen | |
08.05.23 | V |
Syntaktische Analyse – Parsing II Methoden der Syntaxanalyse |
11.05.23 | V | Syntaktische Analyse - Parsing Werkzeuge | |
15.05.23 | V | Praktische Aspekte der lexikalischen Analyse | 18.05.23 | |||
22.05.23 | V |
Syntaktische Analyse – Parsing III |
25.05.23 | V |
Syntaktische Analyse – Parsing IV Methoden der Syntaxanalyse LL(1)-LR-Parsing |
|
29.05.23 | keine Vorlesung (Pfingsten) | 01.06.23 | V |
Syntaktische Analyse – Parsing V LR-Parsing |
||
05.06.23 | V |
Anwendungen des Compilerbau's
|
08.06.23 | V |
Syntaktische Analyse– Parsing VI Shift-Reduce & Präzedenz-Parsing
|
|
12.06.23 | V |
Anwendungen des Compilerbau's |
15.06.23 | V |
Syntaktische Analyse – Parsing VII LR/LR(k)-Parsing (1) |
|
19.06.23 | V |
Syntaktische Analyse – Parsing VIII LR/LR(k)-Parsing (2) |
22.06.23 | V |
Syntaktische Analyse – Parsing IX LR/LR(k)-Parsing (3) |
|
26.06.23 | V |
Syntaktische Analyse – Parsing IX LR/LR(k)-Parsing (4) |
29.06.23 | V |
keine Vorlesung |
|
03.07.23 | V | Repetitorium | 06.07.23 | V |
Syntaktische Analyse – Parsing IX LR/LR(k)-Parsing (5)
|
|
10.07.23 | V |
Semantische Bearbeitung + Laufzeitumgebung(en) Zusammenfassung |
13.07.23 | V | keine Vorlesung | |
17.07.23 | V | keine Vorlesung | 20.07.23 | V | keine Vorlesung |
Terminplanung Übung bis Semesterende (Änderungen möglich)
Di, 15.00-17.00 |
Thema |
|
---|---|---|
18.04.23 | Ü | Einführung Rust |
25.04.23 | Ü | Einführung Rust |
02.05.23 | Ü |
Einführung Rust Ausgabe & Vorbesprechung Blatt 1: Rust || C |
09.05.23 | Ü |
Nachbesprechung Blatt 1: Rust || C Ausgabe & Vorbesprechung Blatt 2: Lexikalische Analyse |
16.05.23 | Ü | Exkursion: Präprozessoren, Metaprogrammierung und statische Code-Variabilität |
23.05.23 | Ü |
Nachbesprechung Blatt 2: Lexikalische Analyse
Ausgabe & Vorbesprechung Blatt 3: Rekursiver Abstiegsparser
Parsertechniken |
30.05.23 | Ü | LL(1)-Syntaxanalyse (praktische Übung): - FIRST & FOLLOW - Tabellenaufstellung |
06.06.23 | Ü |
Nachbesprechung Blatt 3: Rekursiver Abstiegsparser Ausgabe & Vorbesprechung Blatt 4: Parsergenerierung |
13.06.23 | Ü |
Projekt: Kick-Off |
20.06.23 | Ü |
Nachbesprechung Blatt 4: Parsergenerierung LR(0)-Syntaxanalyse (praktische Übung) |
27.06.23 | Ü |
LR(k)-Syntaxanalyse (praktische Übung) Semantische Bearbeitung (praktische Übung) |
04.07.23 | Ü | Projekt: Zwischenbesprechung |
11.07.23 | Ü | Projekt: Zwischenbesprechung |
18.07.23 | Ü | Projekt: Finale Besprechung |
Voraussetzungen und Prüfung
Die Lehrveranstaltung wird mit einer 120-Minuten-Klausur geprüft.
Für die Zulassung zur Prüfung ist ferner die Teilnahme am Übungsbetrieb verpflichtend.
Klausurtermin 1:01.08.2023 12:00 Uhr ESZ 115
Klausurtermin 2:09.10.2023 13:00 Uhr ESZ 110
Skript und Übungsaufgaben
Das Skript zu dieser Veranstaltung (Folien), Übungsblätter und weitere Materialien werden sukzessive in Moodle bereitgestellt.
Im Verlauf des Semesters werden größere Übungsaufgaben gestellt, die sich an den Inhalten der Vorlesung orientieren. Übungsaufgaben und evt Lösungsvorschläge werden ebenfalls über Moodle verfügbar sein.
Literatur
- Kernighan, Ritchie: The C Programming Language, Prentice Hall, 2. Auflage, 1988, 1990
- Aho, Sethi, Ullman: Compilers: Principles, Techniques und Tools, Addison-Wesley Publishing Company, 2. Auflage, 2007 (bekannt als „Drachenbuch“)
- Wilhelm, Maurer: Übersetzerbau: Theorie, Konstruktion, Generierung, Springer Verlag, 2. Auflage
- Fischer/LeBlanc: Crafting a Compiler with C, The Benjamin Cummings Publishing Company, 1991