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