|
Die wenigsten InformatikerInnen schreiben jemals einen Übersetzer für eine
richtige Programmiersprache. Die Modelle, Theorien und
Algorithmen für die Implementierung von Programmiersprachen lassen sich aber
auf viele Probleme der Softwareentwicklung anwenden.
Dieser Kurs konzentriert sich daher auf das, was jeder Informatiker über die
Implementierung von Programmiersprachen wissen sollte.
Lehrziele
- Verstehen der Funktionsweise von Übersetzern für Programmiersprachen,
insbesondere der Darstellung von Datenstrukturen, Variablen und Objekten,
sowie der Codeerzeugung für Ausdrücke, Befehle und Methoden.
- Beherrschen der grundlegenden Verfahren für die lexikalische, syntaktische
und kontextuelle Analyse von Programmiersprachen.
Inhalt des Kurses in Stichworten
- Einführung:
Übersetzer, Interpreter, Phasenmodell.
- Lexikalische Analyse:
Reguläre Ausdrücke, endliche Automaten,
Implementierung von Bezeichnertabellen (hashing).
- Syntaxanalyse:
Kontextfreie Grammatiken, absteigendes Parsieren, Fehlerbehandlung,
Konstruktion abstrakter Syntaxbäume.
- Kontextanalyse:
Identifizierung und Typisierung,
syntax-orientierte Attributierung,
Implementierung von Vereinbarungstabellen.
- Transformation:
Speicherorganisation,
Variablenallokation,
Übersetzung von Kontrollstrukturen, Prozedur- und Methodenaufrufe.
- Codeerzeugung:
Registerzuordnung und Instruktionsauswahl.
- Codeverbesserung:
Peephole-``Optimierung''.
|
|