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

Compilerbau

 


 

Wann und Wo

Vorlesung: Montag, 13-15 Uhr, RUD 25, 3.001
                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 / Dr. Klaus Ahrens

Beschreibung und Aufbau der Lehrveranstaltung

Die Teilnehmer bekommen einen Überblick zu nachfolgenden Themenschwerpunkten:

  • 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
08.04.19 V Dies Academicus   11.04.19 V Einführung Compilerbau / Einführung C
15.04.19 V Einführung C   18.04.19 V Einführung C
22.04.19 V Ostermontag   25.04.19 V Einführung C
29.04.19 V Lexikalische Analyse: der Scanner   02.05.19 V Keine Vorlesung: Tag der Informatik
06.05.19 Ü Stack und Syntree   09.05.19 V

Syntaktische Analyse - Parsing I

13.05.19 V

Syntaktische Analyse – Parsing II

Methoden der Syntaxanalyse

  16.05.19 Ü C1 und HTML-Scanner
20.05.19 V

Syntaktische Analyse – Parsing III

Methoden der Syntaxanalyse LL(1)-Parsing
  23.05.19 V

Syntaktische Analyse – Parsing IV

LR-Parsing

27.05.19 Ü Handparser   30.05.19 V Keine Vorlesung: Himmelfahrt
03.06.19 V

Syntaktische Analyse – Parsing V

Shift-Reduce & Präzedenz-Parsing

  06.06.19 V

Syntaktische Analyse – Parsing VI

LR/LR(k)-Parsing

10.06.19 V Keine Vorlesung: Pfingstmontag   13.06.19 V Anwendungen des Compilerbau's
17.06.19 V

Syntaktische Analyse – Parsing VII

LR/LR(k)-Parsing
  20.06.19 Ü Bison-Parser
24.06.19 V Semantische Bearbeitung   27.06.19 V

Repetitorium

01.07.19 V Laufzeitumgebung(en)
und Codegenerierung & Optimierung
  04.07.19 Ü Semantische Analyse
08.07.19 V Zusammenfassung und Q&A   11.07.19 Ü 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):

Di., 23.07.2019, 12-15 Uhr (Beginn: 12:30 Uhr), RUD 26, Raum 0'115

Wdh.: Di., 01.10.2019, 12-15 Uhr (Beginn: 12:30 Uhr), RUD 26, Raum 0'115

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