MLU
Vorlesung: Übersetzerbau I - Details
Sie sind nicht in Stud.IP angemeldet.

Allgemeine Informationen

Veranstaltungsname Vorlesung: Übersetzerbau I
Semester WS 2020/21
Aktuelle Anzahl der Teilnehmenden 26
Heimat-Einrichtung Leitung des Instituts für Informatik
beteiligte Einrichtungen Praktische Informatik (Softwareengineering)
Veranstaltungstyp Vorlesung in der Kategorie Offizielle Lehrveranstaltungen
Erster Termin Donnerstag, 05.11.2020 10:30 - 12:00, Ort: Seminarraum 1.03 [VSP 1] (Informatik)
Art/Form Vorlesung online asynchron (opencast); Übung: Präsenz (2SWS von KW 47 2020 - KW 42021)
Voraussetzungen Bachelorabschluss in einem Informatikstudiengang bzw. Besuch aller Pflichtmodule im Lehramt Informatik
Lernorganisation Vorlesung mit Übung. Übungen werden nach Bedarf angeboten und befinden sich nicht als eigene Veranstaltung im Stud.IP
Studiengänge (für) Informatik (Master), Bioinformatik (Master), Wirtschaftsinformatik (Master)
Informatik (Lehramt)
SWS 4
Sonstiges Basismodul für die Vertiefungsrichtung Softwaretechnik und Übersetzerbau
ECTS-Punkte 5

Themen

Kapitel 1: Einleitung, Kapitel 2: Programmiersprachen (Kapitel 2.1-Kapitel 2.4), Kapitel 2.5: Umgebungsmodell und abstrakte Maschinen, Kapitel 3: Maschineneigenschaften, Übung, Kapitel 4: Datenstrukturen im Übersetzer, Kapitel 5: Lexikalische Analyse, Kapitel 6: Syntaxanalyse (Kapitel 6.1-Kapitel 6.2), Videosprechstunde, Kapitel 6.3 LL(k)-Grammatiken (6.3.1-6.3.2), Kapitel 6.3 LL-Automaten (SLL(k)-Grammatiken und Implementierung), Kapitel 6.4.1: LR(k)-Grammatiken, Kapitel 6.4.2 LR(k)-Automaten, Kapitel 6.4.3 Implementierung, Kapitel 6.4.4 SLR(k)-Grammatiken und Automaten, Kapitel 6.4.5 LALR(k)-Grammatiken und -Automaten, Kapitel 6.5 Behandlung von Syntaxfehlern, Kapitel 6.6: Aufbau der abstrakten Syntaxbäume, Kapitel 7: Attributierte Grammatiken, Videosprechstunde, Kapitel 7.2: Grundkonzepte attributierter Grammatiken, Kapitel 7.2.2 Konsistenz und Vollständigkeit, Kapitel 7.2.3 Wohldefinierte attributierte Grammatiken, Kapitel 7.2.4 Absolut Azyklische Grammatiken, Kapitel 7.3 Berechnungsstrategien (Kapitel 7.3.2 Zerlegte attributierte Grammatiken), Kapitel 7.3.3 Vordefinierte Berechnungsstrategien, Kapitel 7.3.4: Geordnete attributierte Grammatiken, Kapitel 7.4: Generierung von Implementierungen für attributierte Grammatiken, Kapitel 8: Semantische Analyse, Kapitel 8.2: Namensanalyse, Kapitel 8.2.2: Erweiterungen attributierter Grammatiken, Kapitel 8.2.3: Definitionstabellen, Kapitel 8.2.4 Typische Attributierungen für Namensanalyse, Kapitel 8.3 Typanalyse, Kapitel 8.4: Operatoridentifikation, Kapitel 9: Zwischencodeerzeugung (Einleitung), Kapitel 9.2: Abstrakte Maschinen, Kapitel 9.3: Speicherabbildung, Kapitel 9.4: Baumtransformationen, Kapitel 9.5: Konstruktion von Transformationsregeln, Kapitel 10: Codeerzeugung: Teil 1: Codeselektion, Kapitel 10: Codeerzeugung: Teil 2: Registerzuteilung, Assemblieren und Binden

Räume und Zeiten

Seminarraum 1.03 [VSP 1] (Informatik)
Donnerstag: 10:30 - 12:00, wöchentlich (9x)
Donnerstag: 10:30 - 12:00, wöchentlich (5x)
Keine Raumangabe
Donnerstag: 15:30 - 17:00, wöchentlich
Donnerstag, 17.12.2020 15:30 - 17:00

Studienbereiche

Modulzuordnungen

Kommentar/Beschreibung

Ziel der Vorlesung ist die Vermittlung von Grundlagen und Techniken zum Erbauen von Übersetzern (engl. Compiler). Diese Techniken sind nicht nur im Übersetzerbau einsetzbar, sondern generell, wenn textuelle oder visuelle Eingaben verarbeitet werden müssen - insbesondere, wenn auch deren Konsistenz vor einer Weiterverarbeitung überprüft werden muss.

Übersetzer können bereits seit den 80er Jahren des vergangenen Jahrhunderts automatisch aus Spezifikationen erzeugt werden. Die Vorlesung behandelt daher in erster Linie die theoretischen Grundlagen der Spezifikationen, die Grundlagen der Generierung sowie das Erstellen solcher Spezifikationen. In den Übungen werden sowohl die Grundlagen vertieft als auch ein (kleiner) Übersetzer mit Hilfe eines Übersetzergenerators gebaut.


Inhalt:

1. Einleitung/Architektur von Übersetzern

2. Eigenschaften von Programmiersprachen

3. Reale und abstrakte Maschinen

4. Abstrakte Programmrepräsentationen

5. Grundlagen aus der Theorie formaler Sprachen

6. Lexikalische Analyse

7. Syntaktische Analyse

8. Attributierte Grammatiken

9. Semantische Analyse

10. Zwischencodeerzeugung

11. Codeerzeugung

12. Optimierung