Übungen zu Grundlagen des Übersetzerbaus

Lecturers:Kreutzer, P.; Mayer, F.
Coverage:2 SWS
Comment:Übung wird im WS2018/19 NICHT angeboten!
Dates & location:
Audience:WPF CE-MA-INF (1.-4. Semester)
WPF INF-BA (5.-6. Semester)
WPF INF-MA (from 1. Semester)
WPF IuK-MA-ES (1.-4. Semester)
WPF IuK-MA-ES-INF (1.-4. Semester)
WF CE-BA-TW (5.-7. Semester)
WF IuK-BA (5.-6. Semester)
Topics:

Im Rahmen der Übungen werden die in der Vorlesung vorgestellten Konzepte und Techniken zur Implementierung eines Übersetzers in die Praxis umgesetzt. Ziel der Übungen ist es, bis zum Ende des Semesters einen funktionsfähigen Übersetzer für eine Beispiel-Programmiersprache zu implementieren.

Die hierfür nötigen zusätzlichen Kenntnisse (z.B. Grundlagen des Assemblers für PowerPC) werden in den Tafelübungen vermittelt.

News

10/26/2017 There will be no tutorials in the upcoming week (10/30/2017 - 11/03/2017); there will, however, be a new exercise sheet with a project exercise (constant folding).
08/03/2017 The tuorials will be scheduled in the first lecture. The first tutorial will take place in the second lecture week.
08/03/2017 To participate in the exercises you are required to register via EST (see below, use lecture password).

Audience

Students of the lecture "Grundlagen des Übersetzerbaus"

Submission system EST

Registration via EST

Exercise sheets

Blatt 1 ueb01.pdf (Meilenstein 1)
(30.10.2017: Abgabe von Meilenstein 1 jetzt am 19.11.2017)
Blatt 2 ueb02.pdf
Blatt 3 ueb03.pdf (Meilenstein 2)
Beispiel zum Besucher-Entwurfsmuster, 3.1) Beispiel zu LL- und LR-Parsern, 3.2) Shift-Reduce-Parser
Blatt 4 ueb04.pdf (Meilenstein 3)
Wie man Typ-Fehler nicht vermeidet: wat
Blatt 5 ueb05.pdf
Code vor den Transformationen: TransformationInnerClasses.java, TransformationGenerics.java, IntComparator.java
Code nach den Transformationen: after_transformations.tar.gz
Interessantes Interview mit Anders Hejlsberg über moderne Compiler-Architekturen: Link
Blatt 6 ueb06.pdf
Liste benötigter JVM-Instruktionen, AST zu Aufgabe 6.3, AST zu Aufgabe 6.4
Slides vom Donnerstag
Blatt 7 ueb07.pdf
"Lösungsskizze" zu Aufgabe 7.2, "Lösungsskizze" zu Aufgabe 7.4
Blatt 8 ueb08.pdf, Lösungstemplate
V-Tables in 8.1, Klassendeskriptoren in 8.2, V-Tables und Deskriptoren in 8.3
Blatt 9 ueb09.pdf (Meilenstein 4)
Blatt 10 ueb10.pdf
Material zu Aufgabe 10.1: fib.s, exit.s
Material zu Aufgabe 10.2: fib_fail.s
Mögliche (!) Lösungen zu Aufgabe 10.4: binom_regs.s, binom_stack.s
Bitte denken Sie an die Evaluation der Übung!
Blatt 11 ueb11.pdf (Meilenstein 5, Abgabe bis 08.02.2018!)
"Lösungsskizze" zu Aufgabe 11.2 (Baumtransformationen), "Lösungsskizze" zu Aufgabe 11.3 (Graham & Glanville)
Code-Generierung in LLVM: Link
Blatt 12 ueb12.pdf
Blatt 13 ueb13.pdf

Links

Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 1, Volume 2
System V ABI Link

Downloads

e2-Sprachspezifikation e2_specification.pdf (20.11.2017: exit() soll einen int zurückliefern, 09.12.2017: main() ist parameterlos)
Klassendiagramm der AST-Klassen ast_classes.pdf
Überblick über den e2-Zwischencode e2_ir.pdf
Beispiele zu Dot/Graphviz fib.dot, fib.pdf
mtab.dot, mtab.pdf
Dokumentation zu Dot/Graphviz dotguide.pdf
Exemplarische Implementierung des Dot-Generators DotGenerator.java
Exemplarische Implementierung der time()-Funktion time.s
Exemplarische Implementierung der writeInt()-Funktion in e2 writeInt.e2
Themenübersicht (grob und unvollständig!) uebersicht.txt

Evaluation results

WS 2017 (Kreutzer, Mayer, Kraus), WS 2016 (Kreutzer)
watermark seal