Übersetzergenerierung mit lex und yacc

Ähnliche Dokumente
Übersetzergenerierung mit lex und yacc

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9

Einführung in die Systemprogrammierung

Praktikum Compilerbau

Definition Compiler. Bekannte Compiler

Compilerbau für die Common Language Run-Time

Inhalte der Vorlesung. 3. Der Textstrom-Editor sed. 3. Der Textstrom-Editor sed. Grundprinzip eines Textstrom-Editors

10 Erweiterung und Portierung

Was ist ein Compiler?

Compiler und Codegenerierung. Hw-Sw-Co-Design

Fachseminar WS 2008/09

EINFÜHRUNG. Maschinenmodell. konkrete Maschine. Interpreter. universelle programmierbare Rechenmaschine:

Inhalte der Vorlesung. 4. Der Scanner-Generator lex. 4. Der Scanner-Generator lex. 4.1 lex: Grundlagen

Grundbegriffe der Informatik

Inhalte der Vorlesung. 6. Syntaxgesteuerte Übersetzung. 6. Syntaxgesteuerte Übersetzung. Attributierter Syntaxbaum

1 ÜBERSETZER. Compilerbau 1

Compilerbau mit Phoenix

den Einsatz von generierenden Werkzeugen und Theorien und von Software-Engineering-Methoden

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Beispiel einer Übersetzung

Grammatiken in Prolog

Äquivalente Grammatiken / attributierte Grammatik

Version 0.3. Installation von MinGW und Eclipse CDT

Theoretische Grundlagen der Informatik

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

Theoretische Informatik I

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Anbindung Borland CaliberRM

Buddy - Algorithmus Handbuch für Endnutzer Stand

Formale Sprachen und Grammatiken

Übungen zur Softwaretechnik

Grundlagen von Python

Einführung in den Compilerbau

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Step by Step Webserver unter Windows Server von Christian Bartl

teischl.com Software Design & Services e.u. office@teischl.com

Compiler, Übersetzer. Allgemeine Erklärung / Definition

Informatik I. Übung 01. Olga Diamanti

Forschen - Schreiben - Lehren

Aufklappelemente anlegen

Das Handbuch zu KAppTemplate. Anne-Marie Mahfouf Übersetzung: Burkhard Lück

Vorarlberger Standardschulinstallation Anbindung von Android Mobile Devices

GeoPilot (Android) die App

4 Lexikalische Analyse und Parsing

Vorkurs Informatik WiSe 15/16

FreieSoftwareOG. Creative Commons und freie Lizenzen- Ein kurzer Überblick

Kompilieren und Linken

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

N Bit binäre Zahlen (signed)

5. Bildauflösung ICT-Komp 10

Grammatiken. Einführung

Berechnungen in Access Teil I

How to do? Projekte - Zeiterfassung

Fehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems

Dokumentenverwaltung im Internet

Anbindung des eibport an das Internet

Anlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010

PC-Kaufmann 2014 ZIP-Komprimierte Datensicherung einspielen

Windows 8 Lizenzierung in Szenarien

SJ OFFICE - Update 3.0

Workshop: Eigenes Image ohne VMware-Programme erstellen

AutoTexte und AutoKorrektur unter Outlook verwenden

Installationsanleitung WSCAD Elektrohandwerk

Übung Theoretische Grundlagen

Support-Tipp Mai Release Management in Altium Designer

PQ Explorer. Netzübergreifende Power Quality Analyse. Copyright by Enetech Alle Rechte vorbehalten.

Abschlussklausur am 12. Juli 2004

Standard XPersonenstand - Version Verbindliche Handlungsanweisungen

BlueEvidence Services in Elexis

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Konventionen. Danksagung

Anleitung. Für folgende Produkte: BeoSound 5 / BeoSound 5 Encore / DLNA Client Stereoanlagen

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

Kern Concept AG Software Entwicklung HMO und BlueEvidence

Wie lizenziert man die Virtualisierung von Windows Desktop Betriebssystemen?

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls

Anforderungen an die HIS

Nie wieder eine Sitzung verpassen unser neuer Service für Sie!

Generierung & Übersetzung mit XLE

Grundlagen der Programmierung 3 A

DURCH VIDA ERZEUGTE PROTOKOLLDATEIEN 1 EINFÜHRUNG

Kopfzeile. Inhaltsverzeichnis

Grundlagen der Theoretischen Informatik, SoSe 2008

Predictive Modeling Markup Language. Thomas Morandell

Satzhilfen Publisher Seite Einrichten

2. Negative Dualzahlen darstellen

E-Commerce Recht Organisatorisches

Adressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine. Studienleistung

mit dem TeXnicCenter von Andreas Both

C++ mit Eclipse & GCC unter Windows

Individuelle Formulare

PVS Grobkonzept: Strukturelle und funktionale Erweiterungen bei der Verwaltung der Arbeitszeit und der organisatorischen Zuordnung

Internet online Update (Internet Explorer)

Transkript:

Übersetzergenerierung mit lex und yacc 0. Überblick und Organisatorisches Jan Bredereke SoSe 2004, Universität Bremen otivation Übersetzer: Grundlegende Werkzeuge welche Fehler kann er finden? Konstrukt wie effizient übersetzen? Eingabe Ausgabe = Übersetzer auch: Benutzerinteraktion strukturierte Ein-/Ausgabe: domain specific languages (DSs) ständig neue kleine Sprachen Übersetzer großenteils automatisch generierbar Generator-Eingabe: DS-Beschreibung (in eta-sprache) Inhalte der Vorlesung 1.Einführung 2.exikalische Analyse 3.Der Textstrom-Editor sed 4.Der Scanner-Generator lex (2 Termine) 5.Syntaxanalyse und der Parser-Generator yacc (3 T.) 6.Semantische Analyse 7.Transformation und Code-Erzeugung (?) 8.Übersetzungssteuerung mit make Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 3 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 4

Organisatorisches Vortragender Dr. Jan Bredereke, brederek@tzi.de, ZH 8200 Zeiten montags 8:15 9:45 oder 8:30 10:00? Voraussetzung Vordiplom Web-Seiten www.tzi.de/agbs/lehre/ss04/uegen/ iteratur Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. Compilerbau, Teil 1. Oldenbourg, 2. Aufl. (Dez. 1999). ISBN 3-486-25294-1. N. N. sed(1) anual-seite. In: unetix inuxhandbuch (Juli 1993). ike Haertel, James A. Woods und David Olson. grep(1) anual-seite. In: unetix inuxhandbuch (Juli 1993). Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 5 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 6 iteratur (2) John R. evine, Tony ason und Doug Brown. lex & yacc. O'Reilly, zweite korrigierte Auflage (1995). ISBN 1-56592-000-7. Vern Paxson. Flex, version 2.5 - A fast scanner generator. University of California (1990). Charles Donelly and Richard Stallman. Bison - The YACC-compatible parser generator. Version 1.75. Free Software Foundation (2002). ISBN 1-882114-44-2. GNU Free Documentation icense. iteratur (3) R. Stallman, R. cgrath und P. Smith. GNU ake - A Program for Directing Recompilation. Version 3.80. Free Software Foundation (Juli 2002). ISBN 1-882114-81-7. GNU Free Documentation icense. Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 7 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 8

lex & yacc flex & bison Software auf allen Uni-Rechnern in allen großen inux-distributionen Windows: im freien Cygwin-Paket sed, grep, make ebenso verfügbar Download-inks www.tzi.de/agbs/lehre/ss04/uegen/ Scheinkriterien-Vorschlag keine Übungsaufgaben, da reine Vorlesung deswegen 2 ECTS mündliche Prüfung am Ende 20-30 min. pro Kandidat auf Wunsch mit Beisitzer Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 9 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 10 Universelle programmierbare Rechenmaschine -Programm -aschine 1. Einführung Eingabe -aschine Ausgabe kann beliebige Programme einer Sprache ausführen Ausführung eines Programms symbolisiert durch: E? A Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 11 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 12

E? A Interpreter simuliert -aschine durch -Programm -aschine: problemorientiert, virtuell -aschine: existiert real Übersetzer übersetzt -Programme in -Programme -Programm ist direkt ausführbar Quellprogramm? Übersetzer Zielprogramm???? Übersetzung Ausführung Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 13 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 14 Programme rund um einen Übersetzer Die Phasen der Übersetzung erweitertes Quellprogramm Präprozessor Quellprogramm Analyse Quellprogramm (Text) Übersetzer Assemberprogramm Assembler Synthese attributierter Syntaxbaum verschiebbarer aschinencode ader und Binder ausführbarer aschinencode Zielprogramm (Assemblerprogramm) Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 15 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 16

Die Analysephasen Die Synthesephasen Quellprogramm (Text) attributierter Syntaxbaum lexikalische Analyse Symbolstrom Syntaxbaum Syntaxanalyse Zwischencodeerzeugung Optimierung Zwischencode Zwischencode semantische Analyse attributierter Syntaxbaum Codeerzeugung Zielprogramm (Assemberprogramm) Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 17 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 18 exikalische Analyse position := initial + rate * 60 position := initial + rate * 60 Syntaxanalyse (Parsing) Parse-Baum: Zuweisung Bezeichner := Ausdruck position Ausdruck + Ausdruck Bezeichner := (Zuweisungssymbol) Bezeichner + Bezeichner * (Addit.- Symbol) (ult.- Symbol) Zahl position initial rate 60 Gruppierung der Eingabezeichen in exeme eerzeichen werden entfernt Zuordnung exem Symbol Symbole (Token): Bezeichner, :=, +, *, Zahl,... Symbol hat z.t. Wert als Attribut Bezeichner Ausdruck * initial Bezeichner rate hierarchische Gruppierung der Symbole mit Hilfe einer kontextfreien Grammatik Ausdruck Zahl 60 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 19 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 20

Syntaxbaum := position + initial * rate 60 ist komprimierte Darstellung des Parse-Baums attributierter Syntaxbaum: Semantische Analyse sammelt Typinformationen für Codeerzeugung nutzt hierarchische Struktur des Syntaxbaums Typüberprüfungen := position + real initial * real rate real inttoreal 60 integer ggf. automatische Typkonversionen Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 21 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 22 Nr. Name Typ... 1 position real... 2 initial real... 3 rate real... 4...... in jeder Phase jeder Fehler muß behandelt werden Ziel: weiterarbeiten, um möglichst viele Fehler zu finden sammelt und speichert die Attribute der Bezeichner Typ Gültigkeitsbereich bei Prozedurnamen: Anzahl & Typen der Argumente,... Details zum Speicherbereich (bei Codeerzeugung)... Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 23 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 24

Erinnerung: Die Synthesephasen Zwischencodeerzeugung Optimierung attributierter Syntaxbaum Zwischencode Zwischencode Zwischencodeerzeugung Codeerzeugung Zielprogramm (Assemberprogramm) Zwischencode: Programm für eine abstrakte aschine leicht zu erzeugen temp1 := inttoreal(60) temp2 := bezeichner3 * temp1 temp3 := bezeichner2 + temp2 bezeichner1 := temp3 leicht in Zielsprache zu übersetzen hier: Drei-Adreß-Code jede Instruktion hat höchstens drei Operanden Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 25 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 26 Optimierung temp1 := bezeichner3 * 60.0 bezeichner1 := bezeichner2 + temp1 versucht, Zwischencode zu verbessern schnellere Ausführung weniger Speicherplatz Codeerzeugung Variable Speicherplatz Zwischencode-Instruktion Folge von aschinenbefehlen Register Variable OVF bezeichner3, R2 UF #60.0, R2 OVF bezeichner2, R1 ADDF R2, R1 OVF R1, bezeichner1 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 27 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 28

Front-End Phasen(-anteile), die von Quellsprache abhängen lexikalische Analyse syntaktische Analyse Symboltabellenerstellung semantische Analyse Zwischencodeerzeugung Optimierung, maschinenunabhängig für obige Phasen Back-End Phasen(-anteile), die von Zielsprache abhängen Optimierung, maschinenabhängig Codeerzeugung weitere Symboltabellenoperationen für obige Phasen Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 29 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 30 UNCO-Ansatz Zwischensprache für nur eine Quellsprache Universal Communication Oriented anguage universelle Zwischensprache (Idee ca. 1960): 1 2... n Beispiel Java: Java Byte-Code UNCO 1 2... n Vorteil: viel weniger Übersetzer nötig leider gibt es keine effiziente Sprache UNCO Sprachen zu verschieden Rechner zu verschieden braucht nur einen Übersetzer Java Byte-Code geht 1 2... n aber gute Definition eines Zwischencodes immer noch schwierig Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 31 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 32

äufe vs. Phasen äufe (Pässe): nacheinander ablaufende Teilprogramme des Übersetzers Phasen: funktional unabhängige Teilaufgaben kein Feedback oft mehrere Phasen in einem auf effizienter Beispiel: lexikalische + syntaktische Analyse Puffer für max. ein exem Vorausschau Scanner liefert exem auf Anforderung des Parsers Übersetzerbauwerkzeuge allgemeine Software-Werkzeuge Scanner-Generatoren Parser-Generatoren syntaxgesteuerte Übersetzungsmaschinen Parse-Baum Zwischencode automatische Codegeneratoren Datenflußmaschinen Datenflußanalyse für Codeoptimierung lex yacc Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 33 Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 34 Inhalte der Vorlesung 1.Einführung 2.exikalische Analyse 3.Der Textstrom-Editor sed 4.Der Scanner-Generator lex (2 Termine) 5.Syntaxanalyse und der Parser-Generator yacc (3 T.) 6.Semantische Analyse 7.Transformation und Code-Erzeugung (?) 8.Übersetzungssteuerung mit make Übersetzergenerierung Überblick & Einführung Jan Bredereke, Universität Bremen 35