Lehrstuhl Informatik II   
Sprachen und Beschreibungsstrukturen      
   Home Lehre Sommersemester 12 Vorlesungen Compilerbau I login

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:

  1. Übersicht über Compilerbau
  2. Lexikalische Analyse:
    Von regulären Ausdrücken zu NFAs
    Scannerdesign mit NFAs
  3. Syntaktische Analyse
    Kontextfreie Sprachen & Kellerautomaten
    Item-Kellerautomat & Recursive Descent Parsing
    Shift-Reduce Parsing & LR(1) Parser
  4. Semantische Analyse
    Attributauswertung
    Typüberprüfung
  5. Codegenerierung
    Registerallokation
    Generierungsschemata
  6. 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:

    AST.pdf

TUM - Lehrstuhl Informatik II (Sprachen und Beschreibungsstrukturen) Thanks: Tango and TinyMCE     Generationszeit: 12 ms