Humboldt-Universität zu Berlin - Mathematisch-Naturwissenschaftliche Fakultät - Software Engineering

Compilerbau

 


Covid-19 Information:

Die Veranstaltung findet statt und ist zunächst als Präsenzveranstaltung geplant. Details hierzu werden an alle über Agnes registrierten Teilnehmer*innen versendet.

 

Wann und Wo

Vorlesung: Montag, 13-15 Uhr, RUD 25, 3.001
Vorlesung: Donnerstag, 13-15 Uhr (14tgl./1), RUD 25, 3.001
Übung: Donnerstag, 13-15 Uhr (14tgl./2), 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
  • Lexikalische Analyse
  • Konzepte und Techniken des Parsings
  • Semantische Analyse (inkl. Typerkennung, -verträglichkeit, Gültigkeitsbereiche, Abhängigkeitsanalyse)
  • Konzepte der Speicherorganisation
  • Grundlagen Codegenierung (insbesondere abstrakter Maschinencode)
  • Optimierungstechniken im Überblick

 

Terminplanung bis Semesterende (Änderungen möglich)

Mo, 13.00-15.00  

Thema

  Do, 13.00-15.00  

Thema

18.04.22 V Ostermontag   21.04.22 V entfällt, keine Vorlesung
25.04.22 V Einführung Compilerbau   28.04.22 V Einführung C/Rust
02.05.22 V Einführung C/Rust   05.05.22 V Einführung C/Rust
09.05.22 V Lexikalische Analyse: der Scanner   12.05.22 Ü Stack und Syntree
16.05.22 V Syntaktische Analyse - Parsing I   19.05.22 V

Syntaktische Analyse – Parsing II

Methoden der Syntaxanalyse

23.05.22 Ü

 Lexing

  26.05.22 V Keine Vorlesung: Himmelfahrt
30.05.22 V

Syntaktische Analyse – Parsing III

Methoden der Syntaxanalyse LL(1)-Parsing
  02.06.22 V

Syntaktische Analyse – Parsing IV

LR-Parsing

– Parsing V

Shift-Reduce & Präzedenz-Parsing

06.06.22 V Pfingsten   09.06.22 V

keine Vorlesung

13.06.22 V

Syntaktische Analyse – Parsing VI

LR/LR(k)-Parsing

  16.06.22 Ü

Parsing (Handparser)

20.06.22 V

Syntaktische Analyse – Parsing VII

LR/LR(k)-Parsing
  23.06.22 V Anwendungen des Compilerbau's
27.06.22 V

Anwendungen des Compilerbau's

(Vorlesung wird online via Zoom erfolgen)

  30.06.22 Ü Bison-Parser
04.07.22 V Semantische Bearbeitung   07.07.22 V

Laufzeitumgebung(en)
und Codegenerierung & Optimierung +

Zusammenfassung

11.07.22 V Repetitorium   14.07.22 V keine Vorlesung (Tag der Informatik)
18.07.22 Ü Zwischenbesprechung Semantische Analyse   21.07.22 Ü Nachbesprechung Semantische Analyse + Klausurvorbereitung
 

 

Voraussetzungen und Prüfung

Die Lehrveranstaltung wird mit einer 150-Minuten-Klausur geprüft.

Für die Zulassung zur Prüfung ist ferner die Teilnahme am Übungsbetrieb verpflichtend.

Klausurtermin (150 min):

02.08.2022 12.00-15.00  ESZ 0.115

05.10.2022 09.00-12.00 JvN 3.001 (Einlass 08.30)

 

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