Department of Computer Science

PD Dr Henning Bordihn

Compiler und Programmtransformation im WS 2022/23

verantw. Hochschullehrer:   PD Dr. Henning Bordihn
Voraussetzungen: Kenntnis des Stoffes aus Theoretischer Informatik I (Modellierungskonzepte der Informatik) und Programmierung (Praxis der Programmierung)
SWS: 4 (2 V + 2 Ü)
Credits: 6

Termine

Vorlesung:   Donnerstag   10:00-11:30   02.70.0.05   erstmals am 16.04.26
Übung:   Donnerstag   12:15-13:45   02.70.0.05   erstmals am 16.04.26

Inhalte

In modernen Ansätzen der Softwareentwicklung greift man immer häufiger auf spezialisierte Hochsprachen zurück, die auf Apekte der jeweiligen Anwendungsdomäne oder eine möglichst einfache Kommunikation mit Auftraggebern oder potenziellen Kunden zugeschnitten sind. Dies erlaubt eine Beschreibung der Systeme, die von technischen Details abstrahiert und ihre Validierung erleichtert.

Einen größeren Mehrwert erzielt man, wenn die Hochsprachen-Beschreibungen automatisch in ausführbare Sprachen transformiert werden können. Dieser Prozess wird auch von klassischen Compilern ausgeführt, die Beschreibungen z.B. in universellen Programmiersprachen in Maschinencode übersetzen.

In diesem Kurs werden die Methoden und Techniken des klassischen Compilerbaus behandelt. Darauf aufbauened wird dann erläutert, was bei der Definition von domänenspezifischen Hochsprachen zu beachten ist und wie die klassichen Compiler-Techniken auf die Transformation dieser Sprachen in andere Programmiersprachen angewendet werden können.

Die in der Vorlesung vorgestellten Techniken werden sowohl theoretisch beleuchtet als auch anhand konkreter Anwendungsszenarien im Rahmen der Übungen erprobt. Geeignete Softwaretools werden vorgestellt, von denen ausgewählte in zwei kleinen Projekten eingestzt werden.


Leistungserfassung

Als Zulassungsvoraussetzung sind zwei kleinere Projekte erfolgreich zu bearbeiten und abzugeben.

Eine aktive Teilnahme an den Vorlesungen und Übungen wird erwartet.

Für die Note ist neben dem Übungsverhalten vor allem eine ca. 30-minütige mündliche Prüfung nach Abschluss der Lehrveranstaltungen ausschlaggebend.



Vorlesungsfolien

Einführung: Motivation, Basisbegriffe, Organisatorisches

Scanning (Lexikalische Analyse)

Parsing (Syntaktische Analyse)

Top-Down Parsing

ANTLR Introduction

ANTLRWorks Dokumentation

LL(1) Algorithmen

Hinweis: Um die .jar Datei ausführen zu können, benötigen Sie eine Java Runtime Environment (JRE) Version ab release 21.
Sollte die Anwendung bei Ausführung der Datei nicht starten, führen Sie bitte ein update Ihrer JRE durch.

Für Fehlerberichte und Featurevorschläge ist der Entwickler unter folgender E-Mail Adresse erreichbar: Lucas Kochmann

Der Quellcode ist unter dieser Adresse öffentlich einsehbar.

Weed und AST


Übungsaufgaben

Übungsaufgaben Serie 1 (Lösung)

Übungsaufgaben Serie 2 (Lösung)

Übungsaufgaben Serie 3

Übungsaufgaben Serie 3 (Fortsetzung) (Lösung)

szenario1.mosa

szenario2.mosa

1. Projektaufgabe

Übungsaufgaben Serie 4