Compilerbau I
 |
Dozent: | Dr. Axel Simon und Dr. Michael Petter |
Ort/Zeit: | Mi 14:00-16:00 im MI 00.08.038 |
ModulNummer: | IN2227 |
Beschreibung: | Einführung in den Compilerbau, mit der Übersetzung einer imperativen Sprache. |
Übung | Übung zum Compilerbau |
|
Wiederholungsprüfung:
Die Widerholungsprüfung wird mündlich durchgeführt. Die Prüfungen finden am 18./19.10.12 in Raum 02.07.044. statt, einen genauen Termin können Sie über ein Doodle mit uns vereinbaren.
Sie können Sich in Kürze zur Wiederholungsprüfung auf TUM-Online anmelden - die Prüfung findet entweder schriftlich oder mündlich statt, je nachdem, wie viele Teilnehmer 2 Wochen vor dem offiziellen Prüfungstermin angemeldet sind. Bei <= 15 Prüflingen werden wir eine mündliche Prüfung mit individuellen Terminen vorziehen, bei einer schriftlichen Prüfung ist der in TUM-Online angezeigte Termin der Prüfungstermin!
Exam:
The exam will be "open book", you may take any documents with you. (Of course, electronic gadgets are forbidden).
Results:
The resulsts have been publiches in TUMOnline.

You need at least 14 (of 40) points to pass the exam. The bonus of 0,33 is awarded if you achieved at least 40% of the possible points in each test (that is 9 and 8 points respectively) and you have achieved at least 14 points in the exam. The bonus is substracted from the un-rounded mark.
Musterlösung/Solutions
Die Musterlösung zur Klausur befindet sich hier, der Syntaxbaum zu Aufgabe 4a ist hier.
Aktuelles:
We will publish what tools you should have installed for the next lab on the lab's page (link "Übung zum Compilerbau" above) a couple of days before the lab. Please check back there regularly.
Es werden ab dieser Woche (23.4.) zwei Übungstermine angeboten:
Mi 10:15-11:45 Uhr im 02.07.014
Mi 16:00-17:30 Uhr im 02.07.014
Bitte folgendes Tool für die Übung auf dem eigenen Laptop installieren: http://www.jflap.org/jflaptmp/
Notenbonus:
Während des Semesters werden zwei Minitests durchgeführt (genaue Daten werden rechtzeitig auf der Homepage bekannt gegeben, 1. Test ca. Semestermitte, 2. Test am Semesterende).
Wer mindestens 40% der möglichen Punkte erreicht bekommt einen Notenbonus von 0.3. Die Teilnahme ist freiwillig.
Übungsleitung: alexander.herz@mytum.de
Inhalt:
Ein Compiler ist ein wesentlicher Bestandteil der Systemsoftware, dessen Aufgabe darin besteht, Programme einer höheren Programmiersprache - etwa C oder Java - in Folgen von Maschinenbefehlen eines realen Rechners zu übersetzen. Compiler sind relativ komplexe Programme; bei ihrer Konstruktion finden die Ideen und Methoden aus vielen Bereichen ihre Verwendung. Die ersten beiden Phasen etwa, die lexikalische bzw. syntaktische Analyse des Eingabeprogramms sind eine beliebte Spielwiese für Verfahren aus dem Bereich der formalen Sprachen, später während der Codeerzeugung finden bei der Registerverteilung etwa approximative Methoden zur Graphfärbung Verwendung. Die Vorlesung gliedert sich dabei in folgende Abschnitte:
- Übersicht über Compilerbau
- Lexikalische Analyse:
Von regulären Ausdrücken zu NFAs Scannerdesign mit NFAs
- Syntaktische Analyse
Kontextfreie Sprachen & Kellerautomaten Item-Kellerautomat & Recursive Descent Parsing Shift-Reduce Parsing & LR(1) Parser
- Semantische Analyse
Attributauswertung Typüberprüfung
- Codegenerierung
Registerallokation Generierungsschemata
- Optimierungen
Anschließend betrachten wir weniger standardisierte Teilaufgaben eines Compilers, wie z.B. die Typüberprüfung von Programmen.
Aufzeichnungen / Skript:
Aufzeichnungen wird es hier geben.
Die Folien des 1. Teils für 2012 gibt es hier.
Die Folien des 2. Teils für 2012 gibt es hier.
Zum Ausdrucken stellen wir zusätzlich noch einen Satz der Folien zur Verfügung, die nicht alle Zwischenfolien enthält. Bitte beachten, dass durch das fehlen diese Zwischenschritte sich die Fuktionsweise einiger Algorithmen nicht mehr wirklich nachvollziehen lässt. Diesen zusammengefassten Satz Folien gibt es hier.
Neben den Folien gibt es auch noch eine Zusammenfassung, die die Codeerzeugung für die R-CMa beschreibt.
Literatur:
- Aho, Lam, Sethi, Ullmann: Compilers. Principles, Techniques and Tools. Addison-Wesley, 2006. (ISBN 0321486811)
- Wilhelm, Maurer: Übersetzerbau. Theorie, Konstruktion, Generierung. Springer-Lehrbuch, 1997. (ISBN 3540616926)
- Reynolds: Theories of Programming Languages.
Online Resources
angehängte Dateien:
|