Uni Wien:Übersetzerbau LU (Mehofer)
- Übersetzerbau VU (Ertl, Krall) (TU Wien, 30 Materialien)
- Übersetzerbau LU (Mehofer) (Uni Wien, veraltet, 0 Materialien)
In der Studienplanänderung 2006 der Technischen Universität Wien wurde "Übersetzerbau LU" aus dem Studienplan gestrichen.
|
Daten[Bearbeiten | Quelltext bearbeiten]
- Vortragender/LVA-Leiter: Prof. Eduard Mehofer
- Semesterwochenstunden: 3
- HP der LVA: http://www.par.univie.ac.at/~mehofer/teach/CC/UE.html
- Institut: Institute für Scientific Computing
Die LVA gibs auch an der TU: Übersetzerbau LU (Ertl)
Inhalt[Bearbeiten | Quelltext bearbeiten]
Ziel der Lehrveranstaltung ist die praxisnahe Entwicklung eines Compilers für eine einfache Sprache. Schritt für Schritt werden die einzelnen Phasen der Compilerentwicklung in Form von Beispielen durchgenomen
- lexikalische Analyse
- Grammatik
- semantische Analyse
- Codeerzeugung
Ablauf[Bearbeiten | Quelltext bearbeiten]
Um an diese LVA absolvieren zu können, muss der Studierende an der Uni Wien mitbelegt oder inskribiert sein. In Form von ca. all 2wöchentliche Abgaben wird der jeweilge Arbeitsschritt anhand von Testfällen auf Fehlerhaftigkeit überprüft. Die Abgaben werden unter Anwesenheitspflicht während der UE LVA-Einheit abgehalten.
Die Aufgaben[Bearbeiten | Quelltext bearbeiten]
- Lexialische Analyse: Zur Verfügung stehen das unter *nix allbekannte tool names "lex" (unter Linux auch als Klon namens flex zu finden. Es wird in den Abgabescripts überprüft ob Fehler der Eingabesprache, welche mit falschen tokens belegt wird auch erkannt werden. Die genaue Definition der Tokens sind in der Angabe auf der LVA Seite zu finden)
- Grammatik: Als Angabe wird eine Grammatik angegeben welche in kontextfreier Form umgewandelt werden muss um schließlich mit dem *nix tool yacc einen sog. parser zu generieren.
- Semantik: Anders als auf der korrespondierenden LVA auf der TU-Wien darf hier kein ox verwendet werden. die Semantik wird als Erweiterung des mit yacc zu erstellenden Parsers durchgeführt. Gute C Kenntnisse sowie implementieren und verwenden von Datenstrukturen (Listen) sind hier vorteilhaft.
- Codeerzeugung: Der nun richtig geparste und semantisch überprüfte Quellcode der Eingabesprache soll nun in Asssembler übersetzt werden.
Entweder hat man hier die Möglichkeit auf einer virtuellen Maschine (vmsim) einen Pseudo-Assembler zu schreiben oder man sucht sich die etwas kompliziertere Variante des x86-Assemblers asm aus.
In Form eines Abschlussabgabegespräch wird dann der Compiler auf Richtigkeit getestet.
Empfohlene Vorkenntnisse[Bearbeiten | Quelltext bearbeiten]
Gute C Kenntnisse unter *nix, sowie allg. prozedurales programmieren können vorteilhaft sein. Die LVA Theoretische Informatik, könnte das Verständnis von regulären Ausdrücken und Grammatiken unterstützen. x86 Assemblerkenntnisse schaden sicher nicht für die letzte Abgabe.
LVAs:
- Systemnahe Programmierung: C-Programmierung auf *NIX-Systemen
- Theoretische Informatik 1: Endliche Automaten, Grammatiken, Regular Expressions
Literatur[Bearbeiten | Quelltext bearbeiten]
Die Unterlagen werden rechtzeitig auf der LVA Seite online zur Verfügung gestellt. Wichtig sind v.a. die GNU Dokumentationen zu yacc und bison.
Das Buch von Kenneth C. Louden - Compiler Construction enthält _sehr_ ähnliche Beispiele.
Übungen[Bearbeiten | Quelltext bearbeiten]
Diese LVA wird als 3stündige Laborübung angeboten. Es gibt Laborräume des Instituts, allerdings _kein_ Support bzgl. Tutoren. Implementiert und abgegeben wird auf einen Sun Solaris Server.
Prüfung[Bearbeiten | Quelltext bearbeiten]
Offiziell findet nach der letzten Abgabe noch eine schriftliche Prüfung statt. Bei geringer Teilnehmeranzahl wird jedoch meist nur nach einem mündlichem Abgabegespräch benotet.
Zeitaufwand[Bearbeiten | Quelltext bearbeiten]
Für die einzelnen Beispiele sollte man sich genügend Zeit nehmen. Es ist empfehlenswert online auf dem Server zu arbeiten, da oft "aktueller" lokaler C Code auf dem etwas älterem C Compiler auf dem Server nicht kompiliert. Wer noch nie mit C etwas zu tun gehabt hat, sollte sich auch Tutorials sowie Fachklektüre für die Programmiersprache C reinschnuppern.
Wo gibts Mitschriften, Skripten, Folien...[Bearbeiten | Quelltext bearbeiten]
Auf der LVA-Homepage
Aehnliche und Verwandte LVA's[Bearbeiten | Quelltext bearbeiten]
Übersetzerbau VO: Die zur LU gehoerende Vorlesung.
Abstrakte Maschinen VO: Eine sehr anspruchsvolle Vorlesung ueber Virtuelle Maschinen (Bsp.: Java VM). Baut sehr stark auf dem Stoff aus Compilerbau auf.
Optimierende Übersetzer VU