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)
Deadline 1. Hausuebung: 02.12.2011, 18.00 Uhr
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)
Deadline 2. Hausuebung: 27.01.2012, 18.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!