Compilerbau SS 09

Vorlesung

1. Einfuehrung
2. Lexikalische Analyse
3. Syntaktische Analyse
4. Abstrakte Syntax und Attributierung
5. Semantische Analyse
6. Laufzeitorganisation
7. Codegenerierung

Mitschrift von Boris Budweg aus dem WS 2003/2004: Compilerbau v1.2

Literatur

Aho, A.V., Sethi, R., Ullmann, J.D. (1988). Compilerbau. Teil1 und2. Addison-Wesley. ("Drachenbuch")
Appel, A.W. (2002). Modern Compiler Implementation in Java. 2nd Edition. Cambridge University Press
Grune, D., Bal, H.E., Jacobs, J.H., Langendoen, K.G. (2001). Modern Compiler Design. John Wiley & Sons
Jaeger, M. (2003). Compilerbau - eine Einfuehrung. Skript zur Vorlesung an der FH Giessen-Friedberg

Praktikum und Notengebung

Aufgabe: Konstruktion eines SPL-Compilers fuer ECO32
Organisation: Zweiergruppen
Bewertung:
1. Hausuebung: 25 Punkte (akzeptiert bei >= 12 Punkten)
2. Hausuebung: 25 Punkte (akzeptiert bei >= 12 Punkten)
Zwei akzeptierte Hausuebungen sind Voraussetzung fuer die Zulassung zur Klausur.
Die in der Veranstaltung erzielte Note wird alleine durch das Klausurergebnis bestimmt.

Erlaeuterung fuer Studenten, die ihre Hausuebungen
nicht im SS 09 gemacht haben:

Auch fuer Sie gilt, dass zwei akzeptierte Hausuebungen als Zulassungsvoraussetzung
zur Teilnahme an der Klausur gefordert werden. Eine schriftliche Bestaetigung ueber
die Abgabe zweier akzeptierter Hausuebungen, ausgestellt von demjenigen Kollegen,
der die Veranstaltung betreut hat, ist vom Studierenden spaetestens zur Klausur
vorzulegen.

SPL-Sprachdefinition

SPL Sprachdefinition (Version 1.1)

SPL Sprachdefinition (Version 1.2)

Referenzimplementierung

Auf dem Rechner 'saturn.mni.fh-giessen.de' finden Sie unter /home/hg53/spl die
Referenzimplementierung des Compilers fuer Sun und Linux, die Laufzeitbibliothek,
den Assembler und den ECO32-Simulator sowie Hinweise zur Benutzung.

ECO32

Instruktionssatz
Registerbenutzung

Implementierungssprache

Sie koennen zwischen C und Java waehlen. Die zu den Aufgabenstellungen verteilten
Quellen liegen in beiden Sprachen vor. Es kommen bei C die auf allen UNIX-Systemen
verfuegbaren Tools Flex und Bison, bei Java die entsprechenden Tools JFlex und Cup
zum Einsatz.

Aufgaben und Termine

Die Termine hinter den Einzelaufgaben dienen zu Ihrer Orientierung;
termingerecht abgegeben werden muessen nur die Hausuebungen. Die
erste Hausuebung besteht aus der Zusammenfassung der Loesungen zu
den Aufgaben 2-4, die zweite Hausuebung aus der Zusammenfassung
der Loesungen zu den Aufgaben 2-7.

Aufgabe 1 (Java) -- Aufgabe 1 (C) (Warmlaufaufgabe, bis 03.04.2009)
Aufgabe 2 (Java) -- Aufgabe 2 (C) (Lexikalische Analyse, bis 17.04.2009)
Aufgabe 3 (Java) -- Aufgabe 3 (C) (Syntaktische Analyse, bis 01.05.2009)
Aufgabe 4 (Java) -- Aufgabe 4 (C) (Abstrakte Syntax, bis 15.05.2009)

Instruktionen zur Abgabe der 1. Hausuebung

Deadline 1. Hausuebung: 22.05.2009, 18.00 Uhr

Einsendungen zur 1. Hausuebung

Ergebnisse der 1. Hausuebung

Aufgabe 5 (Java) -- Aufgabe 5 (C) (Semantische Analyse, bis 05.06.2009)
Aufgabe 6 (Java) -- Aufgabe 6 (C) (Frame Layout, bis 19.06.2009)

Wegen der Kuerze der Bearbeitungszeit gibt es dazu eine
Loesung ( hier in Java und hier in C ), die Sie verwenden
duerfen (aber nicht muessen).

Aufgabe 7 (Java) -- Aufgabe 7 (C) (Codegenerator, bis 03.07.2009)

Instruktionen zur Abgabe der 2. Hausuebung

Deadline 2. Hausuebung: 05.07.2009, 24.00 Uhr

Einsendungen zur 2. Hausuebung

Ergebnisse der 2. Hausuebung


WARNUNG

Kopieren von Code anderer Gruppen ist Betrug und wird mit dem
Ausschluss aller beteiligten Gruppen von der Klausur geahndet!
Auch das Benutzen von Loesungen aus vorhergehenden Semestern
faellt hierunter!