Compilerbau WS 11/12

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. (2004). 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.
Bei der Klausur sind alle Buecher, Skripte, Hausuebungen und sonstige Unterlagen
sowie Taschenrechner als Hilfmittel zugelassen.

Erlaeuterung fuer Studenten, die ihre Hausuebungen
nicht im laufenden Semester 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.2)

Referenzimplementierung

Hier finden Sie die Referenzimplementierung des Compilers fuer SunOS 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 21.10.2011)
Aufgabe 2 (Java) -- Aufgabe 2 (C) (Lexikalische Analyse, bis 04.11.2011)
Aufgabe 3 (Java) -- Aufgabe 3 (C) (Syntaktische Analyse, bis 18.11.2011)
Aufgabe 4 (Java) -- Aufgabe 4 (C) (Abstrakte Syntax, bis 02.12.2011)

Instruktionen zur Abgabe der 1. Hausuebung

Deadline 1. Hausuebung: 02.12.2011, 18.00 Uhr

Einsendungen zur 1. Hausuebung

Ergebnisse der 1. Hausuebung

Aufgabe 5 (Java) -- Aufgabe 5 (C) (Semantische Analyse, bis 22.12.2011)
Aufgabe 6 (Java) -- Aufgabe 6 (C) (Frame Layout, bis 13.01.2012)
Aufgabe 7 (Java) -- Aufgabe 7 (C) (Codegenerator, bis 27.01.2012)

Instruktionen zur Abgabe der 2. Hausuebung

Deadline 2. Hausuebung: 27.01.2012, 18.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!