Proglang

Praktikum Compilerbau Wintersemester 2006/2007

Voraussetzungen

Betreuung

Prof. Dr. Peter ThiemannDipl.-Inf. Stefan Wehr

Termine

Abschlusspräsentation: Die Abschlusspräsentation findet am 19.4.2007 um 14 Uhr im Raum 00-019 Geb. 079 statt. Die Teilnahme ist verpflichtend.

Vorbesprechung: Mittwoch, 25.10.2006, ca. 17:30 Uhr, SR 00-010/14 Geb. 101 (im Anschluss an die Compilerbauvorlesung)

Einführung in OCaml:

Anwesenheitszeit für das restliche Praktikum: Mittwoch, 11-13 Uhr und 14-16 Uhr, Poolraum 00-018 Geb. 079. In dieser Zeit sollen Probleme zusammen mit dem Betreuer gelöst und Lösung vorgestellt werden.

Aufgabenstellung (aktualisiert)

Ziel des Praktikums ist es, einen funktionsfähigen Übersetzer für eine Java-ähnliche Sprache mit Erweiterungen für sogenannte Typklassen zu implementieren. Als Implementierungssprache werden wir OCaml einsetzen. Zielsprache zur Codeerzeugung ist MIPS Assembler. Wir benutzen den SPIM Simulator zum Ausführen der MIPS Programme.

Ein Parser und Lexer für eine Teilmenge der zu übersetzenden Sprache ist bereits vorhanden. Zu Beginn des Praktikums sollen diese erweitert werden, um sich mit dem Parsergenerator ocamlyacc und dem Lexergenerator ocamllex (Link) vertraut zu machen.

Der Parser liefert einen AST, auf den dann der Typchecker und eine erste Transformation angewendet wird. Dabei wird nur ein kleiner Ausschnitt der Sprache unterstützt, so dass die Transformation und der Typchecker auch von den Studenten implementiert werden kann.

Aus dem Ergebnis der ersten Transformation soll dann, über eine weitere Zwischensprache, MIPS Assembler generiert werden. Dazu werden Algorithmen zur Instruktionsauswahl und zur Registerallokation benötigt. Am Ende sollen ausgewählte Optimierungen und/oder ein Garbage Collector implementiert werden.

Zeitplan (aktualisiert)

WochenbeginnAufgabe
23.10.06Einführung in OCaml
30.10.06Einführung in OCaml
6.11.06Einführung in OCaml / Lexing und Parsing
13.11.06Lexing, Parsing
20.11.06Lexing, Parsing
27.11.06Semantische Analyse
4.12.06Semantische Analyse
11.12.06Transformation in Zwischensprache
18.12.06Transformation in Zwischensprache
8.1.07Instruktionsauswahl
15.1.07Instruktionsauswahl
22.1.07Registerallokation
29.1.07Registerallokation
5.2.07Optimierungen, GC
12.2.07Optimierungen, GC

Material und Aufgaben

Material

Vorlesungsseite