Seminar Übersetzung künstlicher Sprachen im SS 2009 Marco A. Castillo Syntaxgerichtete...

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

Transcript of Seminar Übersetzung künstlicher Sprachen im SS 2009 Marco A. Castillo Syntaxgerichtete...

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