Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Seminar Übersetzung künstlicher Sprachen im SS 2009 Marco A. Castillo Syntaxgerichtete Übersetzung und Typüberprüfung Sommersemester 2009.

Ähnliche Präsentationen


Präsentation zum Thema: "Seminar Übersetzung künstlicher Sprachen im SS 2009 Marco A. Castillo Syntaxgerichtete Übersetzung und Typüberprüfung Sommersemester 2009."—  Präsentation transkript:

1 Seminar Übersetzung künstlicher Sprachen im SS 2009 Marco A. Castillo Syntaxgerichtete Übersetzung und Typüberprüfung Sommersemester 2009

2 1 Seminar Übersetzung künstlicher Sprachen im SS 2009 Agenda Motivation und Einordnung Syntaxgerichtete Übersetzung Syntaxgerichtete Definition Auswertungsreihenfolge für syntaxgerichtete Definition Verfahren zur syntaxgerichteten Übersetzung Implementierung von L-attributierter syntaxgerichteten Definition Typüberprüfung Dynamische und statische Überprüfung Typsysteme Regeln für die Typüberprüfung Fazit

3 2 Seminar Übersetzung künstlicher Sprachen im SS 2009 Motivation und Einordnung Von der Quellsprache zur Zielmaschine

4 3 Seminar Übersetzung künstlicher Sprachen im SS 2009 Syntaxgerichtete Übersetzung Syntaxdefinition Kontextfreie Grammatik Beschreibung der hierarchischen Struktur einer Programmiersprache if (Ausdruck) Anweisung else Anweisung stmt → if (expr) stmt else stmt Syntaxgerichtete Definition Kontextfreie Grammatik Grammatiksymbole + Attributen Produktionen + Semantikregeln Produktion E → E 1 + T Semantikregel E.code = E1.code|| T.code||‘+‘

5 4 Seminar Übersetzung künstlicher Sprachen im SS 2009 Syntaxgerichtete Übersetzung Attribute in Grammatiken

6 5 Seminar Übersetzung künstlicher Sprachen im SS 2009 Syntaxgerichtete Übersetzung Syntaxgerichtete Definition eines einfachen Taschenrechners

7 6 Seminar Übersetzung künstlicher Sprachen im SS 2009 Syntaxgerichtete Übersetzung Kommentierter Parse-Baum für 3*5+4

8 7 Seminar Übersetzung künstlicher Sprachen im SS 2009 Auswertungsreihenfolge für syntaxgerichtete Definitionen Abhängigkeitsgraph Informationsfluss zwischen den Attributinstanzen Kanten drücken die durch Semantikregeln auferlegten Einschränkungen aus Abhängigkeitsgraph Informationsfluss zwischen den Attributinstanzen Kanten drücken die durch Semantikregeln auferlegten Einschränkungen aus

9 8 Seminar Übersetzung künstlicher Sprachen im SS 2009 Auswertungsreihenfolge für syntaxgerichtete Definitionen S-attributierte Definition Alle Attribute sind synthetisiert Abhängigkeitsgraph mit zirkulären Bezügen wird nicht zugelassen Auswertungsreihenfolge garantiert Auswertung durch Botton Up Reihenfolge postorder (N) { for (jedes Kind C von N von links aus) postorder (C); fasse Attribute von/mit N zusammen; }

10 9 Seminar Übersetzung künstlicher Sprachen im SS 2009 Auswertungsreihenfolge für syntaxgerichtete Definitionen L-attributierte Definition Zwischen den mit der Produktion verbundenen Attritbuten verlaufen die Kanten im Abhängigkeitsgraphen nur von links nach rechts Attribute sind synthetisiert oder vererbt (eingeschränkt) Vererbte Attribute sind mit dem Regelkopf verbunden Auswertung durch eine Top Down Reihenfolge dfvisit (N) { for (jeden Nachfolger M von N von links nach rechts) werte ererbte Attribute aus; dfvisit (M); werte die synthetisierten Attribute von N aus; }

11 10 Seminar Übersetzung künstlicher Sprachen im SS 2009 Anwendung der syntaxgerichtete Übersetzung Syntaxbaum Verdichteter Parse-Baum Jeder Knoten eines Syntaxbaums stellt ein Konstrukt dar Die Kinder des Knotens repräsentieren die sinnvollen Komponente des Konstrukts Zwischendarstellung

12 11 Seminar Übersetzung künstlicher Sprachen im SS 2009 Syntaxgerichtete Übersetzungsschemata Ergänzende Notation zur syntaxgerichteten Definition Kontextfreie Grammatik mit Programmfragmenten, die in die Produktionsrümpfe eingebettet sind Programmfragmente (semantische Aktionen) können an jeder Stelle eines Produktionsrumpfes erscheinen Auswertungsreihenfolge der semantischen Regeln durch Position gegeben Aktionen werden mit {..} eingeschlossen Verfahren zur syntaxgerichteten Übersetzung Ergänzende Notation zur syntaxgerichteten Definition Kontextfreie Grammatik mit Programmfragmenten die in die Produktionsrümpfe eingebettet sind Programmfragmente (semantische Aktionen) können an jeder Stelle eines Produktionsrumpfes erscheinen. Auswertungsreihenfolge der semantischen Regeln durch Position gegeben Aktionen werden mit {..} eingeschlossen rest → + term {printf (‚+‘}; rest 1

13 12 Seminar Übersetzung künstlicher Sprachen im SS 2009 Syntaxgerichtete Übersetzungsschemata Ausdrücke in Infix-Notation (9-5)+2 oder 9-(5+2) Ausdrücke in Postfix-Notation 9 5 – 5 + oder

14 13 Seminar Übersetzung künstlicher Sprachen im SS 2009 Syntaxgerichtete Übersetzungsschemata S ( 9 – 5) + 2

15 14 Seminar Übersetzung künstlicher Sprachen im SS 2009 Syntaxgerichtete Übersetzungsschemata (9 – 5) + 2

16 15 Seminar Übersetzung künstlicher Sprachen im SS 2009 Syntaxgerichtete Übersetzungsschemata (9 – 5) – 9 5 – – 2 +

17 16 Seminar Übersetzung künstlicher Sprachen im SS 2009 Implementierung von L-attributierten syntaxgerichteten Definitionen Übersetzung beim Durchlaufen eines Parse-Baumes Aufbauen und Kommentieren des Parse-Baumes Aufbauen des Parse-Baumes, Hinzufügen von Aktionen und Ausführen der Aktionen in Postorder Übersetzung während des Parserns Verwenden eines rekursiven absteigenden Parsers Generieren von Code im laufenden Betrieb Implementieren einer syntaxgerichteten Übersetzung zusammen mit einem LL-Parser Implementieren einer syntaxgerichteten Übersetzung zusammen mit einem LR-Parser Übersetzung beim Durchlaufen eines Parse-Baumes Aufbauen und Kommentieren des Parse-Baumes Aufbauen des Parse-Baumes, Hinzufügen von Aktionen und Ausführen der Aktionen in Postorder Übersetzung während des Parserns Verwenden eines rekursiven absteigenden Parsers Generieren von Code im laufenden Betrieb Implementieren einer syntaxgerichteten Übersetzung zusammen mit einem LL-Parser Implementieren einer syntaxgerichteten Übersetzung zusammen mit einem LR-Parser

18 17 Seminar Übersetzung künstlicher Sprachen im SS 2009 Implementierung von L-attributierten syntaxgerichteten Definitionen L-attributierte syntaxgerichtete (LL-Grammatik) Aktionen in den Produktionen eingebettet Übersetzung während der LL-Syntaxanalyse L-attributierte syntaxgerichtete Definitionen und LL-Syntaxanalyse L-attributierte syntaxgerichtete (LL-Grammatik) Aktionen in den Produktionen eingebettet Übersetzung während der LL-Syntaxanalyse Aktionsdatensatz: Enthält einen Zeiger auf ausführbaren Code (meist Auswertung von ererbten Attributen) Synthetisierungsdatensatz: Enthält Anweisungen zur Synthese von Attributen und Aktionen (kopieren der synthetisierten Attribute in andere Datensätze weiter unten im Stack)

19 18 Seminar Übersetzung künstlicher Sprachen im SS 2009 Dynamische und statische Überprüfung Wir unterscheiden zwischen Statischen Überprüfung (während der Kompilierung) Dynamischen Überprüfung (zur Laufzeit) Statische Überprüfung Typüberprüfung Überprüfung der Kontrollflusses Überprüfung auf Eindeutigkeit Auf Namen bezogene Überprüfung Dynamische Überprüfung Dynamische Typüberprüfung ist erforderlich, wenn der Typ von Variablen und Objekten nur zur Laufzeit bestimmt werden kann

20 19 Seminar Übersetzung künstlicher Sprachen im SS 2009 Typüberprüfung Was wird überprüft? Ob Operatoren und Operanden kompatibel sind Welche Programmelemente haben einen Typ? Konstanten Variablen Ausdrücke Parameter Welche Attribute werden durch Typen festgelegt? Werte von Konstanten Wertebereiche / Operationen für Variable, Ausdrücke, Parameter Übergabemechanismus für Parameter Verwendung von Informationen über Typen Ermittlung des Speicherbedarf Erzeugung von Code für die Umwandlung von einem Typ in einen anderen Ermittlung des Resultatttyps

21 20 Seminar Übersetzung künstlicher Sprachen im SS 2009 Typüberprüfung - Beispiele x div y → x, y müssen vom Typ integer sein. array [INDEX] of …. → INDEX muss Ordnungstyp sein. procedure p(formal_1: Typ_1, var formal 2: Typ 2); …… p (aktuell_1, aktuell_2); -aktuell_1 mit formal_1 verträglich? -aktuell_2 mit formal_2 verträglich? -aktuell_2 muss eine Variable sein.

22 21 Seminar Übersetzung künstlicher Sprachen im SS 2009 Typsysteme Was ist ein Typsystem? Ein Typsystem für eine Programmiersprache ist eine Menge von Regeln, die die korrekte Verwendung von Typen im Kontext bestimmen. Für bestimmte Konstrukte muss der Typ gegeben sein (Definition) und für andere kann der Typ aus der Struktur bestimmt werden. Ein Typsystem heißt stark, wenn alle möglichen statischen Typkonflikte zur Übersetzungszeit erkannt werden können. Ein Typsystem besteht aus gewissen Basistypen (Typnamen) und Konstruktoren, mit denen neue Typen aus vorhandenen konstruiert werden können. Mit den Konstruktoren werden Typausdrücke gebildet

23 22 Seminar Übersetzung künstlicher Sprachen im SS 2009 Typüberprüfung von Ausdrücke

24 23 Seminar Übersetzung künstlicher Sprachen im SS 2009 Typüberprüfung von Anweisung

25 24 Seminar Übersetzung künstlicher Sprachen im SS 2009 Fazit Der allgemeine Ansatz für die syntaxgerichtete Übersetzung besteht darin, einen Parser- oder Syntaxbaum zu konstruieren und dann die Werte der Attribute an dem Knoten des Baumes zu berechnen, indem diese Knoten aufgesucht werden. Zwei Notationen möglich Syntaxgerichtete Definition. Sie verbergen viele Implementierungsdetails und befreien den Benutzer von der expliziten Spezifikation der Reihenfolge, in der die Übersetzung stattfindet Übersetzungsschemata legen die Reihenfolge fest, in der die semantischen Regeln auszuwerten sind, daher erlauben sie es, einige Implementierungsdetails zu zeigen.

26 25 Seminar Übersetzung künstlicher Sprachen im SS 2009 Fazit

27 26 Seminar Übersetzung künstlicher Sprachen im SS 2009 Fazit Typüberprüfung Wichtig, um mögliche Programmfehler fest zu stellen Statische und dynamische Überprüfung if the 5 else

28 27 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien

29 28 Seminar Übersetzung künstlicher Sprachen im SS 2009 Implementierung von L-attributierten syntaxgerichteten Definitionen Syntaxgerichtete Übersetzung für while-Anweisungen L-attributierte syntaxgerichtete Definitionen und LL-Syntaxanalyse Syntaxgerichtete Übersetzung für while- Anweisungen

30 29 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien Attribut Auswertung

31 30 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien Attributierte LR – Grammatik für Ausdrücke (Infix → Postfix)

32 31 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien Attributierte LL – Grammatik für Ausdrücke (Infix → Postfix)

33 32 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien

34 33 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien Typ-Ausdrücke

35 34 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien Grafische Darstellung von Typausdrücke

36 35 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien Syntaxgesteuerte Überprüfung von Typen

37 36 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien Übersetzungsschema für Deklarationen

38 37 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien Übersetzungsschema für Anweisungen

39 38 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien Äquivalenz von Typen

40 39 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup – Folien Überprüfung der strukturellen Äquivalenz

41 40 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup – Folien Namensäquivalenz

42 41 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup – Folien Strukturäquivalenz

43 42 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien Ererbte Attribute - Typdeklarationen

44 43 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien

45 44 Seminar Übersetzung künstlicher Sprachen im SS 2009 Backup-Folien Wie kommt man zu einen Übersetzungsschema


Herunterladen ppt "Seminar Übersetzung künstlicher Sprachen im SS 2009 Marco A. Castillo Syntaxgerichtete Übersetzung und Typüberprüfung Sommersemester 2009."

Ähnliche Präsentationen


Google-Anzeigen