Ein Übersetzer ist ein Programm, das Programme einer höheren Programmiersprache in eine andere Programmiersprache (im allgemeinen Maschinensprache) überführt. In der Regel erfolgt die Übersetzung in mehreren Phasen, wovon die wichtigsten die lexikalische Analyse, die Syntaxanalyse, die semantische Analyse und die Codeerzeugung sind. Mit Hilfe der lexikalischen und syntaktischen Analyse wird das Quellprogramm in eine computergerechte Repräsentation überführt (abstrakter Syntaxbaum). Diese Repräsentation wird dann als Ausgangspunkt für Optimierungen und Codeerzeugung verwendet. Die hier vorgestellten Verfahren finden an vielen Stellen in der Informatik Anwendung. Deshalb ist dieses Thema auch für solche Hörer von Interesse, die nie vorhaben, professionell einen Übersetzer zu schreiben.

Die Übungen werden hauptsächlich darin bestehen, in Zweiergruppen je einen Übersetzer für eine vereinfachte höhere Programmiersprache in Java zu implementieren. Daneben wird es vereinzelt gelegentlich Übungsaufgaben zum Verständnis der Vorlesung geben.

 

Leistungskriterien

Zur Anerkennung der einzelnen Studienleistungen bestehen folgende Kriterien:

- Aktive Teilnahme

   -- 60% der Punkte in den Hausaufgaben einschließlich des Programmierprojekts.

   -- Vorstellung und Demonstration des Projektes am Ende des Semesters.

 

- Regelmäßige Teilnahme

    Teilnahme an den Tutorien mit höchstens zwei Ausnahmen.

 

- Prüfung

   in Form einer Klausur am 17.2.2017, Ort und Zeit wie die Vorlesung.

   Die Note für die Veranstaltung hängt nur von dieser Prüfung ab (leider nicht zu ändern!).

 

Literatur

Zur Beschaffung empfohlen:

  • Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman: Compilers - Principles, Techniques , & Tools, Pearson International Edition, 2007

Deutsche Version:

  • Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman: Compiler, Pearson Studium, 2008

Weitere, ergänzende Literatur:

  • Helmut Seidl: Compilerbau, TUM, SS08
  • Pat D Terry: Compiling with C# and Java, Pearson Education 2005
  • Reinhard Wilhelm, Dieter Maurer: Übersetzerbau - Theorie, Konstruktion, Generierung, Springer-Verlag, 2. Auflage 1997
  • Niklaus Wirth: Grundlagen und Techniken des Compilerbaus, 3. Auflage, Oldenbourg-Verlag, 2011

 

Zusätzliche Informationen

Die Vorlesung gehört zum Studienbereich "Praktische Informatik"

 

Voraussetzungen

Grundkenntnisse in Automatentheorie, Formalen Sprachen, Rechnerorganisation und Programmiersprachen