Neuigkeiten
25.10.2021 | Am Mi, 3.11. findet um 14 Uhr im SR-119 ein Nachholtermin für den 1.11. statt. |
22.7.2021 | Die Voranmeldung ist nun eröffnet. |
Voranmeldung
Wenn sie sich noch anmelden möchten, schreiben Sie bitte eine E-Mail an die Betreuer.
Themen
Im Compilerbaupraktikum entwickeln Teams von 4–5 Studenten einen Compiler für eine imperative Teilmenge von Java. Zielsprache ist x86-64-Bit-Assembler. Dabei kommen die Techniken und Werkzeuge aus der Veranstaltung "Sprachtechnologie und Compiler" zum Einsatz.
Zu entwickelnde Artefakte:
- Lexer
- Parser mit rekursivem Abstieg zum AST-Aufbau aus attributtierter Grammatik
- Semantik- und Typprüfung
- Optimierungen auf graphbasierter SSA-Zwischensprache
- Codegenerierung für x86 mit Baummustern
Am Ende soll ein vollständiger, lauffähiger, getesteter Compiler stehen.
Praktikum
Umfang: 6 ECTS
Das Praktikum ist als eigentständiges Modul im Masterstudium prüfbar. Es ist Teil des Vertiefungsfaches "Softwaretechnik und Übersetzerbau".
Wir empfehlen, das Praktikum erst zu belegen, nachdem die Veranstaltung "Sprachtechnologie und Compiler" erfolgreich abgeschlossen wurde.
Um das Praktikum für das Bachelorstudium anzurechnen oder während des Bachelorstudiums für das Masterstudium vorzuziehen, werden jeweils Genehmigungen des Bachelorprüfungsausschusses benötigt. Nähere Informationen dazu finden sich hier unter den Punkten "Mastermodule im Bachelor" und "Vorzugsleistungen aus Master Informatik im Bachelor Informatik". Da das Compilerpraktikum eine Masterveranstaltung ist, werden Plätze zunächst an Masterstudenten vergeben und nur nachrangig an Bachelorstudenten.
Vorbesprechung
Die Vorbesprechung findet am 18. Oktober 2018 um 14:00 Uhr im Infobau (Gebäude 50.34) Raum -119 statt. Dort werden wir die genaue Gruppeneinteilung festlegen.
Zeitplan
Wir treffen uns einmal wöchentlich, um eine Einführung in die Themen zu geben (ca. 45 Minuten). Dabei wird auch auf Fragen und Probleme eingegangen. Danach können die Gruppen unter sich planen und implementieren.
Datum | Ort | Thema | Unterlagen |
---|---|---|---|
18.10.2021 14:00 Uhr | Infobau -119 | Einführung | Folien |
25.10.2021 14:00 Uhr | Infobau -119 | Lexer, Parser | Folien, Folien |
03.11.2021 14:00 Uhr | Infobau -119 | AST-Aufbau | Folien |
08.11.2021 14:00 Uhr | Infobau -119 | Semantische Analyse | Folien |
15.11.2021 14:00 Uhr | Infobau -119 | FIRM-Aufbau |
Folien Update: neue Folie zu Klassentypen |
22.11.2021 14:00 Uhr | Infobau -119 | FIRM-Aufbau | Folien SSA-Aufbau-Algorithmus |
29.11.2021 14:00 Uhr | Infobau -119 | Optimierung: Datenflussanalyse | Folien Auflistung von Compileroptimierungen |
06.12.2021 14:00 Uhr | Infobau -119 | Codeerzeugung | Folien |
13.12.2021 14:00 Uhr | Infobau -119 | Codeerzeugung | Folien |
20.12.2021 14:00 Uhr | Infobau -119 | Fällt aus | |
10.01.2022 14:00 Uhr | Infobau -119 | Codeerzeugung | Folien |
17.01.2022 14:00 Uhr | Infobau -119 | Codeerzeugung | Folien |
24.01.2022 14:00 Uhr | Infobau -119 | Codeerzeugung | Folien |
31.01.2022 14:00 Uhr | Infobau -119 | Organisation | Folien |
10.02.2022 14:00 Uhr | Infobau -102 | Abschlusspräsentationen | Folien |
Übungsblätter
Übungsblätter PDF | ||
---|---|---|
18.10.2021 | Organisation, Einarbeitung | Blatt 1 MiniJava-Sprachbericht (Stand 18.10.21) |
25.10.2021 | Lexer |
Blatt 2 Beispiel-Eingabe sowie Beispiel-Ausgabe |
25.10.2021 | Parser |
Blatt 3 |
3.11.2021 | AST-Aufbau |
Blatt 4 Updates: EmptyStatement in --print-ast Beispiel-Eingabe sowie Beispiel-Ausgabe |
08.11.2021 | Semantische Analyse | Blatt 5 |
15.11.2021 | FIRM-Aufbau | Blatt 6 |
22.11.2021 | FIRM-Aufbau | Blatt 7 (Stand 03.12.21) |
29.11.2021 | Optimierung | Blatt 8 |
06.12.2021 | Codeerzeugung | Blatt 9 |
Veranstalter
Wissenschaftliche Mitarbeiter |
---|
Sebastian Graf |
Ehemalige Mitarbeiter |
---|
M.Sc. Andreas Fried |