Umweltinformatik

Compilerbau

6 KP, 3 V +1 Ü, alle zwei Jahre im Wintersemester

Compiler sind zur Programmentwicklung unverzichtbar. Das Verständnis ihrer Funktionsweise ist für Studierende, die sich mit dem Thema „Programmierung“ vertieft befassen wollen, sehr wichtig. Das Modul richtet sich daher insbesondere an Hörer, die einen Schwerpunkt im Bereich der Praktischen Informatik setzen wollen. Es vermittelt Wissen über Aufbau und Funktionsweise eines wesentlichen Teils der Systemsoftware von Rechnersystemen. Techniken des Compilerbaus finden aber nicht nur in der Entwicklung von Systemsoftware, sondern auch in manchen Anwendungssystemen Verwendung.

Ziele des Moduls/Kompetenzen:

Die Studierenden sollen

□    die Struktur eines Compilers und die Aufgaben der einzelnen Phasen der Compilierung einer Programmiersprache kennen lernen,

□    Kenntnisse über gängige Methoden aus allen Phasen eines Compilers erwerben,

□    typische Eigenschaften, sowie Vor- und Nachteile verschiedener Methoden in den Phasen eines Compilers verstehen und bewerten können,

□    Verbindungen von Konzepten aus Automatentheorie und formalen Sprachen zum Compilerbau erkennen,

□    die gelernten Methoden zu den einzelnen Compilierungsphasen praktisch anwenden können,

□    den Einsatz eines Compilergenerators verstehen und bewerten können,

□    Lernen, Lösungen zu kleinen Aufgaben in Teams zu 2-3 Studierenden zu erarbeiten und die Ergebnisse in einer Gruppe zu präsentieren.

□   Durchführung eines kleineren Compiler-/Interpreter-Projektes mit aktuellen Compilerbau-Werkzeugen.

Inhalte des Moduls:

Das Modul behandelt alle Phasen eines „klassischen“ Compilers: Scanner, Parser, semantische Analyse, Zwischencodegenerierung, Codeoptimierung und Maschinencodegenerierung. Zu jeder Phase werden gängige Methoden vorgestellt, wobei zum Parsing auch alternative Ansätze (LL-Parser vs. LR-Parser) vorgestellt werden. Auch im Bereich der Codeoptimierung werden zur Registeroptimierung verschiedene Verfahren mit unterschiedlichen Voraussetzungen vorgestellt. Der Aufbau der Vorlesung folgt im Wesentlichen dem Buch von Aho, Lam, Sethi, Ullman, das als Compilerbauklassiker gelten darf.

In der Übung werden die vorgestellten Methoden an kleinen Beispielen, die die Studierenden selbständig durchführen müssen, praktisch vertieft.

Im Praktikumsteil des Moduls wird mit Hilfe eines Compilergenerators (typischerweise ANTLR) für eine reduzierte Sprache ein Interpreter und das Frontend eines Compilers entwickelt.