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)
Deadline 1. Hausuebung: 22.05.2009, 18.00 Uhr
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)
Deadline 2. Hausuebung: 05.07.2009, 24.00 Uhr
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!