[CB-Logo]

Compilerbau II

SS 1998


[Compilerbau I] [Ablauf] [Grammatik] [Gruppen] [Berichte] [Pflichten Scanner] [Pflichten Parser] [Pflichten CodeGen]
Neu:26.11: Immer noch ist das ganze nicht abgeschlossen. Insbesondere Gruppe 2 hat Probleme.
Neu:20.10: 13.00 c.t. findet das erste Nachferientreffen im SR2 statt.
Neu:Abgabe der Gruppe Scanner in Results/Scanner
Neu:26.8: 15.00 s.t. findet das zweite Ferientreffen im SR0 statt.
Neu:11.8: Das erste Ferientreffen fand statt. Während die erste Gruppe fast fertig ist, fehlen bei Parser und CodeGen noch zentrale Aspekte.
Neu:8.8.: Es sind MMS-Demoprogramme verfügbar, u.a. in file:/u/lammers/tmpall/mml-demo
Neu:25.5.: Die ersten Zwischenberichte der Gruppen sind da, auch die ersten Pflichtehefte!
Neu:18.5.: Allgemeiner Zustandsbericht
Neu:29.4.: Hinweise zum Zwischenbericht.
Neu:21.4.: Es liegt nun eine erste Version einer gemeinsamen Basisgrammatik vor.

Aktuelle Hinweise

Die nächste Zusammenkunft ist Anfang August geplant. Dann sollten alle Gruppen ihre Programmteile inclusive Dokumentation und Arbeitsbericht fertig haben. In der Folgewoche wird dann versucht, alles zusammenzusetzen und mms- (bzw. mml-)Programme zum laufen zu bringen.
Die Dokumentation beschreibt die Benutzung des Programms: Aufruf, ggf. Optionen und deren Wirkung, Dateiformate der Ein- und Ausgabe, etc. Sie wird heute üblicherweise als Hypertext-Datei angefertigt.
Der Bericht einer Arbeitsgruppe beschreibt die inneren Aspekte der Implementation (z.Bsp. Datenstrukturen), wieso man so vorgegeangen ist, welche Probleme oder unerwartetet Effekte auftraten, wie man nach den gemachten Erfahrungen ggf. alternativ vorgehen würde, etc.

Die erste Version der Bassigrammatik liegt (als Textdatei) vor. Sie ist dazu gedacht, den Gruppen eine gemeinsame Basis zu geben, da die MML-Grammatik aus dem Script keine Tokenklassen benutzt und nicht ganz vollständig ist. Einige Tücken sind damit beseitigt, aber auch diese Version enthält noch einige problematische Ecken. Die zu finden und zu beseitigen sollte den Gruppen überlassen werden. Tatsächlich liegt ja weder die Syntax noch die Sematik von MML zu diesem Zeitpunkt genau fest -- Sprachdesign kommt eben beim Compilerbau auch immer hinzu, und gehört zur 'frühen' Phase.

Organisatorisches

Titel:
Compilerbau II
Ort+Zeit:
Mittwochs von 1515h bis 1645h im M4, Übungen Donnerstags, 1415h. bis 1500h, im SR0
Veranstaltungsnummer:
Vorlesung: 15.375.8, Übungen: 15.376.2 Übungen 15.370.7 (s.a. VVZ)
Veranstalter:
Prof. Dr. Wolfram-M. Lippe , Dr. Dietmar Lammers
Hilfskraft:
N.N.

Übersicht

Nach einem kurzen Vorlesungsteil werden wir uns damit beschäftigen in mehreren (konkurrierenden und kooperierenden) Gruppen einen Compiler (primär der Sprache MML in Code für den von-Neumann -Simulator) zu schreiben. Die Gruppen werden dann die Vorlesungszeit dazu nutzen, ihren Fortschritt vorzustellen, Absprachen zu treffen, etc.

Weil der programmierpraktische Teil der Veranstaltung überwiegt, ist der Schein, der durch hinreichende Mitarbeit erworben werden kann, auch als Programmierpraktikumsschein anwendbar. Insofern werden auch zum Teil die Unterlagen des letzten Software-Praktikums herangezogen.

Ablauf

Grundsätzliches

Die Aufgabe, einen bzw. sogar mehrere Inkarnationen eines Compilers zu schreiben wird in dieser Veranstaltung durch Aufteilung der Gesamtaufgabe in kleinere Aufgaben angegangen, die dann von einzelnen
Gruppen bearbeitet werden. Die Gruppen müssen die Schnittstelle ihrer Teilaufgabe mit den Gruppen absprechen, die Input für ihre Aufgabe liefern oder auf dem Output dieser Gruppe aufbauen.

Zunächst werden die Aufgaben vorgestellt und vergeben. Die gestellten Aufgaben sollen dann im Detail von den Gruppen ausgearbeitet werden, und die Gruppen sprechen die Interfaces ab. (Phasenmodell: Planungs- und Defintionsphase)

Dann folgt eine erste Vortragsphase für den Zwischenbericht, in dem aktueller Stand, Probleme etc. berichtet werden.
Es folgen in betreuter Gruppenarbeit die Entwurfs- und Implementierungsphase.
Die Abnahme und Einführung erfolgt wieder in Form einer Vortragsphase, dem Abschlußbericht. Eine Testphase schließt (als interaktiver Teil des Abschlußberichts der Testgruppe) an.

Folgender terminliche Ablauf ist geplant:

  1. [1-2 Termine] Einführung, Vorstellung der Aufgaben, Aufteilung der Gruppen
  2. [5-6 Termine] Gruppenarbeit
  3. [3 Termine] Zwischenberichte (ca. 30 min pro Gruppe), auch Vorstellung der Werkzeuge und Schnittstellen.
  4. [5-6 Termine] Gruppenarbeit
  5. [3 Termine] Abschlußberichte: Vorstellung des Programm(-teils), Dokumentation, Vorführung
  6. ggf. Testphase und Verbesserungen

Die Termine im einzelnen:

Mi Was Do Was
15.4 Einführung 16.4 ggf. Einführung / Gruppenarbeit
22.4 Gruppenarbeit 23.4 Gruppenarbeit
29.4 Gruppen/Plenum 30.4 Gruppen/Plenum
Zu diesem Zeitpunkt wird entschieden, ob schon der Zwischenbericht erfolgen kann. Wenn ja, wird damit begonnen, und die Gruppenarbeit im Anschluß durchgeführt. Wenn nein:
6.5 Gruppenarbeit 7.5 Gruppenarbeit
13.5 Zwischenbericht Gruppen 1-2 14.5 Zwischenbericht Gruppen 3-7
20.5 Zwischenbericht Gruppen 8-9 21.5 Feiertag
27.5 Gruppenarbeit 28.5 Gruppenarbeit
10.6 Gruppen/Plenum 11.6 Gruppen/Plenum
17.6 Gruppenarbeit 18.6 Abschlußbericht Gruppen 1-2
24.6 Abschlußbericht Gruppen 3-7 25.6 Abschlußbericht Gruppen 8-9
1.7 Testphase 2.7 Testphase


Literatur

W.-M. Lippe: Compilerbau-Script
Das Script ist im Skriptenverzeichnis der Informatik ist verfügbar, und eine gedruckte Version davon steht in Informatik-Abteilung der Hauptbibliothek zur Verfügung. Dort ist auch die MML genau definiert.
H. Zima: Compilerbau I, II
O. Meyer: Syntaxanalyse
Bereits vor Jahren in der Reihe Informatik im BI-Verlag sind die Bände Compilerbau I und Compilerbau II von H. Zima, und der Band Syntaxanalyse von O. Meyer erschienen. Sie sind immer noch sinnvoll, aber meines Wissens nicht mehr im Handel erhältlich.
Aho, Ullman, Sethi, Hopcroft:
Ein Klassiker ist das bei Addison-Wesley erschienene sogenannte Dragon-Book Principles of Compiler Design von A. V. Aho und J. D. Ullmann, überhaupt hat die Gruppe Aho / Sethi / Hopcroft / Ullman eine ganze Menge zu dem Thema geschrieben, u.a. auch das übersetzte, 1988 herausgegebene überarbeitete Drachenbuch Compilerbau (Oldenbourg Verlag, Band I: 49,90, Band II: 39,90) Ebenfalls aus dieser Gruppe stammt Aho/Ullmann: The Theory of Parsing, Translation and Compiling (Vol. I+II), erschienen bei Prentice-Hall 1972.
Niklaus Wirth:
Das kleine Bändchen Compilerbau, Teubner 1981 von Niklaus Wirth ist wirklich nicht mehr als eine Einführung, aber immerhin vom Vater mehrerer erfolgreicher Sprachen. Aktueller ist Grundlagen und Techniken des Compilerbaus, Oldenbourg 1996.
Diverse:
Etwas aktuellere deutschsprachige Bücher sind zum Beispiel Uwe Kastens recht kompakte Darstellung Übersetzerbau (Oldenbourg 1990) und das Buch Praxis des Compilerbaus von Franz Josef Schmitt (Hanser 1992), das die Theorie alledings nur oberflächlich behandelt und schwerpunktmäßig auf die Compilerbau-Programme lex und yacc eingeht.
Formaler mit attributierten Grammatiken setzt sich Ulrich Mahn in Attributierte Grammatiken und Attributierungsalgorithmen auseinander, erschienen 1988 in der Reihe Informatik Fachberichte von Springer.
D. Lammers:
Unter dem Gesichtspunkt der Softwareentwicklung werden wir auch das Script Software-Praktikum von mir verwenden.
J. Lilienbecker / F. Stratmann / M. Frericks:
Sie haben den aus einer Informatik-3 hervorgegangenen von-Neumann-Simulator erstellt und dokumentiert

IfI Mathe WWU
Dietmar Lammers
Last modified: Thu Nov 26 14:34:20 MET 1998