Compiler, Übersetzer. Allgemeine Erklärung / Definition



Ähnliche Dokumente
Programmiersprachen und Übersetzer

Formale Sprachen, reguläre und kontextfreie Grammatiken

2.11 Kontextfreie Grammatiken und Parsebäume

Theoretische Informatik I

Formale Sprachen und Grammatiken

Theoretische Grundlagen der Informatik

Theoretische Informatik I

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Grundbegriffe der Informatik

Grammatiken. Einführung

10 Erweiterung und Portierung

1 Mathematische Grundlagen

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Was ist ein Compiler?

Äquivalente Grammatiken / attributierte Grammatik

Grundlagen der Programmierung 2 (Comp-A)

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Grundlagen der Theoretischen Informatik, SoSe 2008

Theorie der Informatik

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4

Grundlagen der Programmierung 3 A

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Grundlagen der Theoretischen Informatik

Grundbegriffe der Informatik

Formeln. Signatur. aussagenlogische Formeln: Aussagenlogische Signatur

Formale Sprachen. Der Unterschied zwischen Grammatiken und Sprachen. Rudolf Freund, Marian Kogler

IT-Basics 2. DI Gerhard Fließ

Grundlagen der Programmierung 2 (Comp-A)

Terme stehen für Namen von Objekten des Diskursbereichs (Subjekte, Objekte des natürlichsprachlichen Satzes)

Erstellen von x-y-diagrammen in OpenOffice.calc

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

Informatik I Tutorium WS 07/08

Informationsblatt Induktionsbeweis

Grundbegriffe der Informatik

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

Anmerkungen zur Übergangsprüfung

DSL Entwicklung und Modellierung

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Compiler; Übersetzungsprogramme. Grundlagen der Programmierung 3 A. Compiler für Programmiersprachen. Phasen eines Compilers

7. Formale Sprachen und Grammatiken

Theoretische Grundlagen des Software Engineering

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Anleitung über den Umgang mit Schildern

Grammatiken in Prolog

Grundlagen der Programmierung 3 A

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Der Zwei-Quadrate-Satz von Fermat

Kapitel 2. Methoden zur Beschreibung von Syntax

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Logische Folgerung. Definition 2.11

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

Funktionale Programmierung mit Haskell

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Thüringer Kultusministerium. Abiturprüfung 2000

Einführung in. Logische Schaltungen

Data Mining: Einige Grundlagen aus der Stochastik

Arbeiten mit UMLed und Delphi

Kapiteltests zum Leitprogramm Binäre Suchbäume

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

WS 2009/10. Diskrete Strukturen

Übung Theoretische Grundlagen

Beweisbar sichere Verschlüsselung

Programmieren I. Formale Sprachen. Institut für Angewandte Informatik

Zeichen bei Zahlen entschlüsseln

Programmierkurs Java

AutoTexte und AutoKorrektur unter Outlook verwenden

1 topologisches Sortieren

Mathematische Grundlagen der Informatik 2

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen

Konzepte der Informatik

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Aufklappelemente anlegen

7 Rechnen mit Polynomen

Primzahlen und RSA-Verschlüsselung

8. Quadratische Reste. Reziprozitätsgesetz

Übung zum Thema. Abmaße ablesen und Toleranzen berechnen

2. Vorlesung. Slide 40

Software-Engineering SS03. Zustandsautomat

Verkehrsteilnehmer. Beispiel: Wir betrachten die Modellierung von Handlungskomponenten wie Verkehrsteilnehmern und Straßen.

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1

Einführung in die Informatik Grammars & Parsers

3D-Konstruktion Brückenpfeiler für WinTrack (H0)

Semantik von Formeln und Sequenzen

Computeranwendung und Programmierung (CuP)

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Syntax (= Satzgefüge), vgl. auch Grammatik

Grundbegriffe der Informatik

15.3 Bedingte Wahrscheinlichkeit und Unabhängigkeit

Erstellen der Barcode-Etiketten:

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche

Grundlagen der Künstlichen Intelligenz

Transkript:

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