Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Übersetzung von künstlichen Sprachen Formale Sprachen und Übersetzer.

Ähnliche Präsentationen


Präsentation zum Thema: "Übersetzung von künstlichen Sprachen Formale Sprachen und Übersetzer."—  Präsentation transkript:

1 Übersetzung von künstlichen Sprachen Formale Sprachen und Übersetzer

2 1 Agenda 1.Motivation 2.Formale Sprachen 3.Compiler 4.Compilerentwicklung 5.Ausblick

3 2 Agenda 1.Motivation 2.Formale Sprachen 3.Compiler 4.Compilerentwicklung 5.Ausblick

4 3 Compiler Werkzeug in der Softwareentwicklung Klassische Aufgaben eines Compilers Übersetzung eines Programms aus einer Quellsprache A in eine Zielsprache B Fehlermeldung und Fehlerbehandlung

5 4 Compiler vs. Interpreter Interpreter = direkte Programmausführung Compiler sind schneller und effizienter Kompilierte Programme ohne Compiler ausführbar

6 5 Agenda 1.Motivation 2.Formale Sprachen 3.Compiler 4.Compilerentwicklung 5.Ausblick

7 6 Formale Sprachen Grundlage der systematischen Sprachanalyse Beim Entwurf von Programmiersprachen und bei der Analyse von Programmen eingesetzt Beispiele für formale Sprachen: Programmiersprachen, wie C oder Java Abfragesprachen wie SQL Algebraische Ausdrücke...

8 7 Terminologie Alphabet Ein Alphabet Σ ist eine endliche, nicht leere Menge von Symbolen Wort Ein Wort ω über Σ ist eine endliche Folge von Symbolen aus Σ. Das leere Wort wird mit ε bezeichnet. Σ* ist die Menge aller Worte über Σ Formale Sprache Eine Sprache L ist eine Teilmenge von Σ*

9 8 Terminologie Produktion Eine Produktion P ist eine Vorschrift zur Ersetzung von Wörtern durch andere Wörter Formale Grammatik Eine formale Grammatik G beschreibt Regeln, wie aus einem Alphabet Σ Worte ω einer bestimmten Sprache L gebildet werden

10 9 Formale Grammatiken Eine formale Grammatik G ist ein Vierer-Tupel (N, Σ, P, S): N = Menge der Nichtterminalsymbole Σ = Menge der Terminalsymbole N und Σ sind zueinander disjunkt, es gilt somit N Σ = X := N Σ ist das Totalalphabet P ist die endliche Menge der Produktionen oder Ableitungsregeln S N bezeichnet das Startsymbol Formale Grammatiken erzeugen formale Sprachen Synthese Formale Grammatiken werden zur Sprachanalyse eingesetzt Analyse

11 10 Anwendung von Ableitungsregeln Vorgehensweise : Ausgangspunkt ist das Startsymbol S S gemäß Produktion durch rechte Seite der Produktion ersetzen Falls das resultierende Wort noch Nichtterminalsymbole enthält, Anwendung einer weiteren Produktion Wiederholung so lange, bis das resultierende Wort nur noch Terminalsymbole enthält Beispiel : G = { {A,B}, {a,b}, {P 1 : A a, P 2 : B b}, {AB} } 1.Anwendung von P 1 ω = aB 2.Anwendung von P 2 ω = ab

12 11 Chomsky-Hierarchie 1956 von Noam Chomsky entwickelt Typ-0 Grammatik: Unbeschränkte Grammatik Keinerlei Einschränkungen Typ-1 Grammatik: Kontextsensitive Grammatik P 1 : αAβ αγβ, mit A N, γ X\{ε}, α, β X* P 2 : S ε Terminalsymbole auf der linken Seite einer Produktionsregel erlaubt

13 12 Chomsky-Hierarchie Typ-2 Grammatik: Kontextfreie Grammatik P: A α, mit A N und α X* Terminalsymbole nicht auf der linken Seite einer Produktionsregel erlaubt Definition der syntaktischen Struktur Typ-3 Grammatik: Reguläre Grammatik P 1 : A Bω oder P 1 : A ωB P 2 : A ω, mit A, B N und ω Σ * Definition der lexikalischen Struktur

14 13 Agenda 1.Motivation 2.Formale Sprachen 3.Compiler 4.Compilerentwicklung 5.Ausblick

15 14 Phasen der Übersetzung Lexikalische Analyse Syntaktische Analyse Semantische Analyse Zwischencode-Erzeugung Codeoptimierung Code-Erzeugung Symboltabellenverwaltung Fehlermeldung und Fehlerbehandlung

16 15 Lexikalische Analyse (Scanning) Aufteilung des Stroms von Eingabezeichen in Symbole Überprüfung auf gültige Eingabezeichen Herausfiltern von Leerzeichen und Symbolen Mögliches Beispiel: Ausdruck A = 2*b+6 Bezeichner: A, b Zahlen: 2, 6 Zuweisungssymbol: = Symboltabelle Pluszeichen: + Multiplikationszeichen: * IdSymbolAttribute 1A... 2= 32 4* 5b 6+ 76

17 16 Syntaxanalyse (Parsing) Überprüfung auf syntaktische Korrektheit Konstruktion eines Syntaxbaums aus der Symboltabelle Mögliches Beispiel:

18 17 Semantische Analyse Typüberprüfung Eindeutigkeitsprüfung Gültigkeitsprüfung Erweiterung der Symboltabelle Erweiterung des Syntaxbaums

19 18 Zwischencode-Erzeugung Reduktion der Komplexität des Kompiliervorgangs Erzeugung einer maschinenunabhängigen Form Zwischencode ist portierbar Mögliches Beispiel: Drei-Adress-Code temp 1 := 6 temp 2 : = 2 temp 3 := id 5 * temp 2 temp 4 := temp 3 + temp 1 id 1 := temp 4 IdSymbolAttribute 1A... 2= 32 4* 5b 6+ 76

20 19 Code-Optimierung Auffinden und Beseitigen von Ineffizienzen Benutzung maschinenspezifischer Befehle Elimination von nicht erreichbaren Programmcode Optimierung von Schleifen Einsparung von Maschinenbefehlen Beispiel: temp 1 := id 5 * 2 id 1 := temp 1 + 6

21 20 Code-Erzeugung Erzeugung des finalen Zielcodes Umwandlung der Instruktionen in funktionserhaltende Folgen von Maschinenbefehlen Speicherallokation für die im Programm verwendeten Variablen Mögliches Beispiel: MOV id 5, R1 MUL 2, R1 ADD 6, R1 MOV R1, id 1

22 21 Symboltabellenverwaltung Querschnittsfunktion Symboltabelle = Datenstruktur mit Informationen über Symbole Schnelles Auffinden von Informationen Schnelles Abspeichern von Daten Oftmals Implementierung in Form einer Hash-Tabelle IdSymbolAttribute 1A... 2= 32 4* 5b 6+ 76

23 22 Fehlerbehandlung und -meldung Querschnittsfunktion Fortführung des Kompiliervorgangs nach Auftreten eines Fehlers Großteil der Fehler in den Phasen Syntaxanalyse und semantische Analyse Beispiel: String s = 5;

24 23 Systemumgebung eines Compilers Präprozessor Vorbereitung und Erzeugung der Eingabe Assembler Übersetzung von Assemblersprache in die Zielsprache Lader/Binder Anfordern von Speicherbereichen, Umrechnung von relative in absolute Adressen und Laden des Programms in den Arbeitsspeicher Zusammenstellung des Programms aus einzelnen Programmmodulen

25 24 Werkzeuge Parser-Generatoren Automatische Erzeugung eines Parsers mit Hilfe kontextfreier Grammatiken Scanner-Generatoren Automatische Erzeugung eines Scanners anhand einer Spezifikation Syntaxgesteuerte Übersetzungsmaschinen Automatische Zwischencode-Erzeugung auf Basis eines Syntaxbaums Automatische Code-Generatoren Umwandlung von Zwischencode-Anweisungen in Zielcode Datenflussmaschinen Optimierung des Datenflusses

26 25 Agenda 1.Motivation 2.Formale Sprachen 3.Compiler 4.Compilerentwicklung 5.Ausblick

27 26 Planung eines Compilers Gegebenheiten der Quellsprache Größe der Sprache problematisch!! Ausdehnungsgeschwindigkeit der Sprache Gegebenheiten der Zielsprache Überprüfung auf Korrektheit Überprüfung des Laufzeitverhaltens

28 27 Planung eines Compilers Aspekte der Leistungsfähigkeit Compilergeschwindigkeit Codequalität Fehlerdiagnostik Portabilität Wartungsfreundlichkeit

29 28 Planung eines Compilers Entwicklungsumgebungen und Werkzeuge make-Befehl (UNIX) Profiler Lex Yacc Testen und Wartung Regressions-Tests Code-Kommentierungen Dokumentation

30 29 Bootstrapping Methode zur schrittweisen Compilerentwicklung Darstellungsform: T-Diagramm S = Quellsprache T = Zielsprache/Zielmaschine I = Implementierungssprache C = Compilername SCT I

31 30 Schrittweise Entwicklung mittels Bootstrapping Ziel: Implementierung eines C-Compilers für eine Linux-Maschine Schritt 1: CC1C1 Linux CC2C2 C CC1C1 C 2 programmieren C 1 gegeben

32 31 Schrittweise Entwicklung mittels Bootstrapping Schritt 2: CC2C2 Linux C CC1C1 CC3C3 C 2 durch C 1 kompilieren

33 32 Schrittweise Entwicklung mittels Bootstrapping Schritt 3: CC2C2 Linux C CC1C1 CC3C3 CC4C4 C C 4 programmieren

34 33 Schrittweise Entwicklung mittels Bootstrapping Schritt 4: CC2C2 Linux C CC1C1 CC3C3 CC4C4 C C 4 durch C 3 kompilieren CC5C5 Linux

35 34 Agenda 1.Motivation 2.Formale Sprachen 3.Compiler 4.Compilerentwicklung 5.Ausblick

36 35 Zusammenfassung und Ausblick Compiler übersetzen Programme von einer Quellsprache A in eine Zielsprache B Formale Sprachen bilden die Basis Übersetzungsvorgang umfasst verschiedene Phasen Diverse Programme und Werkzeuge zur Unterstützung Bootstrapping als Methode zur schrittweisen Compilerentwicklung Compiler sind von enormer Bedeutung in der Software-Entwicklung Viele Herausforderungen im Bereich des Compilerbaus noch zu meistern Beispiel: Automatische Übersetzung natürlicher Sprachen

37 36 Ende Fragen ????


Herunterladen ppt "Übersetzung von künstlichen Sprachen Formale Sprachen und Übersetzer."

Ähnliche Präsentationen


Google-Anzeigen