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

Compilerbau I

Dozent:Dr. Axel Simon und Michael Petter
Ort/Zeit:Mittwochs 14:15-15:45 im HS 2
ModulNummer:IN2227
Beschreibung:    Einführung in den Compilerbau, mit der Übersetzung einer imperativen Sprache.
Übung Compilerbau Hier werden wir einen kleinen Compiler für C bauen, und Euch ein bisschen theoretischer fordern/foltern.

Klausur:

... findet am Donnerstag den 5. August um 10:00 im MW 1050 statt. Stoff der Klausur ist die komplette Vorlesung, die Bearbeitungsdauer beträgt 90 Minuten. Als Hilfsmittel sind nur schriftliche Unterlagen zugelassen, elektronische Hilfsmittel sind nicht zugelassen. Wir werden Ansichtsexemplare der Vorlesungsfolien bereithalten.

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 gibts hier

Die Folien der gesamten Vorlesung gibt es hier bzw. als Handout.

Neben den Folien gibt es auch noch eine Zusammenfassung, die die Codeerzeugung für die R-CMa beschreibt. (Achtung: Am 22.07. wurde ein Fehler in der Übersetzung von Funktionsargumenten behoben.)

Klausur

Die Klausur mit Musterlösung kann hier abgerufen werden. Da viele Leute aus Zeit- oder sonstigen Gründen selten die Aufgaben 3 und 4 gelöst haben, wurde die Höchstpunktzahl um 9 Punkte auf 36 heruntergesetzt. Damit ergibt sich folgende Notenverteilung:

von bis Note
35 45 1,0
32 34,5 1,3
30 32,5 1,7
28 30,5 2,0
25 28,5 2,3
23 25,5 2,7
21 23,5 3,0
19 21,5 3,3
17 19,5 3,7
15 17,5 4,0
0 14,5 5,0

Die Einsicht in die Klausur findet am Montag, dem 16. August, zwischen 13:00 und 14:00 Uhr im Raum 02.07.014 statt.

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)


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