Universität Karlsruhe
Übersetzerbaupraktikum WS 2006/07

Inhalt

Dieses Semester werden wir einen Übersetzer für eine Untermenge der objekt-orientierten Sprache Java entwickeln. Wir nennen diese Untermenge MiniJava. Die MiniJava Programme werden eingelesen und analysiert. Bei der Implementierung der lexikalischen, syntaktischen und semantischen Analyse verwenden wir die Werkzeugbox Eli. Dann transformieren wir das Programm in die neueartige, an unserem Lehrstuhl entwickelte SSA-Zwischensprache Firm. Auf Firm implementieren wir einige einfache Optimierungen. Vor der Codegenerierung werden dann die objektorientierten Programmkonstrukte aufgelöst. Die Codegenerierung wird mit einem Werkzeug des Instituts implementiert. Die Implementierungssprache ist C neben den Spezifikationssprachen der Werkzeuge.

Das Praktikum vermittelt also Erfahrungen in der praktischen Anwendung von Übersetzerbau-Techniken. Darüber hinaus wird die Entwicklung von Software in Team-Arbeit unter Einhaltung vorgegebener Schnittstellen und bei Verwendung abstrakter Datentypen geübt. Die einzelnen Gruppen treffen sich einmal wöchentlich für jeweils 2 Stunden. Da der Übersetzer und die verwendeten Werkzeuge frei verfügbar sind können Teilnehmer nach dem Praktikum weitere Übersetzer-Entwicklungen auf privater Basis durchführen.

Diese Heimat-Seite bildet den zentralen Eingang zum Übersetzerbaupraktikum. Hier sollte man einsteigen, wenn man neue Informationen erfahren will, Dokumentation finden, oder Kontakt mit den Betreuern aufnehmen will. Ideen, Anregungen und Kritik sind sehr willkommen!

Betreuende Mitarbeiter

Organisatorisches

verantwortlichter Betreuer Prof. Dr. Dr. h. c. G. Goos
Teilnehmerzahl max. 20 (findet nur im WS statt)
Raum Seminarraum im Institut Goos, (AVG), 2. Stock, Raum 207
Termin Montag, 15:45 Uhr
Semesterwochenstunden (anrechenbar) 2
Prüfbar ja
Empfohlenes Semester 5

Wiki: Fragen und Antworten, Diskussionen ...

verwalten wir über unser Wiki. Hier findet ihr initial eine Diskussionsseite über Eli und die erste Aufgabe. Weiteres sei Euch selbst überlassen!

Aufgabenbeschreibungen

Datum Blatt Inhalt
25.10.06 Aufgabe 1 Einarbeitung in MiniJava und Eli.
30.10.06 Aufgabe 2 Lexikalische Analyse und Analyse der kontextfreien Syntax
06.11.06 Aufgabe 3 Einarbeitung in die semantische Analyse anhand der Namensanalyse
13.11.06 Aufgabe 4 Typanalyse - Teil 1
20.11.06 Aufgabe 5 Typanalyse - Teil 2
27.11.06 Keine neue Aufgabe
04.12.06 Aufgabe 6 Einarbeitung in die Zwischensprache Firm.
11.12.06 Aufgabe 7 Zwischensprachaufbau Firm - Typen
18.12.06 Aufgabe 8 Zwischensprachaufbau Firm - Programmcode
08.01.07 Aufgabe 9 Optimierungen auf Firm
15.01.07 Aufgabe 10 Umwandlung der OO-Strukturen zur Codegenerierung
22.01.07 Keine neue Aufgabe
29.01.07 Aufgabe 11 Anschluß des Codegenerators

Downloads zu den Aufgaben

Datei Beschreibung
Testprogramme Notorische Testprogramme
a1.digitcalc.tar Eli Beispiel digitcalc
a3.code.tar Bekanntmachung vordefinierter Bezeichner
a3.AntiTest.tar Fehlerhafte Testprogramme für die Namensanalyse
a4.code.tar Einträge in Definitionstabelle für vordefinierte Typen, Funktionalität für Typanalyse
a5.code.tar Weitere Funktionalität für Typanalyse
a5.AntiTest.tar Fehlerhafte Testprogramme für die Typanalyse
a7.code.tar Grundlegende Funktionalität für den Firmaufbau
local_opt.txt Vorschläge für Optimierungen
a9.Opt01.java Testprogramm für Optimierungen
a10.code.tar Einführung der Dispatchtabellen
a11.code.tar Hilfsfunktionen für den Backendaufruf
cbackend.tar.bz2 C Backend für FIRM
mj.clp Kommandozeilenoptionen für den MiniJava-Compiler

Verfügbare Dokumentation

Important notice

The documents made available by links from this documentation list are provided as a means to allow personal studying on a non-commercial basis. Copyright and all rights therein are maintained by the authors, including co-author where appropriate, or by other copyright holders, notwithstanding that they have offered their works here electronically. It is understood that all persons copying this information will adhere to the terms and constraints invoked by each copyright. These works may not be reposted without the explicit permission of the copyright holder.

Dokumentation zu MiniJava

Dokumentation zu Eli

Materialien zu Firm und CGGG

Allgemeine Werkzeuge

Allgemeines über Übersetzerbau


Verantwortlich für den Inhalt: Michael Beck

Login
Links