Humboldt-Universität zu Berlin - Mathematisch-Naturwissenschaftliche Fakultät - Modellgetriebene Software Entwicklung

Compilerbau

Sommersemester 2021

4 SWS

Prof. Dr. Timo Kehrer,

Dr. Klaus Ahrens

Dorian Weber

 

Covid-19 Information:

Sowohl die Vorlesung als auch die Übungen finden statt. Sie werden als synchrone Online-Veranstaltungen via Zoom zu den regulären Zeiten (s. unten) durchgeführt. Details hierzu werden an alle via Agnes registrierten Teilnehmer*innen versendet. Sollten Sie keine Informationen bekommen haben und dennoch am Kurs teilnehmen wollen, können Sie die Informationen auch per E-Mail erfragen. Bitte nutzen Sie dazu ihre HU E-Mail Adresse.

 

Klausur

Termine:

  • Erstversuch: Do, 19.08., 9:00
  • Zweitversuch: Mi, 29.09., 9:00

Ob die Klausur digital oder in Präsenz stattfindet kann erst kurzfristig entschieden werden und hängt von den geltenden Hygiene-Auflagen ab.

 

Vorkurs Programmieren in C:

Für die Übungen der Veranstaltung Compilerbau werden Kenntnisse in der Programmierung in C vorausgesetzt werden. Diesbezüglich sei an dieser Stelle nochmals auf den Vorkurs "Programmieren in C" hingewiesen, welcher vom 6. bis zum 9. April 2021 von 11:00 Uhr bis 16:30 Uhr online via Zoom und Moodle stattfinden wird und dabei folgende Themen behandelt:

  • Infrastruktur
  • Speichermodell
  • Datentypen
  • Kontrollfluss
  • Modularisierung
  • Standardbibliothek
  • Metaprogrammierung

 

 

  Vorlesung Mo./Do.(14-tg.), 13-15  
       
  Übungen    
 

Übungsgruppe (a)

Di.(14-tg.), 13-15  
 

Übungsgruppe (b)

Mi.(14-tg.), 13-15  
 

Übungsgruppe (c)

Do.(14-tg.), 13-15  
 

Übungsgruppe (d)

Do.(14-tg.), 15-17  
 
Inhalte
  • 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 abstrakten Maschinencode)
  • Optimierungstechniken im Überblick

 

Terminplanung Vorlesung (Änderungen möglich)
Mo, 13.00-15.00   Thema   Do, 13.00-15.00   Thema
12.04.21 V Keine Vorlesung   15.04.21 V

Einführung und Organisation

Lexikalische Analyse I

19.04.21 V Lexikalische Analyse II   22.04.21 Ü Keine Vorlesung
26.04.21 V Syntaktische Analyse - Parsing I   29.04.21 V

Syntaktische Analyse – Parsing II

LL(1)-Parsing: Rekursiver Abstieg

03.05.21 V

Syntaktische Analyse – Parsing III

LL(1)-Parsing: Prädiktiv

  06.05.21 Ü Keine Vorlesung
10.05.21 V Syntaktische Analyse – Parsing IV
LR-Parsing: Grundprinzipien
  13.05.21 V Keine Vorlesung
17.05.21 V Syntaktische Analyse – Parsing V
LR-Syntaxanalyseverfahren
  20.05.21 Ü Keine Vorlesung
24.05.21 V Keine Vorlesung   27.05.21 V

Syntaktische Analyse – Parsing VI
Parsertabellen: SLR

31.05.21 V Syntaktische Analyse – Parsing VII
Kanonisches LR und LALR
  03.06.21 Ü Keine Vorlesung

07.06.21

V

Semantische Bearbeitung I

  10.06.21 V Repetitorium
14.06.21 V Repetitorium   17.06.21 Ü Keine Vorlesung
21.06.21 V Semantische Bearbeitung II   24.06.21 V Keine Vorlesung
28.06.21 V Codegenerierung   01.07.21 Ü Keine Vorlesung
05.07.21 V Optimierungsansätze   08.07.21 V Zusammenfassung und Q&A / Klausurvorbereitung
12.07.21 V Zusammenfassung und Q&A / Klausurvorbereitung   15.07.21 Ü Keine Vorlesung
 
Terminplanung Übungen (Änderungen möglich)
  • Woche vom 19.4. bis 23.4.

Einführung und Organisation

Ausgabe: Stack und Syntree

  • Woche vom 3.5. bis 7.5.

Besprechung: Stack und Syntree

Ausgabe: C1 und HTML-Scanner

  • Woche vom 17.5. bis 21.5.

Besprechung: C1 und HTML-Scanner

Ausgabe: Handparser

  • Woche vom 31.5. bis 4.6.

Besprechung: Handparser

Ausgabe: Bison-Parser

  • Woche vom 14.6. bis 18.4.

Besprechung: Bison-Parser

Ausgabe: Semantische Analyse

  • Woche vom 28.6. bis 2.7.

Besprechung: Semantische Analyse

Ausgabe: Interpreter

  • Woche vom 12.7. bis 16.7.

Besprechung: Interpreter

 

Literatur
  • Aho, Sethi, Ullman: Compilers: Principles, Techniques und Tools, Addison-Wesley Publishing Company, 2. Auflage, 2007 (bekannt als „Drachenbuch“)
  • Kernighan, Ritchie: The C Programming Language, Prentice Hall, 2. Auflage, 1988, 1990
  • Wilhelm, Maurer: Übersetzerbau: Theorie, Konstruktion, Generierung, Springer Verlag, 2. Auflage
  • Fischer/LeBlanc: Crafting a Compiler with C, The Benjamin Cummings Publishing Company, 1991