Compilerbau
SS 2019
Aktuelles
Die Klausurergebnisse sind verbucht.
Notenspiegel: 21% sehr gut, 29% gut, 26% befriedigend, 5% ausreichend, 19% nicht bestandenBei Fragen zum Ergebnis, bitte bis 26.9. per E-Mail an mich wenden.
Aktuelle Aufgabenblätter
Die nachfolgenden Aufgabenblätter dienen der Vertiefung der theoretischen Grundlagen. Sie beziehen sich auf die Vorlesungsinhalte. Das zur Lösung notwendige Wissen ist vollständig im Skript zur Vorlesung enthalten. Aufgaben ähnlicher Art sind Bestandteil der Klausur.Diese Aufgaben sollen selbstständig in Einzel- oder Teamarbeit bearbeitet werden. Falls Ihnen die Lösung nicht gelingt oder Sie sich unsicher sind, ob ihre Lösung richtig ist, wenden Sie sich während der Übungsstunden an einen Tutor zur Klärung. Für ausgewählte Aufgaben werden Lösungsvorschläge veröffentlicht.
(Praktikumsaufgaben siehe unten)
- Aufgabenblatt 1 (Grundlagen)
- Aufgabenblatt 2 (Grundlagen Lexikalische Analyse)
- Aufgabenblatt 3 (Reguläre Ausdrücke und Endliche Automaten)
- Aufgabenblatt 4 (Kontextfreie Grammatiken)
- Aufgabenblatt 5 (Grammatiken und Parserverfahren)
- Aufgabenblatt 6 (Aufgabenmix: alte Klausur)
Lösungsvorschlag zu Aufgabenblatt 6 - Aufgabenblatt 7 (Aufgabenmix: alte Klausur)
Lösungsvorschlag zu Aufgabenblatt 7
Praktikum und Hausübungen
Im Praktikum wird ein kompletter Compiler für die einfache prozedurale Programmiersprache SPL entwickelt. Als Entwicklungssprache wird Java empfohlen, allerdings ist auch C als Implementierungssprache möglich. Für die lexikalische Analyse wird bei Java der Scannergenerator jflex (für C: flex) eingesetzt, für die Syntaxanalyse der Parsergenerator cup (für C: bison).
Zum Compilerbaupraktikum im gibt es
separate Praktikumsaufgabenblätter (siehe unten)
Eine Referenzimplementierung und einen ECO32-Simulator (siehe Einführende Hinweise),
Unterlagen zu den Scannergeneratoren:
Unterlagen zu den Parsergeneratoren:
SPL-Testprogramme für Ihren Compiler (siehe unten: Praktikumsaufgabe 3 / Referenztests)
Praktikumsaufgaben und Hausübungen
-
Praktikumsaufgabe 1 (SPL-Scanner):
Bearbeitung bis zum 30.4.19 empfohlen -
Praktikumsaufgabe 2 (SPL-Parser):
Bearbeitung bis zum 17.5.19 empfohlen -
Praktikumsaufgabe 3 (Abstrakter Syntaxbaum):
Bearbeitung bis zum 24.5.18 empfohlen -
Hausübung 1
Die 1. Hausübung ist (wie auch die 2. Hausübung) Voraussetzung für die Klausurteilnahme. Die Bearbeitung kann in Einzelarbeit oder in Zweiergruppen erfolgen.
Abgabefrist: 31.5.19, 24:00 Uhr
-
Aufgabenstellung: Die Hausübung 1 besteht aus dem Frontend des SPL-Compilers gemäß den Praktikumsaufgaben 1-3.
-
Bewertung: Von 25 Tests müssen mindestens 12 erfolgreich ausfallen, damit die Hausübung anerkannt wird.
Die Referenztests finden Sie als komprimiertes Tar-Archiv (reftests.tar.gz) hier.
-
Die Abgabe erfolgt durch E-Mail und Hochladen. Die genauen Modalitäten finden Sie hier.
-
Praktikumsaufgabe 4 (Semantische Analyse):
Bearbeitung bis zum 10.6.19 empfohlen -
Praktikumsaufgabe 5 (Variablen-Allokation):
Bearbeitung bis zum 24.6.19 empfohlen -
Praktikumsaufgabe 6 (Codegenerator):
Bearbeitung bis zum 8.7.19 empfohlen -
Hausübung 2
Die 2. Hausübung ist Voraussetzung für die Klausurteilnahme. Die Bearbeitung kann in Einzelarbeit oder in Zweiergruppen erfolgen.
Abgabefrist: 17.7.19, 24:00 Uhr
-
Aufgabenstellung: Die Hausübung 2 besteht aus dem Backend des SPL-Compilers gemäß den Praktikumsaufgaben 4-6.
-
Bewertung: Von 25 Tests müssen mindestens 12 erfolgreich ausfallen, damit die Hausübung anerkannt wird.
Die Referenztests finden Sie als komprimiertes Tar-Archiv (reftests.tar.gz) hier.
-
Die Abgabe erfolgt durch E-Mail und Hochladen. Die genauen Modalitäten finden Sie hier.
Bei fehlerhafter oder unvollständiger Lösung besteht die Möglichkeit zur Nachbesserung bis zum 18.8.19 24:00 Uhr. In den Semesterferien werden Beratungstermine wie folgt angeboten:
22.7.19 9:50-11:30 Uhr A20.1.09 29.7.19 9:50-11:30 Uhr A20.1.09 5.8.19 9:50-11:30 Uhr A20.1.09 12.8.19 9:50-11:30 Uhr A20.1.09
Skripten
Die Unterlagen werden im Adobe PDF-Format bereitgestellt.
Leistungsnachweis
Im SS 2019 wird der Leistungsnachweis für das Fach "Compilerbau" durch erfolgreiche Teilnahme an der Klausur erbracht. Die Klausur findet voraussichtlich am 19. September 2019 um 8:00 Uhr statt.