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

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

Embed Size (px)

Citation preview

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

Seminar Übersetzung künstlicher Sprachen im SS 2009

Marco A. Castillo

Syntaxgerichtete Übersetzung und Typüberprüfung

Sommersemester 2009

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

2Seminar Übersetzung künstlicher Sprachen im SS 2009

Agenda

Motivation und Einordnung

Syntaxgerichtete ÜbersetzungSyntaxgerichtete Definition

Auswertungsreihenfolge für syntaxgerichtete Definition

Verfahren zur syntaxgerichteten Übersetzung

Implementierung von L-attributierter syntaxgerichteten Definition

TypüberprüfungDynamische und statische Überprüfung

Typsysteme

Regeln für die Typüberprüfung

Fazit

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

3Seminar Übersetzung künstlicher Sprachen im SS 2009

Motivation und Einordnung

Von der Quellsprache zur Zielmaschine

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

4Seminar Ü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 → E1 + T

Semantikregel

E.code = E1.code|| T.code||‘+‘

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

5Seminar Übersetzung künstlicher Sprachen im SS 2009

Syntaxgerichtete Übersetzung

Attribute in Grammatiken

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

6Seminar Übersetzung künstlicher Sprachen im SS 2009

Syntaxgerichtete Übersetzung

Syntaxgerichtete Definition eines einfachen Taschenrechners

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

7Seminar Übersetzung künstlicher Sprachen im SS 2009

Syntaxgerichtete Übersetzung

Kommentierter Parse-Baum für 3*5+4

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

8Seminar Übersetzung künstlicher Sprachen im SS 2009

Auswertungsreihenfolge für syntaxgerichtete Definitionen

AbhängigkeitsgraphInformationsfluss 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

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

9Seminar Ü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;}

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

10Seminar Ü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; }

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

11Seminar Ü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

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

12Seminar Ü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

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

13Seminar Ü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 9 5 2 + -

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

14Seminar Übersetzung künstlicher Sprachen im SS 2009

Syntaxgerichtete Übersetzungsschemata

S

( 9 – 5) + 2

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

15Seminar Übersetzung künstlicher Sprachen im SS 2009

Syntaxgerichtete Übersetzungsschemata

(9 – 5) + 2

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

16Seminar Übersetzung künstlicher Sprachen im SS 2009

Syntaxgerichtete Übersetzungsschemata

(9 – 5) + 2

99 5 9 5 –9 5 – 2 9 5 – 2 +

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

17Seminar Übersetzung künstlicher Sprachen im SS 2009

Implementierung von L-attributierten syntaxgerichteten Definitionen

Übersetzung beim Durchlaufen eines Parse-BaumesAufbauen und Kommentieren des Parse-Baumes

Aufbauen des Parse-Baumes, Hinzufügen von Aktionen und Ausführen der Aktionen in Postorder

Übersetzung während des ParsernsVerwenden 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-BaumesAufbauen und Kommentieren des Parse-Baumes

Aufbauen des Parse-Baumes, Hinzufügen von Aktionen und Ausführen der Aktionen in Postorder

Übersetzung während des ParsernsVerwenden eines rekursiven absteigenden Parsers

Generieren von Code im laufenden Betrieb

Implementieren einer syntaxgerichteten Übersetzung zusammen mit einem LL-ParserImplementieren einer syntaxgerichteten Übersetzung zusammen mit einem LR-Parser

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

18Seminar Ü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)

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

19Seminar Ü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

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

20Seminar Übersetzung künstlicher Sprachen im SS 2009

TypüberprüfungWas 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

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

21Seminar Ü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.

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

22Seminar Ü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

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

23Seminar Übersetzung künstlicher Sprachen im SS 2009

Typüberprüfung von Ausdrücke

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

24Seminar Übersetzung künstlicher Sprachen im SS 2009

Typüberprüfung von Anweisung

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

25Seminar Ü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.

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

26Seminar Übersetzung künstlicher Sprachen im SS 2009

Fazit

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

27Seminar Übersetzung künstlicher Sprachen im SS 2009

Fazit

TypüberprüfungWichtig, um mögliche Programmfehler fest zu stellen

Statische und dynamische Überprüfung

if <complex test> the 5 else <type error>

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

28Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

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

29Seminar Ü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

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

30Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

Attribut Auswertung

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

31Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

Attributierte LR – Grammatik für Ausdrücke (Infix → Postfix)

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

32Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

Attributierte LL – Grammatik für Ausdrücke (Infix → Postfix)

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

33Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

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

34Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

Typ-Ausdrücke

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

35Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

Grafische Darstellung von Typausdrücke

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

36Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

Syntaxgesteuerte Überprüfung von Typen

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

37Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

Übersetzungsschema für Deklarationen

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

38Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

Übersetzungsschema für Anweisungen

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

39Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

Äquivalenz von Typen

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

40Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup – Folien

Überprüfung der strukturellen Äquivalenz

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

41Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup – Folien

Namensäquivalenz

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

42Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup – Folien

Strukturäquivalenz

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

43Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

Ererbte Attribute - Typdeklarationen

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

44Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

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

45Seminar Übersetzung künstlicher Sprachen im SS 2009

Backup-Folien

Wie kommt man zu einen Übersetzungsschema