Praktikum Compilerbau Sitzung 4 Abstrakter Syntaxbaum

Ähnliche Dokumente
1 Attributierte Grammatiken. 2 Zyklische AG. 3 Codeerzeugung mit AGs. Zusatzfolien Semantische Analyse Wintersemester 2008/09 1 / 28

Praktikum Compilerbau Sitzung 7 libfirm

1 Grammar Engineering. 2 Abstrakte Syntax als abstrakte Algebra. 3 LL(1)-Parser. 4 LR Parser. 5 Fehlerbehandlung. 6 Earley Parser

Kapitel 5: Semantische Analyse

Vorlesung Programmieren

SYNTAXGESTEUERTE ÜBERSETZUNG

Einführung in den Compilerbau

Programmierung 2. Übersetzer: Das Frontend. Sebastian Hack. Klaas Boesche. Sommersemester

Kapitel 4. Attributierte Grammatiken. Attributierte Grammatiken Sommersemester / 66

Praktikum Softwareanalyse und -transformation

Einführung in die Programmiertechnik

Kapitel 4. Attributierte Grammatiken. Attributierte Grammatiken Wintersemester 2009/10 1 / 64

Die Klasse MiniJava ist in der Datei MiniJava.java definiert:

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Compilerbau. Bachelor-Programm. im SoSe Prof. Dr. Joachim Fischer Dr. Klaus Ahrens Dipl.-Inf. Ingmar Eveslage.

Definition Compiler. Bekannte Compiler

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Übersetzergenerierung mit lex und yacc

Programmierkurs Java

Attributierte Grammatiken

Äquivalente Grammatiken / attributierte Grammatik

Programmieren in Java

Zwischencodeerzeugung Compiler II

Der Lehrstuhl Programmierparadigmen

3 Syntax von Programmiersprachen

Allgemeine Hinweise:

Grundlagen der Programmierung 2 (Comp-D)

Konzepte von Programmiersprachen

3 Syntax von Programmiersprachen

Definition von domänenspezifischen Sprachen mit Xtext: Einführung

Praktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom : Monaden als Berechnungsmuster

Pumping-Lemma 2 Pumping-Lemma Sei L eine von einem endlichen Automaten erkannte Sprache. Dann existiert eine natürliche Zahl p N derart, dass jedes Wo

Inhalte der Vorlesung. Wiederholung. Die Phasen der Übersetzung. 1. Einführung

Struktur und Implementierung von Programmiersprachen II. (Compilerbau) WS 2006/2007

Compilerbau für die Common Language Run-Time

Quelltextähnlichkeit

Teil 7: Interpreterbau Prof. Dr. Max Mühlhäuser FG Telekooperation TU Darmstadt

Inhalte der Vorlesung. 6. Syntaxgesteuerte Übersetzung. Attributierter Syntaxbaum. 6. Syntaxgesteuerte Übersetzung

Lex und Yacc Lt. Worf, scannen Sie das Schiff! 300dpi, Sir?

Von der Grammatik zum AST

Kompilerbau Semantische Aktionen & Abstrakte Syntax. Michael Leuschel

EINFÜHRUNG. Maschinenmodell. konkrete Maschine. Interpreter. universelle programmierbare Rechenmaschine:

Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl

FAKULTÄT FÜR INFORMATIK

Zwischencode-Erzeugung. 2. Juni 2009

Prof. Dr. Uwe Schmidt. 12. August Aufgaben zur Klausur Softwaredesign im SS 2014 (BInf v310, BMInf v300, BWInf v310, BWInf- 23)

Inhalte der Vorlesung. 6. Syntaxgesteuerte Übersetzung. 6. Syntaxgesteuerte Übersetzung. Attributierter Syntaxbaum

Der Übersetzungsvorgang

Abstrakte Syntaxbäume

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

Operationen auf Grammatiken

Inhalt Kapitel 11: Formale Syntax und Semantik

Praktikum Compilerbau Sitzung 9 Java Bytecode

Vorname:... Matrikel-Nr.:... Unterschrift:...

Methoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.

Info B VL 1: Einführung p.1

Fachseminar Compilerbau

Übungsstunde 10. Einführung in die Programmierung

Kapitel 8 Vererbung. Korbinian Molitorisz. IPD Tichy Lehrstuhl für Programmiersysteme

Stratego/XT und ASF+SDF Meta-Environment. Paul Weder Seminar Transformationen Datum:

Interpreter - Gliederung

Binärbäume. Prof. Dr. E. Ehses,

Übersetzerbau Cluj-Napoca, Rumänien 2007

Compilerbau. Einführung in Bison

The ACCENT Compiler Compiler. A compiler compiler for the entire class of context-free languages

Lambda-Ausdrücke in Programmiersprachen 76

Kapitel 10 Delegationsvariablen

II.4.5 Generische Datentypen - 1 -

Compilerbau II Skript

7. Syntax: Grammatiken, EBNF

Kapitel 9 Schnittstellen

Grundbegriffe der Informatik Tutorium 12

Grundbegriffe der Informatik Tutorium 11

MiniJava-Sprachbericht Version 3.1

Beuth Hochschule Einführende Gentle-Programme WS12/13, S. 1

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Lexikalische Programmanalyse der Scanner

Fachseminar. Semantische Analyse

Seite 1. ProSeminar Compilerbau

Java für Bauingenieure

Kapitel 06. Klassen und Objekte. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Compilerbau (1 KU) SS 2011

Vortrag. Vortrag im Rahmen der Master-Vorlesung Semantik von Programmiersprachen an der FH München, Fachbereich Informatik

Grammatiken und ANTLR

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

Vorlesung Datenstrukturen

Übersetzergenerierung mit lex und yacc

JavaCC Rainer Schmidberger

Quelltextähnlichkeit

Inkrementelle Modellsichten

9.4 Grundlagen des Compilerbaus

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Compilerbau. Bachelor-Programm. im SoSe Prof. Dr. Joachim Fischer Dr. Klaus Ahrens Dipl.-Inf. Ingmar Eveslage.

Compilerbau. Bachelor-Programm. im SoSe Prof. Dr. Joachim Fischer Dr. Klaus Ahrens Dr. Andreas Kunert Dipl.-Inf.

Formale Sprachen und Automaten

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Transkript:

Praktikum Compilerbau Sitzung 4 Abstrakter Syntaxbaum Prof. Dr.-Ing. Gregor Sneltg Andreas Zwkau IPD Sneltg, Lehrstuhl für Programmierparadigmen KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum der Helmholtz-Gemeschaft www.kit.edu

Letzte Woche Was waren eure Erfahrungen? 2 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Compilerphasen Lexer Tokens Parser AST Semantik attributierter AST Zwischencodeerzeugung Zwischencode Optimierung Zwischencode Codeerzeugung 3 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Aufgaben für diese Woche Entwurf des AST als abstrakte Algebra. Implementierung als reale Datenstrukturen. Anknüpfen der AST-Erzeugung an den Parser. 4 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Was gehört den AST? Semantisch unwichtige Dge können weggelassen werden class Bla { } Program Class(Bla) 5 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Was gehört den AST? Code ist kompositional AST stellt Hierarchie dar Program Class(foo) class Foo { public t bar() { return 2 + 2; } } Method(t,bar) Compound Return + Const(2) Const(2) 6 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Was gehört nicht den AST? Wörter die Konstrukte voneander trennen if ( foo ) { a1(); a2(); } a3(); Compound if... a3... Reference(foo) Compound... a1...... a2... 7 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Was gehört nicht den AST? Wörter die Mehrdeutigkeiten der Hierarchie verhdern Kee Klammern: a (b+c) * Reference(a) + Reference(b) Reference(c) 8 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Syntax als abstrakte Algebra Beispiel: abstrakte Syntax für Expressions und Statements Stmt = IfStmt IfElseStmt WhileStmt Assignment Block... IfStmt :: Expr Stmt IfElseStmt :: Expr Stmt Stmt WhileStmt :: Expr Stmt Block :: Decls StmtList StmtList :: Stmt + Expr = Addop MultOp Var... Assignment :: Var Expr Addop :: Expr Expr Var :: Symbol Multop :: Expr Expr siehe Vorlesung Sprachtechnologie und Compiler 9 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Implementierung abstrakte Syntax Objektorientiert: je 1 Klasse pro syntaktische Kategorie Alternativregeln X = X1 X2... werden zu Unterklassen: class X { /... / } class X1 extends X { /... / } class X2 extends X { /... / } Baumaufbauregeln X :: Y1 Y2 werden zu Konstruktorfunktionen: class X { public X(Y1 y1, Y2 y2) { /... / } } 10 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Tipps Nicht jede Produktion der Grammatik muss e eigener AST-Knoten werden! Gemesame Basisklassen snvoll wo Alternativen der Grammatik vorhanden sd. Statements Expressions Types? ClassMember? 11 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Weitere Fragen Braucht man Verweise auf das Quellprogramm? Warum (nicht)? Was sollte e Attribut werden, was e eigener Knoten im AST? Wie ist das bei Typen oder Bezeichnern? 12 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Beispiel: Taschenrechner mit Attributierter Grammatik Produktion Semantische Regeln 1) L E L.val = E.val 2) E E 1 + T E.val = E 1.val + T.val 3) E T E.val = T.val 4) T T 1 * F T.val = T 1.val F.val 5) T F T.val = F.val 6) F (E) F.val = E.val 7) F digit F.val = digit.lexval 13 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Attributierter Parsebaum für 3 * 5 + 4 L.val = 19 E.val = 19 E.val = 15 + T.val = 4 T.val = 15 F.val = 4 T.val = 3 * F.val = 5 digit.lexval = 4 F.val = 3 digit.lexval = 5 digit.lexval = 3 14 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Implementierung Attributierter Grammatiken ererbte Attribute werden zu Parameter synthetisierte Attribute werden zu Rückgabewerten 15 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

AST-Aufbau für LL(1)-Beispielgrammatik Produktion Semantische Regeln 1) E T E E. = E. E. = T. 2) E ε E. = E. 3) E 1 + T E E 2 2. = new Node(+, E., T.) 1 E 1. = E 2. 4) T F T T. = T. T. = F. 5) T ε T. = T. 6) T 1 * F T T 2 2. = new Node(*, T., F.) 1 T 1. = T 2. 7) F F. = new Leaf(,.entry) 8) F ( E ) F. = E. 16 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

AST für a b c E T E F T ε F T F T * * ε Defition von a Defition von b Defition von c 17 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

AST für a b c E T E F T ε F T F T * * ε Defition von a Defition von b Defition von c 17 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

AST für a b c E T E F T ε F T F T * * ε Defition von a Defition von b Defition von c 17 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg

Feedback! Fragen? Probleme? Wie läuft die Arbeitseteilung? Anmerkungen? Probleme? Fragen? 18 7. November 2012 Andreas Zwkau Abstrakter Syntaxbaum IPD Sneltg