Universität Bremen FB3 TZI BISS | ||||||
AG BS > Lehre > SoSe 2004 > | ||||||
Übersetzergenerierung mit lex und yacc, SoSe 2004 |
||||||
Veranstalter: Jan Bredereke Termin: Mo 8:30-10:00 Uhr, MZH 1400 (gr. Senatssaal) Beginn: 26. April 2004 ECTS: 2 ÜberblickÜbersetzer sind grundlegende Werkzeuge der Informatiker. Für Standardsprachen stehen zwar bereits fertige Übersetzer zur Verfügung. Aber nur wenn man ihre Arbeitsweise kennt, kann man alltägliche Fragen beantworten wie etwa: Welche Fehler in meinem Programm kann der Übersetzer finden? Wie effizient kann er ein Konstrukt übersetzen? Viele Implementierungsaufgaben können als Implementierung eines Übersetzers für eine spezialisierte, domänenspezifische Sprache aufgefaßt werden. Jede Übersetzung von Eingabedaten in Ausgabedaten ist eine Übersetzung von einer spezialisierten Sprache in eine andere spezialisierte Sprache. Auch die Interaktion mit einem Benutzer ist eine Übersetzung von Benutzereingaben in Programmausgaben. Für solche Aufgaben müssen auch heute noch ständig neue Übersetzer (und Interpreter) implementiert werden. Es gibt Werkzeuge, mit denen man einen Übersetzer zu großen Teilen automatisch generieren kann. Die Menge der Eingaben und die Menge der Ausgaben des Übersetzers stellen je eine domänenspezifische Sprache (DSL, domain specific language) dar. In einer Meta-Sprache wird die Eingabe-DSL für das Generatorwerkzeug beschrieben. In dieser Vorlesung lernen wir insbesondere die Werkzeuge lex und yacc kennen, beziehungsweise deren Varianten flex und bison. Ziel ist, mit diesen Werkzeugen Übersetzer für eigene domänenspezifische Sprachen generieren zu können. Weiterhin stellen wir kurz das Werkzeug sed vor, mit dem man auf regulären Ausdrücken basierende Textersetzungen in einem Datenstrom vornehmen kann, sowie das Werkzeug make, mit dem man die Schritte automatisieren kann, die bei der Generierung eines Programms aus vielen Quelldateien nötig sind. Insbesondere dient make der Verwaltung der Abhängigkeiten dieser Schritte, was bei Programmänderungen wichtig wird. Ebenso wird der theoretische Hintergrund eingeführt: Lexikalische Analyse (reguläre Ausdrücke, endliche Automaten, Bezeichnertabellen), Syntaxanalyse (kontextfreie Grammatiken, absteigendes Parsieren, aufsteigendes Parsieren, Fehlerbehandlung, abstrakte Syntaxbäume), semantische Analyse (Identifizierung und Typisierung, syntax-orientierte Attributierung, Vereinbarungstabellen) und evtl. Transformation und Codeerzeugung. Geändert, 28.4.2004: Voraussetzung für die Teilnahme ist das Vordiplom, oder zumindest der erfolgreiche Abschluß der Grundstudiumsveranstaltungen "Theoretische Informatik I" (in der Version seit WiSe 2002/03) und "Praktische Informatik 2". Diese Veranstaltung richtet sich an alle, die an der praktischen Generierung von Übersetzern mit den Werkzeugen lex und yacc interessiert sind, insbesondere an die Teilnehmer des Projektes TRACS. Struktur und Folien
Die Folien werden immer eine Woche vor der zugehörigen Vorlesung hier veröffentlicht. Eine noch detailliertere Liste der Themen jedes Kapitels findet sich auf einer eigenen Seite. Literatur
SoftwareQuellen für die verwendete SoftwareDie freien Versionen von lex und yacc, flex und bison, sollten auf allen Unix-Rechnern des Fachbereiches installiert sein. Auch bei allen aktuellen Linux-Distributionen sollten sie dabei sein. Windows-Nutzer finden sie im Cygwin-Paket. Das gleiche gilt natürlich für GNU make, sed und grep. Übersetzergeneratoren für Javalex und yacc generieren Code in C bzw. C++, aber es gibt auch Generatoren für Code in Java. CUP ist ein LALR-Parser, ganz ähnlich wie yacc. Man kann als Scanner-Generator dazu z.B. JFlex oder JLex verwenden. Wem die eingeschränkteren Möglichkeiten eines LL-Parsers reichen, der kann sich auch javacc oder antlr ansehen. Alle diese Programme sind wie yacc ebenfalls frei erhältlich. Download-Links
ScheinbedingungAm Montag, den 26.4.2004 wurde (für die DPO'03) ausgehandelt:
Prüfung
Termine: Mo. 19.7.2004, Di. 20.7.2004, Do. 22.7.2004,
jeweils zwischen 9:30 Uhr und 17:00 Uhr, außerdem
wegen des großen Andrangs am
Fr. 23.7.2004 zwischen 10:00 Uhr und 11:30 sowie
zwischen 16:00 Uhr und 17:00 Uhr.
Am 5.7.2004 wird in der Vorlesung eine Liste mit Terminen und Uhrzeiten zum Eintragen herumgegeben. Am 12.7.2004 wird diese Liste noch einmal herumgegeben. Zur Vorbereitung auf die Prüfung ist vielleicht die detaillierte Liste der Themen jedes Kapitels hilfreich, die auf einer eigenen Seite steht. Wer zu jedem Stichpunkt etwas Sinnvolles erzählen kann, der kann der Prüfung sehr, sehr zuversichtlich entgegensehen. Bitte bringt ein ausgefülltes Scheinformular mit! ("Studienbegleitender Leistungsnachweis")
|
||||||
Autor: jp |
||||||
AG Betriebssysteme, Verteilte Systeme |
|