Compiler. Kapitel. Syntaktische Analyse. Kapitel 4. Folie: 1. Syntaktische Analyse. Autor: Aho et al.

Ähnliche Dokumente
Programmiersprachen und Übersetzer

Theorie der Informatik

Formale Sprachen und Grammatiken

2.11 Kontextfreie Grammatiken und Parsebäume

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Theoretische Informatik I

Theoretische Informatik I

Mathematische Grundlagen der Informatik 2

Theoretische Grundlagen der Informatik

Grundbegriffe der Informatik

Sprachen/Grammatiken eine Wiederholung

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Grundbegriffe der Informatik

Grundbegriffe der Informatik

Grammatiken. Einführung

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1

7. Formale Sprachen und Grammatiken

IT-Basics 2. DI Gerhard Fließ

Formale Sprachen, reguläre und kontextfreie Grammatiken

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Grundbegriffe der Informatik

Kapitel 2. Methoden zur Beschreibung von Syntax

Einführung in die Informatik Grammars & Parsers

Was ist ein Compiler?

Vorlesung Theoretische Informatik

Wortproblem für kontextfreie Grammatiken

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

Java Kurs für Anfänger Einheit 5 Methoden

1 Mathematische Grundlagen

Grundlagen der Theoretischen Informatik

Informatik IV Theoretische Informatik: Formale Sprachen und Automaten, Berechenbarkeit und NP-Vollständigkeit

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Was bisher geschah: Formale Sprachen

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Formale Sprachen. Der Unterschied zwischen Grammatiken und Sprachen. Rudolf Freund, Marian Kogler

Sprachbeschreibung und Erweiterung

Excel Funktionen durch eigene Funktionen erweitern.

Kontrollstrukturen - Universität Köln

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

TheGI 1: Grundlagen und algebraische Strukturen Prof. Dr.-Ing. Uwe Nestmann Februar Schriftliche Leistungskontrolle (EK)

SWE1 / Übung 2 ( )

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

1 Syntax von Programmiersprachen

Einführung in die Theoretische Informatik

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Grundlagen der Theoretischen Informatik, SoSe 2008

Zeichen bei Zahlen entschlüsseln

Programmierkurs Java

Grammatiken in Prolog

Informatik I WS 07/08 Tutorium 24

Theoretische Grundlagen des Software Engineering

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Wenn Russland kein Gas mehr liefert

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Binäre Bäume Darstellung und Traversierung

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

WS 2009/10. Diskrete Strukturen

Theoretische Grundlagen des Software Engineering

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

Nicht über uns ohne uns

Java Einführung Operatoren Kapitel 2 und 3

Antrag für ein Schlichtungs-Verfahren

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Beispiel 19. December 4, 2009

teischl.com Software Design & Services e.u. office@teischl.com

Was ist Sozial-Raum-Orientierung?

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

Was meinen die Leute eigentlich mit: Grexit?

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Anleitung zur Erstellung und Bearbeitung von Seiten in Typo3. Typo3. Anleitung. Wenpas Informatik

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie

Grundlagen der Künstlichen Intelligenz

RDF und RDF Schema. Einführung in die Problematik Von HTML über XML zu RDF

Einführung in die Computerlinguistik

Die Invaliden-Versicherung ändert sich

Programmieren I. Formale Sprachen. Institut für Angewandte Informatik

Die Post hat eine Umfrage gemacht

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany Stammbaum. Stammbaum. Stammbaum

Kapiteltests zum Leitprogramm Binäre Suchbäume

Brückenkurs Mathematik, THM Friedberg,

Formale Sprachen und deren Grammatiken. Zusammenhang mit der Automatentheorie.

Quelltextähnlichkeit

Formale Grundlagen der Informatik 1 Kapitel 12 Zusammenfassung

Einführung in die Computerlinguistik

Prolog basiert auf Prädikatenlogik

Algorithmen mit Python

Grammatiken und die Chomsky-Hierarchie

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Primzahlen und RSA-Verschlüsselung

Suchen und Sortieren Sortieren. Heaps

Theoretische Informatik

Übungsaufgaben zu XML:

Jeder in Deutschland soll ab Mitte 2016 ein Konto eröffnen können.

Kapitalerhöhung - Verbuchung

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Transkript:

Folie: 1 Kapitel 4

Übersicht

Übersicht

Syntax: Definition 4 syn-tax: the way in which words are put together to form phrases, clauses, or sentences. Webster's Dictionary Die Syntax (griechisch σύνταξις ['sʏntaksɪs] - die Zusammenstellung) behandelt die Muster und Regeln, nach denen Wörter zu größeren funktionellen Einheiten wie Phrasen (Teilsätze) und Sätzen zusammengestellt und Beziehungen wie Teil-Ganzes, Abhängigkeit etc. zwischen diesen formuliert werden (Satzbau). Wikipedia

Natürliche Sprache Folie: 5 thisissometextwithoutspacesandpunctuationmarkswhichist hereforequitedifficulttoreadbyhumanslexicalanalysiswillbre akthistextupintowordswhiletheparsingphasewillextractthegr ammaticalstructureofthetext this is some text without spaces and punctuation marks which is therefore quite difficult to read by humans lexical analysis will break this text up into words while the parsing phase will extract the grammatical structure of the text This is some text without spaces and punctuation-marks which is therefore quite difficult to read by humans. Lexical-analysis will break this text up into words while the parsing-phase will extract the grammatical structure of the text.

Mehrdeutigkeit / Analyse The boy saw the man with the telescope. Folie: 6

Mehrdeutigkeit / Analyse Folie: 7 The boy saw the man with the telescope. Subjekt Prädikat Objekt The boy saw the man with the telescope. Subjekt Prädikat Objekt Adverbial The boy saw the man with the telescope Wie kann man die Interpreta9onen darstellen und unterscheiden?

Wie soll die Syntax einer Programmier sprache beschrieben werden? Beispiel: If Then Else Anweisung Folie: 10

Deutsche Grammatik Folie: 11 1. Satzbauplan Hauptsatz Der 1. Satzbauplan hat die Reihenfolge: Subjekt finitives Prädikat indirektes Objekt direktes Objekt Adverbien Prädikatrest Die Satzverneinung steht vor dem Prädikatrest. Beispiel: der Verkäufer hatte seinem Kunden das Buch gestern in seinem Laden (nicht) gegeben. Quelle: Wikipedia.de

Sample: Part of Pascal Syntax Source: TML Systems, TML Pascal User s Guide and Reference Manual 12

C Python 13 Source: Harbison, Steele: C A Reference Manual Source:O Reilly, Python Pocket Reference

Syntax Analyse: Übersicht 14 Beschreibung der syntaktischen Struktur von Programmen kontext freie Grammatiken (kfg) beschreiben: Zuweisungen, Tests,, Programme Erkennen der syntaktischen Struktur ( parsing ) Top-Down parsing (LL(1)) Bottom-Up Shift/reduce parsing (LR(1)) yacc/sablecc/... Werkzeuge

Warum studieren wir Parsing? Essenziell für die semantische Analyse 15 Viele andere Anwendungen: Natural Language Understanding theoretische Informatik...

Wiederholung: Formale Sprachen Folie: 16 Alphabet Σ: endliche Menge von Symbolen {0,1}, {a,b,c,,z}, Ascii,... String (Wort): endliche Folge von Symbolen Σ 101, helloworld, if a=0 then a:= b Sprache = abzählbare Menge von Strings Primzahlen im Binärformat, English, Java Programme Lexeme für ein Token!! Identifier : {a,b,,foo,,x_3,...}

Anwendung der formalen Sprachen 17 Beim Lexing: Zuordnung zu Token Klassen L(num) = { 0, 1, 2, 3,, 10, 11, } L(id) = { a, b,, a1, a2,, aa, ab, } Σ = Ascii oder Unicode Beim Parsing: Zuordnung zu grammatischen Konstrukten L(assignment) = { id = id, id = num, id = id +id, id = id+num, id = num+id, } Σ = Token (oder Ascii/Unicode wenn kein Lexing)

Alphabete 18

Beschreibung der Sprachen I 19 Aufzählung if n == ((x+2)*3) then return 0 else. Beispiel: Arithmetische Ausdrücke über natürliche Zahlen mit +,*, (, ): {0,1,2,3,,0+0,0+1,0+2,,1+0,1+1,1+2,, 0*0, 0*1, 0*2,, 0+0+0, 0+0+1, 0+0*0, 0+0*1, 0+0*2,. 0*0+0, 0*0+1,, 1*0+0, 1*0+1, (0+0),(0+1),(0+2),,(1+0),(1+1),(1+2),, (0*0), (0*1), (0*2),, (0+0)+0, (0+0)+1, } Können wir reguläre Ausdrücke verwenden?

Beschreibung der Sprachen II 20 Reguläre Ausdrücke: a, ε, M N, MN, M * Beispiel: Arithmetische Ausdrücke über natürliche Zahlen mit +,*, (, ): Nat = 0 [1-9][0-9] * Ex = Nat (( + * ) Nat) * {0,1,2,3, } Mit Klammern? {0,,0+0,,0*0,...}

Quiz: Ein einfacheres Problem (or Who wants to be a millionaire?) Beschreiben Sie die Sprache { ab, aabb, aaabbb, } mit einem regulären Ausdrück Unmöglich! Das Gleiche gilt für: Korrekt geklammerte Ausdrücke ( ( ) ) Korrekt geschachtelte Schleifen, Reguläre Ausdrücke reichen zum Parsen nicht aus

Erklärung 22 Beschreibung von { (), (()), ((())), } mit einem regulären Ausdruck: unmöglich! Warum: Regulärer Ausdruck endlicher DFA DFA: Zustände haben keinen Speicher 1 ( 2 ( ❸ ) 4 5 ) ) ❻ ( ➆ ➇ ) )...... Wir brauchen - Speicher oder - unendlich viele Zustände

Klammern Problem x := (a+b)*2; x := (a+b*2; û ü if x>2 then return x*x else return 0; ü if x>2 then return x*x if û y>2; else return 0 then return x*x; û kontextfreie Grammatiken (Rekursion)

Bausteine von kontextfreien Grammatiken 24 N = Menge von Nichtterminalen T = Menge von Terminalen Startsymbol S N Menge P von Produktionen der Form: s 0 s 1 s k mit s 0 N, s i T N, k 0 Notation: s 0 α 1 α k bezeichnet {s 0 α i 1 i k}

Beschreibung der Sprachen IV Beispiel: Arithmetische Ausdrücke über Bezeichner id mit +,*, (, ): 25 Version1: N={E}, S=E, T = {id,+,*, (, )} Version 2: N={E,T,F}, S=E, T = {id,+,*, (, )}

Wo sind die Grammatiken? 26

Grammatiken: wo? 27

Wo sind die Grammatiken? 28

Folie: 29 Wo ist die kfg? Deutsche Grammatik 1. Satzbauplan Hauptsatz Der 1. Satzbauplan hat die Reihenfolge: Subjekt finitives Prädikat indirektes Objekt direktes Objekt Adverbien Prädikatrest Die Satzverneinung steht vor dem Prädikatrest. Beispiel: der Verkäufer hatte seinem Kunden das Buch gestern in seinem Laden (nicht) gegeben. Quelle: Wikipedia.de

Ableitungsschritt (Ableitung in einem Schritt) 30 1. Sei A γ eine Produktion 2. Sei αaβ ein String über N T 3. Dann schreiben wir: αaβ αγβ Beispiel: E (E) (id)

Ableitungen und Satzform Definition von * (Ableitung in beliebig vielen Schritten): 31 Wenn S * α gilt, wobei S das Startsymbol von G ist, ist α eine Satzform von G

Ableitungen und Sprache Definition von *: 32 1. Von Grammatik G erzeugte Sprache: L(G) = {w T* S * w} 2. Zwei Grammatiken mit derselben Sprache: werden äquivalent genannt

Die Chomsky Hierarchie 33 Type 3: Reguläre Sprachen reguläre Ausdrücke, endliche Automaten Type 2: kontextfreie Sprachen kfg s, Kellerautomaten Type 1: kontextsensitive Sprachen CSG s ( AB AC, CB CD), LBA s Type 0: rekursive aufzählbare Sprachen Turingmaschine {a n b n c n n>1}: Typ 1 nicht Typ 2, {a n b n n>1}: Typ 2 nicht Typ 3

Reguläre Ausdrücke kfg (a b)*abb Folie: 34

Quiz Ex id (Ex) Ex + Ex Ex * Ex T = {id,(,),+,*}, N = {Ex}, S = Ex Finden Sie (falls möglich) von Ex aus Ableitungen für: id+id*id (id+ (+id) 35

Ex id (Ex) Ex + Ex Ex * Ex Lösung Ex Ex + Ex id+ Ex id+ Ex * Ex id+ id* Ex id+ id* id Ex Ex + Ex Ex + Ex * Ex Ex + Ex * id Ex + id* id id+ id* id Ex Ex * Ex Ex + Ex * Ex id+ Ex * Ex id+ id* Ex id+ id* id Links- Ableitung alle Strings: Satzformen der Grammatik Rechts- Ableitung andere Links- Ableitung 36

Links- und Rechtsableitungen 37 Sei A γ eine Produktion Linksableitungen: αaβ lm αγβ wenn αaβ αγβ und α T* Rechtsableitungen: αaβ rm αγβ wenn αaβ αγβ und β T*

Parsebäume 38 Grafische Darstellung einer Ableitung filtert heraus in welcher Reihenfolge Produktionen eingsetzt wurden: kein Unterschied zwischen Links- und Rechtsableitungen

Parsebäume S asbsc ε S 39 Blätter: a Terminale oder Nichtterminale Grenze: erzeugte Satzform Innere Knoten: Nichtterminale Kinder: geordnet, jedes Kind wird durch eine Produktion vom Vater erhalten Wurzel: Startsymbol S ε S b ε S c

Parsebäume Ex Nat (Ex) Ex + Ex Ex * Ex Ex Ex Ex + Ex Nat Ex + + Ex Ex Nat Ex + + Ex Ex * Ex * Ex Nat Ex + + Nat Ex * Ex Nat Nat Ex + + Nat Nat * Nat * Nat Nat + Nat * Nat Ex Ex + Ex Nat Ex * Nat Ex Nat Rechtsableitun g: gleicher Blätter: erzeugter String Nat + Nat * Nat 40

Folge von Parse-Bäume Folie: 41

Was ist Parsing 42 E num E CFG E+E G E (E) Token String s Parser s L(G) Error No Message Yes Parsebaum für S in G

Was ist Parsing II 43 E num E CFG E+E G E (E) Token String s num + num + num Parser s L(G) E Error No Message Yes Parsebaum + num für S in G num E + E num

Was ist Parsing III 44 E num E CFG E+E G E (E) Token String s (num + num Parser s L(G) Missing Error No ) Message on line 1 Parsebaum Yes für S in G

Ex Nat (Ex) Ex + Ex Ex * Ex Mehrdeutige Grammatiken mehrdeutig: falls es für einen String 2 verschiedene Parsebäume gibt: 45 Ex Nat + Nat * Nat Ex Ex + Ex Ex * Ex Nat Ex * Ex Ex + Ex Nat Nat Nat Nat Nat Nat + (Nat * Nat) (Nat + Nat) * Nat

Eliminieren von Mehrdeutigkeiten S ab at T b btc Folie: 46

Eliminieren von Mehrdeutigkeiten Folie: 47 if E 1 then if E 2 then S 1 else S 2

Eliminieren von Mehrdeutigkeiten II Folie: 48

Eliminieren von Mehrdeutigkeiten Folie: 49 Sprache verbessern: S if E then S endif S if E then S else S endif if E 1 then if E 2 then S 1 else S 2 if E 1 then if E 2 then S 1 endif else S 2 endif

Eliminieren von Mehrdeutigkeiten III Folie: 50 if E 1 then if E 2 then S 1 else S 2

Zusammenfassung 51 Parsing: Warum, Wann, Was Kontext-freie Grammatiken Jetzt: Bestandteile, Ableitungen,, Parse Bäume, Mehrdeutigkeit Mächtigkeit (im Vergleich zu regulären Ausdrücken) Wie macht man Parsing