Compiler, Übersetzer Allgemeine Erklärung / Definition Ein Übersetzer ist ein Programm, das ein S 1 -Wort den Quelltext in ein S 2 -Wort umwandelt den Zieltext wobei die Semantik erhalten bleibt. Frage: Welche Semantik? Beispiele LaTex-File, wird in ps- oder pdf-datei übersetzt Word-File, wird nach HTML übersetzt XSLT für XML-Dokumente Programme einer Programmiersprache werden nach C übersetzt. P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 1
Compiler für Programmiersprachen Ein Übersetzer (Compiler) ist ein Programm, das ein S 1 -Wort das Quellprogramm in ein S 2 -Wort umwandelt das Zielprogramm mit äquivalenter (operationaler) Semantik. Beispiele Programme einer Programmiersprache: ( Haskell, Java, Python, PASCAL, Assembler) Werden übersetzt nach C, Assembler, oder Maschinenkode Die Ausführung soll korrekt sein! P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 2
Typische Anwendungsfälle für Compiler: Haskell-Programm C Programm Assembler Compiler: S 1 -Programme S 2 -Programme dann S 2 Assembler P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 3
Interpreter Ein Ein Interpreter ist ein Programm, das den Text eines Programms einliest und dann ausführt, i.a. ohne ein Programm in einer anderen Sprache zu erzeugen. Die operationale Semantik einer Programmiersprache entspricht der Spezifikation eines Interpreters. D.h. Erhaltung der Semantik: entspricht: kompiliertes und interpretiertes Programm sind nicht unterscheidbar (bis auf Effizienz) P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 4
T-Diagramme Zweck der T-Diagramme: übersichtliches Zusammenbauen eines Compilers/Interpreters aus anderen T-Diagramm: Programm der Sprache S 1 -Programm S 2 -Programm Übersetzer ist S 3 -Programm Intp : S 3-Programme kann man ausführen. S 1 S 2 S 1 S 2 S 3 S 3 S 3 Intp P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 5
Beispiel: Benutzung der T-Diagramme (1) Zusammensetzen von Compilern Übersetzung von S 1 nach S 2 und dann von S 2 nach S 3 : im Extremfall werden zwei verschiedene Interpreter benötigt S1 S2 S2 S3 S 4 S 5 S4 Intp S5 Intp P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 6
Beispiel: Benutzung der T-Diagramme (2) Zusammensetzen zweier Compiler Man hat Interpreter für S 5, S 6, einen S 4 -Übersetzer von S 1 nach S 2, einen S 6 -Übersetzer von S 4 nach S 5, keinen Interpreter für S 4. Konstruktion eines S 5 -Übersetzer von S 1 nach S 2 das rechteste T-Diagramm ist der resultierende Compiler S1 S2 S1 S2 S4 S4 S5 S5 S6 S5 Intp S6 Intp Die S i müssen nicht alle verschieden sein P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 7
Beispiel: Benutzung der T-Diagramme: Bootstrapping Anwendung: Konstruktion einer (eigenen) Programmiersprache der zugehörige Compiler soll schon in dieser Programmiersprache P geschrieben sein Schritt 1: Schritt 2 Schritt 3 Interpreter/Compiler für einen möglichst kleinen Ausschnitt P CORE in einer gängigen Programmiersprache, Compiler (Transformation) von P L P CORE, geschrieben in P CORE Compiler (Transformation) von P XXL P L, geschrieben in P L (Bootstrapping: wie man sich selbst aus dem Sumpf zieht) P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 8
T-Diagramme zu Bootstrapping PL P COR PL P COR P COR C P COR P COR C C C C C Intp C Intp C Intp Resultat P L C C C Intp P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 9
T-Diagramme zu Bootstrapping (2) Darauf aufbauend, kann man weiter konstruieren: P XXL P L P XXL P L P L C P L P L C C C C C Intp C Intp C Intp P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 10
Formen einer Semantik operationale Semantik: Effekt der Anweisungen als Ausgabe oder im Hauptspeicher. denotationale Semantik: mathematische Bedeutung der Programmkonstrukte. axiomatische Semantik: Logischen Eigenschaften der Programmkonstrukte. Prädikatenlogik / axiomatische Beschreibung der operationalen Semantik (z.b. Axiome von Hoare und Dijkstra) transformationelle Semantik Transformationsregeln in andere Programmkonstrukte. P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 11
Anwendungen des Übersetzens Compiler für höhere Programmiersprachen: Haskell, Java, Lisp, PASCAL, PROLOG, Python, C, Ada, Assemblersprache Maschinenkode operationale Semantik des Prozessors (der Maschinenbefehle) Prozessorspezifisch Da es eine operationale Semantik der Maschinenbefehle des Prozessors gibt, kann man einen Interpreter dazu auf einem anderen Prozessor implementieren, Emulation P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 12
Weitere Anwendungen der Übersetzung Textverarbeitungssprachen, z.b. die Sprache von TeX bzw. LaTeX. Datenaustauschformaten, z.b. EDIF (Electronic Data Interchange Format) Hardwarebeschreibungssprachen, z.b. VHDL (Hardware Description Language) VHSIC: Very High-Speed Integrated Circuit Analysieren und Ausführen von Kommandosprachen usw. P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 13
Phasen eines Compilers Lexikalische Analyse (Scanning): IF 13 == X1 THEN A wird zu: ( IF, 13, ==, X1, THEN, A ) Syntaxanalyse(parsing): IF 13 == X1 THEN A Semantische Analyse Typ-check, Kontextprüfung (z.b. Deklaration vor Verwendung) Zwischencode-Erzeugung: Code für abstrakte Maschine Codeoptimierung: Verbesserung des Zwischencodes. Code-Erzeugung: Programm (i.a. Assembler) für reale Maschine P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 14
Weitere mögliche Komponenten/ Phasen Einleseroutine Zeichenbehandlung. Es gibt Standards der Zeichenkodierung Präprozessor Expansion / Modifikation des Quellprogramms Assembler übersetzt das Assemblerprogramm in Objektcode. Binder/Lader Umsetzung in ausführbaren Maschinenkode plus Hinzunahme von anderem Objektcode z.b aus Bibliothek P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 15
Komponenten zu alle Phasen die Symboltabelle Datenstruktur: wesentlichen Attribute: Typ, Gültigkeitsbereich, Wert,... ) der Bezeichner eines Quellprogramms die Fehlerbehandlung Fehleranalyse, Fehlermeldung, Lokalisierung des Fehlers. Eventuelle automatische Reparatur und Fortsetzung der Übersetzung. P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 16
Front-End / Back-End Zur Unterstützung der Portierbarkeit: Aufteilung in Front-End und Back-End: Front-End: maschinenunabhängiger Teil (z.b. Syntaxanalyse, lexikalische Analyse, Typüberprüfung, Zwischencode-Erzeugung, Zwischencode-Optimierung). Back-End: maschinenspezifischer Teil (z. B. I/O, Codegenerierung) P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 17
Programmiersprache: Syntax Fragestellung: Mit welchem Mechanismus beschreibt man gültige S-Programme? Akzeptiertes (und erfolgreiches) Vorgehen der Informatik: gültige S-Programme (als Text) sind Worte einer formalen Sprache L S Beschreibung einer Obermenge L(G) der formalen Sprache L S mittels einer kontextfreien Grammatik (CFG) G Weitere Einschränkung von L(G) (durch Bedingungen) ergibt L S. P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 18
Andere Möglichkeiten der Beschreibung formaler Sprachen reguläre Ausdrücke kontextfreie Grammatik Syntaxdiagramme kontextsensitive Grammatik Schreiben eines Programms, das alle Wörter erzeugt Schreiben eines Programms, das alle Wörter erkennt P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 19
Kontextfreie Grammatik (CFG) 4-Tupel G = (N, T, P, σ) mit 1 N: endliche Menge von Hilfszeichen (Nonterminals) 2 T endliche Menge von Terminalzeichen (Terminals), wobei N T =. 3 P N (N T ) endliche Menge von Regeln (Produktionen) 4 σ N ist Startzeichen Regeln schreibt man auch A w oder A ::= w. Erzeugte Sprache L(G) = erreichbare Worte über T. P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 20
Allgemeine Grammatiken erlauben beliebige Strings in (N T ) als linke Seite einer Regel. unbeschränkte Grammatik bzw. Semi-Thue-Systeme kontextsensitiv, wenn für alle Regeln: a w nur wenn a w P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 21
Beispiel- CFG für Ausdruck Die Schreibweise ist eine EBNF (extended BNF). Beispiel: Die AZ-Grammatik A ::= A + Z A - Z Z Z ::= 0... 9 P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 22
Herleitungen Definition Sei (G = N, T, P, σ) gegeben v v (direkt hergeleitet) gdw. v = αaβ und v = αwβ, und A ::= w eine Regel in G ist. v 1 v n (v n ist aus v 1 herleitbar) gdw. v 2,..., v n 1 (T N), so dass v 1 v 2... v n 1 v n P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 23
Herleitungen; Sprache zu G Die erzeugte Sprache L(G) zur Grammatik G ist die Menge der Strings w aus Terminalsymbolen, die aus dem Startsymbol σ hergeleitet werden können: L(G) := {w T σ w} P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 24
Beispiel: AZ-Grammatik zu Ausdruck A ::= A+Z A-Z Z Z ::= 0... 9 Startsymbol: A, Nichtterminalsymbole: A, Z Terminalsymbole: {0,..., 9, +, }. Eine Beispiel-Herleitung: A A+Z Z+Z 1+Z 1+2. Somit gilt: A 1+2 Also: 1+2 L(G) P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 25
Rechts- und Linksherleitungen Linksherleitung: Rechtsherleitung: Ersetze stets das linkeste Nichtterminal Ersetze stets das rechteste Nichtterminal Die AA-Grammatik: A ::= A+A A ::= A - A A ::= 0... 9 Linksherleitung: A A+A 1+A 1+2 Rechtsherleitung: A A+A A+2 1+2 P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 26
Herleitungsbaum, Parse-Baum Definition Sei G = (N, T, P, σ) eine kontextfreie Grammatik. Ein Herleitungsbaum, (Parse-Baum) eines Wortes w ist ein markierter Baum, so dass folgendes gilt: 1 Jeder Knoten ist mit einem Element aus {ε} N T markiert. 2 Die Wurzel ist mit σ markiert. 3 Innere Knoten sind mit Nichtterminalen markiert. 4 Wenn ein Knoten die Markierung A (ein Nichtterminal) hat und seine Töchter die Markierungen X 1,..., X k (in dieser Reihenfolge), dann ist A ::= X 1... X k eine Regel in P. 5 frontier(b) = w. D.h. das an den Blättern von links nach rechts repräsentierte Wort ist genau w. P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 27
Es gilt: Eigenschaften von Herleitungsbäumen zu jeder Herleitung eines Wortes gibt es einen zugehörigen Herleitungsbaum. Ein Herleitungsbaum fasst i.a. mehrere Herleitungen eines Wortes der Sprache aus dem Startsymbol zusammen. Jeder mögliche Durchlauf der Knoten, der Väter vor den Söhnen durchläuft, entspricht einer Herleitung. Zu jedem Herleitungsbaum gibt es genau eine Rechtsherleitung und genau eine Linksherleitung. Meist wird die Bedeutung (oder die Übersetzung) eines Programms anhand des Herleitungsbaumes festgelegt. P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 28
Herleitungsbäume Beispiel zu AA-Grammatik A ::= A+A A ::= A - A A ::= 0... 9 Zwei verschiedene Herleitungsbäume für 1-2 + 3 sind: A A - A 1 A + A 2 3 A A + A - A 1 2 A 3 P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 29
Eindeutigkeit einer CFG Definition Eine kontextfreie Grammatik G heißt eindeutig, wenn für alle w L(G) genau ein Herleitungsbaum existiert. Andernfalls heißt die Grammatik mehrdeutig. In einer eindeutigen Grammatik gibt es für jedes Wort in L(G) genau eine Rechts-Herleitung und genau eine Links-Herleitung P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 30
Beispiel zu äquivalenten Grammatiken Die AA-Grammatik ist äquivalent zur AZ-Grammatik Die Sprachen L(G AA ) = L(G AZ ) enthalten genau die Worte: z 1 op 1 z 2... op n z n+1 mit z i {1, 2, 3, 4, 5, 6, 7, 8, 9, 0} und op i {+, -} Aber: haben verschiedene Herleitungsbäume. P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 31
A ::= A+Z A ::= A-Z A ::= Z Z ::= 0... 9 Eindeutige CFG zu A Der einzige (d.h eindeutige) Herleitungsbaum für 1 2 + 3 ist: A A + Z A - Z 3 Z 2 1 P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 32
Eindeutige CFG zu Ausdruck A A + Z A - Z 3 Z 2 1 Die (eindeutige) Links-Herleitung kann man am Syntaxbaum ablesen: A A+Z A-Z+Z Z-Z+Z 1-Z+Z 1-2+Z 1-2+3 P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 33
Syntaxbäume statt Herleitungsbäume Beispiele: + 1 + 2 1 2 IfThenElse IF a THEN b ELSE c a b c P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 34
Semantikfestlegung Semantik eines Wortes wird festgelegt mittels Parsebaum / Syntaxbaum Mehrdeutige Grammatik entspricht i.a. mehrdeutiger (d.h. undefinierter) Semantik Reparatur: Erzeuge äquivalente eindeutige Grammatik Äquivalent bzgl L(.) reicht nicht aus für äquivalente Semantik P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 35
Grammatiktransformation Seien G 1, G 2 eindeutige Grammatiken. Grammatiktransformation G 1 G 2 mit L(G 1 ) = L(G 2 ) I.a.: Parsebaum 1 (w) Parsebaum 2 (w) Erforderlich: Erhaltung der Semantik: Parsebaum 1 (w) G1 Interpreteraktion(w) Parsebaum 2 (w) G2 Interpreteraktion(w) Diese Semantiktransformation wird leider oft ad-hoc von Hand ausgeführt. P raktische Informatik 2, SS 2005, F olien Kap.4, 1, (8. Juni2005) Seite 36