Hallo Welt für Fortgeschrittene Parsen
|
|
- Benedikt Diefenbach
- vor 6 Jahren
- Abrufe
Transkript
1 Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter 30. April 2014 Informatik 2 Programmiersysteme Martensstraße Erlangen
2 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform (CNF) Parsing Methoden Bottom-Up-Parsing Cocke-Younger-Kasami Algorithmus (CYK) Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser (RDP) Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 2
3 Einführung Parsen Definition Unter Parsen versteht man die Zerlegung und Umwandlung einer beliebigen Eingabe in ein für die Weiterverarbeitung brauchbares Format. Beispiele HTML-Parser im Browser Syntaxanalyse im Compiler von Programmiersprachen Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 3
4 Einführung Compiler Funktionsweise eines Compilers: Analysephase Lexikalische Analyse (Zerteilung des Textes in Token) Syntaktische Analyse (Parsen) Validierung des Quellcodes bezüglich Sprachsyntax Umwandlung in Syntaxbaum und Analyse Fehler, falls Code nicht den Regeln der Sprache genügt Semantische Analyse (Überprüfung weiterer Bedingungen) Synthesephase Zwischencodeerzeugung Programmoptimierung Codegenerierung Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 4
5 Einführung Compiler Definition Bei der syntakischen Analyse muss das Wortproblem, also die Frage, ob ein Wort Element einer Sprache ist, gelöst werden. Für den Compiler bedeutet das, er muss herausfinden, ob der Quelltext den Regeln der entsprechenden Grammatik folgt, also der Syntax der Programmiersprache entspricht. Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 5
6 Einführung Compiler Syntaxbaum zu: : * * Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 6
7 Einführung Compiler Syntaxbaum zu: : * * Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 7
8 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform (CNF) Parsing Methoden Bottom-Up-Parsing Cocke-Younger-Kasami Algorithmus (CYK) Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser (RDP) Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 8
9 Theoretische Grundlagen Grammatiken im Allgemeinen Eine formale Grammatik, Σ,, besteht aus V: endliche, nichtleere Menge von Variablen Σ: endliche, nichtleere Menge von Terminalen S: Startsymbol P: endliche Menge von Produktionen für die gilt: \ Σ also der Menge von Ableitungsregeln für die gilt: A besteht aus mindestens einer Variablen und optionalen Terminalen B besteht aus beliebig vielen Variablen und Terminalen Allgemeinste Form: Chomsky-0-Grammatik Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 9
10 Theoretische Grundlagen Chomsky Hierarchie Hierarchische Klassifikation von Grammatiken, erstmals 1956 durch Noam Chomsky beschrieben Ordnungsrelation der Hierarchie: Grad der Einschränkung für die Form zulässiger Produktionen Quelle: wikipedia.de Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 10
11 Theoretische Grundlagen Chomsky Hierarchie Übersicht der Grammatikhierarchien Chomsky-0 Mächtigkeit Chomsky-2 Chomsky-1 Chomsky-3 Implementierungsaufwand / Laufzeitkomplexität Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 11
12 Theoretische Grundlagen Chomsky Hierarchie Grammatik, Σ,, Chomsky-0 oder rekursiv aufzählbar: keine weiteren Einschränkungen Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 12
13 Theoretische Grundlagen Chomsky Hierarchie Grammatik, Σ,, Chomsky-0 oder rekursiv aufzählbar: keine weiteren Einschränkungen Chomsky-1 oder kontextsensitiv: : Erweiterung: Produktionsregel erlaubt, wenn nie auf rechter Seite einer Produktion vorkommt Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 13
14 Theoretische Grundlagen Chomsky Hierarchie Grammatik, Σ,, Chomsky-0 oder rekursiv aufzählbar: keine weiteren Einschränkungen Chomsky-1 oder kontextsensitiv: : Erweiterung: Produktionsregel erlaubt, wenn nie auf rechter Seite einer Produktion vorkommt Chomsky-2 oder kontextfrei: Auf der linken Seite darf nur eine Variable stehen Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 14
15 Theoretische Grundlagen Chomsky Hierarchie Grammatik, Σ,, Chomsky-0 oder rekursiv aufzählbar: keine weiteren Einschränkungen Chomsky-1 oder kontextsensitiv: : Erweiterung: Produktionsregel erlaubt, wenn nie auf rechter Seite einer Produktion vorkommt Chomsky-2 oder kontextfrei: Auf der linken Seite darf nur eine Variable stehen Chomsky-3 oder regulär: Alle Produktionsregeln haben die Form: (rechtsregulär) oder (linksregulär) Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 15
16 Theoretische Grundlagen Chomsky Hierarchie Grammatik, Σ,, Chomsky-2 oder kontextfrei: Auf der linken Seite darf nur eine Variable stehen Fokus des Vortrags liegt auf kontextfreien Grammatiken Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 16
17 Theoretische Grundlagen Beispiel Beispiel für eine kontextfreie Grammatik:, Σ,, mit,, Σ 1,2,3,4,, besteht aus: Diese Grammatik erzeugt Terme mit den Zahlen 1 bis 4, die nach der Punkt-vor-Strich -Regel auswertet werden. Klammerung ist auch möglich. Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 17
18 Theoretische Grundlagen ANTLR Demo ANTLR Demo Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 18
19 Theoretische Grundlagen Chomsky-Normalform Für die Anwendung bestimmer Algorithmen, muss die Grammatik in einer Normalform vorliegen. Für CYK: Chomsky-Normalform Definition: Chomsky-Normalform (CNF) Eine kontextfreie Grammatik ist in Chomsky-Normalform, wenn jede Regel einer der folgenden Formen entspricht: wobei,, \ und Σ. Zu jeder kontextfreien Grammatik kann eine Grammatik in CNF konstruiert werden. Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 19
20 Theoretische Grundlagen Chomsky-Normalform Algorithmus zur Umformung einer kontextfreien Grammatik in Chomsky-Normalform Schritt 1: Mischproduktionen aus Terminalsymbolen und Variablen vereinheitlichen Schritt 2: Maximallängen der rechten Seiten begrenzen Schritt 3: -Produktionen eliminieren Schritt 4: Anzahl der Kettenregeln minimieren Schritt 5: Reduzieren der CNF Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 20
21 Theoretische Grundlagen Chomsky-Normalform Schritt 1: Mischproduktionen aus Terminalsymbolen und Variablen vereinheitlichen Rechte Seiten enthalten entweder: mehrere Symbole aus oder ein Symbol aus Σ Minimalbeispiel: Einführung einer Substitutionsproduktion: Ersetze durch in : Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 21
22 Theoretische Grundlagen Chomsky-Normalform Schritt 2: Maximallängen der rechten Seiten begrenzen Alle rechten Seiten dürfen maximal die Länge 2 haben Minimalbeispiel: Einführung von Substitutionsproduktionen: Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 22
23 Theoretische Grundlagen Chomsky-Normalform Schritt 3: -Produktionen eliminieren Elimination aller Regeln der Form Erweiterung aller Regeln, die auf der rechten Seite enthalten, mit Produktionen ohne Minimalbeispiel:,,, wird umgeformt zu:,,, Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 23
24 Theoretische Grundlagen Chomsky-Normalform Schritt 4: Anzahl der Kettenregeln minimieren Entfernung von unötigen Regeln der Art durch Auffinden von Zyklen in den Produktionsregeln der Grammatik Ersetze in jedem Zyklus alle zugehörigen Variablen durch genau eine davon ( muss dabei erhalten bleiben) Ersetze alle jetzt noch übrige Kettenregeln durch die Regel: alle rechten Seiten (verodert) Minimalbeispiel: Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 24
25 Theoretische Grundlagen Chomsky-Normalform Schritt 5: Reduzieren der CNF Entfernen von unerreichbaren Variablen: Alle Variablen, die vom Startsymbol aus nie erreicht werden können, heißen unerreichbar. Das Entfernen von allen Regeln, deren linke Seite eine unerreichbare Variable ist, geschieht, ohne die Sprache selbst zu verändern. Entfernen von unproduktiven Variablen: Alle Variablen, deren Anwendung nie zu einem Wort der Sprache führen kann, heißen unproduktiv. Entferne alle Regeln, die eine oder mehrere dieser Variablen (auf rechter und/oder linker Seite) enthalten. Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 25
26 Theoretische Grundlagen Chomsky-Normalform Zusammenfassung Algorithmus zur Umwandlung einer kontextfreien Grammatik in die Chomsky-Normalform wurde erarbeitet In dieser Grammatik exisitieren jetzt nur noch Regeln der Form: Grundlage geschaffen für effiziente Algorithmen zur Lösung des Wortproblems Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 26
27 Wozu korrekte Grammatik sonst noch nützt Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 27
28 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform (CNF) Parsing Methoden Bottom-Up-Parsing Cocke-Younger-Kasami Algorithmus (CYK) Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser (RDP) Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 28
29 Parsing Methoden Übersicht (Auswahl) Bottom-Up Parsing ausgehend von einem gegebenen Wort wird geprüft, ob es Teil der Sprache sein kann Beispiel: CYK-Algorithmus Top-Down Parsing ausgehend vom gegebenen Startsymbol wird versucht, mit den Produktionsregeln der Grammatik auf das zu validierende Wort zu kommen Beispiel: Rekursiver Abstiegsparser Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 29
30 Parsing Methoden Der CYK Algorithmus Der Cocke-Younger-Kasami Algorithmus Grammatik muss in CNF vorliegen effiziente Möglichkeit zur Lösung des Wortproblems Laufzeit: Speicherbedarf: mit und Wortlänge Menge der Produktionen Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 30
31 Parsing Methoden Der CYK Algorithmus Kerngedanken des Algorithmus Ein Wort kann aus hergeleitet werden, wenn es eine Regel gibt, mit deren Hilfe man aus das Teilwort das Teilwort herleiten kann TAFEL Einzelne Terminale können direkt hergeleitet werden Betrachte alle Möglichkeiten zur Herleitung von wenn aus herleitbar ist, dann ist Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 31
32 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 32
33 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 33
34 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 34
35 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 35
36 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 36
37 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 37
38 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 38
39 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 39
40 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 40
41 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 41
42 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 42
43 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 43
44 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 44
45 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 45
46 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 46
47 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 47
48 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 48
49 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 49
50 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 50
51 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 51
52 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 52
53 Parsing Methoden Der CYK Algorithmus Beispiel: Löse das Wortproblem für: Betrachte folgende Grammatik: b a b a b, Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 53
54 Parsing Methoden Der CYK Algorithmus Pseudocode CYK Algorithmus begin for i:=1 to n do a //Fülle erste Zeile ist eine Produktion und das -te Symbol von ist ; for j:=2 to n do //Über alle Zeilen >1 for i:=1 to n j+1 do //Alle Spalten der Zeile for k:=1 to j 1 do //Diagonale ist eine Produktion, ist in und ist in, } end Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 54
55 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform (CNF) Parsing Methoden Bottom-Up-Parsing Cocke-Younger-Kasami Algorithmus (CYK) Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser (RDP) Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 55
56 Parsing Methoden Top-Down Entgegengesetzter Ansatz zu Bottom-Up Arbeitet von oben nach unten: Zuerst in die Tiefe, dann von links nach rechts werden die Regeln der Grammatik angewendet Grammatik muss frei von Linksrekursionen sein Endlosrekursion Laufzeit ohne backtracking: Laufzeit mit backtracking: Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 56
57 Parsing Methoden Top-Down Übersicht der Top-Down-Parser Operationen: Expand Regel für linkes Ableitungssymbol anwenden, falls es eine Variable ist Scan Ist linkes Ableitungssymbol gleich linkes Eingabesymbol? Backtrack Bei Misserfolg Suche nach Alternativen Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 57
58 Parsing Methoden Top-Down Grammatik: S Frage: Ist Operation: - Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 58
59 Parsing Methoden Top-Down Grammatik: NP S VP Frage: Ist Operation: Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 59
60 Parsing Methoden Top-Down Grammatik: DET NP N S VP Frage: Ist Operation: Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 60
61 Parsing Methoden Top-Down Grammatik: DET NP N S VP Frage: Ist Operation: Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 61
62 Parsing Methoden Top-Down Grammatik: DET NP N S VP Frage: Ist Operation: Scan Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 62
63 Parsing Methoden Top-Down Grammatik: DET NP N S VP Frage: Ist Operation: Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 63
64 Parsing Methoden Top-Down Grammatik: DET NP N S VP Frage: Ist Operation: Scan Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 64
65 Parsing Methoden Top-Down Grammatik: DET NP N V S VP Frage: Ist Operation: Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 65
66 Parsing Methoden Top-Down Grammatik: DET NP N V S VP Frage: Ist Operation: Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 66
67 Parsing Methoden Top-Down Grammatik: DET NP N V S VP Frage: Ist Operation: Backtrack Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 67
68 Parsing Methoden Top-Down Grammatik: DET NP N V S VP Frage: Ist Operation: Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 68
69 Parsing Methoden Top-Down Grammatik: DET NP N V S VP Frage: Ist Operation: Scan Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 69
70 Parsing Methoden Top-Down Grammatik: DET NP N V S VP Frage: Ist Operation: - Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 70
71 Parsing Methoden Top-Down Grammatik: DET NP N V S VP Frage: Ist Operation: Backtrack Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 71
72 Parsing Methoden Top-Down Grammatik: DET NP N S VP Frage: Ist Operation: Backtrack Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 72
73 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Frage: Ist Operation: Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 73
74 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Frage: Ist Operation: Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 74
75 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Frage: Ist Operation: Backtrack Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 75
76 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Frage: Ist Operation: Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 76
77 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Frage: Ist Operation: Scan Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 77
78 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Frage: Ist DET N Operation: Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 78
79 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Frage: Ist DET N Operation: Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 79
80 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Frage: Ist DET N Operation: Backtrack & Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 80
81 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Frage: Ist DET N Operation: Backtrack & Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 81
82 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Frage: Ist DET N Operation: Scan Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 82
83 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Frage: Ist DET N Operation: Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 83
84 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Frage: Ist DET N Operation: Backtrack & Expand Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 84
85 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Frage: Ist DET N Operation: Scan Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 85
86 Parsing Methoden Top-Down Grammatik: DET NP N V S VP NP Antwort: ist DET N Operation: - Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 86
87 Parsing Methoden Top-Down: RDP ICPC relevante Implementierung eines Top-Down-Parsers: Recursive Descent Parser Grammatik der Sprache darf keine Linksrekursionen besitzen Regeln der Form können umgewandelt werden: wird zu neue Grammatik ist rechtsrekursiv! Charakteristikum einer RDP Implementierung: Für jede Produktionsregel wird eine eigene Funktion implementiert Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 87
88 Parsing Methoden Top-Down: RDP Beispielimplementierung eines RDP Zugrunde liegende Grammatik: Vereinfachung: Verzicht auf Backtracking, deshalb: Ist in jedem Schritt die zu verwendende Regel eindeutig bestimmt Erfolgt die Wahl der Regel anhand der Unterscheidung des ersten Zeichens Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 88
89 Parsing Methoden Top-Down: RDP Funktion für : public static boolean S() { // S > A A(); if (pos == len && accept) return true; return false; } Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 89
90 Parsing Methoden Top-Down: RDP Funktion für : public static void A() { // A > abb b if (ismatch('a')) { pos++; B(); B(); } else if (ismatch('b')) { pos++; } else { accept = false; } } Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 90
91 Parsing Methoden Top-Down: RDP Funktion für : public static void B() { // B > a ba if (ismatch('a')) { pos++; } else if (ismatch('b')) { pos++; A(); } else { accept = false; } } Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 91
92 Parsing Methoden Top-Down: RDP RDP-Parser Demo Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 92
93 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform (CNF) Parsing Methoden Bottom-Up-Parsing Cocke-Younger-Kasami Algorithmus (CYK) Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser (RDP) Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 93
94 Ein- und Ausgabe in Java, C und C++ Schema der ICPC Aufgaben: Einlesen von Daten via stdin Daten verarbeiten Ausgabe der Ergebnisse auf stdout Problem bei großen Datenmengen: Effizienz Typische Beispiele aus Aufgaben: Legacy: ~5000 Zeichenketten mit je bis zu 500 Zeichen einlesen UltraQuickSort: Bis zu Integer, '\n' separiert einlesen, verarbeiten und kurze Ausgabe in < 1 Sekunde Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 94
95 Ein- und Ausgabe in Java, C und C++ Einlesen in C, C++ int scanf(const char *format, ); Liest von stdin ohne Beachtung von (' ', '\n', '\t') Datenformat kann mit Parameter: const char *format festgelegt werden (%c: char, %f: float, ) char *fgets(char *s, int size, FILE *stream); Liest bis EOF oder '\n' maximal size chars in den buffer s char *strtok(char *s, chonst char *delim); Buffers s in Token zerlegen delim gibt Trennzeichen vor (z.b. \n\t\r ) Kombination von fgets(3) und strtok(3) fast immer schneller als scanf(3) Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 95
96 Ein- und Ausgabe in Java, C und C++ Einlesen in Java java.io.bufferedreader Liest vom übergebenen character-input stream BufferedReader stdinreader = new BufferedReader( new InputStreamReader(System.in)); java.util.stringtokenizer Zerlegt übergebenen String str in Token StringTokenizer st = new StrinkTokenizer(String str, String delim) Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 96
97 Ein- und Ausgabe in Java, C und C++ Ausgabe in C, C++ int printf(const char *format, ); Gegenstück zu scanf printf( %d %c\n, 1337, 'q'); puts(3),putc(3),putchar(3),fputc(3), fputs(3) Schneller als printf Nur für chars und strings Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 97
98 Ein- und Ausgabe in Java, C und C++ Ausgabe in Java System.out.print(DATA); Variante: System.out.println(DATA); hängt bei jedem Aufruf ein '\n' an DATA Konkatenation via '+'-Operator System.out.println(12 + Uhr +30); DATA kann viele Typen haben: bool, char, java.lang.object, int, double System.out.printf(String format, ); Methode zur Ausgabe formatierter Strings Ähnlich zu printf(3) in C Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 98
99 Ein- und Ausgabe in Java, C und C x 3000 Integer-Matrix einlesen und ausgeben Performancevergleich: (Zeit in Sekunden) Quelle: Vortrag Parsen 2011 Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 99
100 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform (CNF) Parsing Methoden Bottom-Up-Parsing Cocke-Younger-Kasami Algorithmus (CYK) Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser (RDP) Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 100
101 Reguläre Ausdrücke Definition Reguläre Ausdrücke sind Zeichenketten, die der Beschreibung von Mengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dienen. Beschreiben die regulären Sprachen, die sich in der Chomsky- Hierarchie auf der untersten Ebene (3) befinden. Filterkriterium für Strings: Matching auf Basis der Regeln in der RegExp mit dem String Beispiel: String-Klasse in Java String text = 2014 ; if(text.matches( [0 9]+ )) //text is (positive) integer Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 101
102 Reguläre Ausdrücke Weiteres Beispiel: Matcher-Klasse in Java 1. Schritt: Regulären Ausdruck (als String) kompilieren: Pattern p = Pattern.compile(String regexp) 2. Schritt: Matcher-Objekt erzeugen: Matcher m = p.matcher(string input) 3. Schritt: Methoden auf dem Matcher-Objekt: bool matches(): Versucht, kompletten Input zu matchen bool find(): Versucht, nächsten Teilstring zu finden, der auf das Pattern matcht int start(): Liefert den start index des letzten erfolgreichen match Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 102
103 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform (CNF) Parsing Methoden Bottom-Up-Parsing Cocke-Younger-Kasami Algorithmus (CYK) Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser (RDP) Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 103
104 Zusammenfassung Theoretische Grundlagen Grammatiken bzw. formale Sprachen Chomsky-Hierarchie kontextfreie Grammatiken in Chomsky-Normalform: wobei,, \ und Σ Jede kontextfreie Grammatik kann in die CNF umgewandelt werden Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 104
105 Zusammenfassung Algorithmen zur Lösung des Wortproblems Bottom-Up: CYK Ausgehend vom zu untersuchenden Wort Kubisches Laufzeitverhalten: Grammatik muss in CNF vorliegen Top-Down: RDP Ausgehend vom Startsymbol Laufzeit ohne backtracking: Laufzeit mit backtracking: (worst case) Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 105
106 Zusammenfassung Einlesen und Ausgeben mit C, C++ und Java C, C++ Einlesen: sehr schnell fgets() dann strtok() Etwas langsamer: scanf() Ausgabe: am schnellsten putc() (printf() auch gut) Alternativen in C++: cin() und cout() Java Einlesen: langsam Noch langsamer: Ausgabe mit: BufferedReader kombiniert mit StringTokenizer Scanner System.out.print(ln) C, C++ ist im Normalfall wesentlich schneller als Java Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 106
107 Hallo Welt Parsen Fragen? Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 107
108 Hallo Welt Parsen Vielen Dank für die Aufmerksamkeit! Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 108
109 Quellen kontextsensitive-sprachen.htm Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 109
110 Quellen SPRACHEN/Java-Applets/CYK-Algorithmus.html syntaxanalysec.pdf Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 110
111 Quellen &start=0&mc= vktmfpnze#t=575 Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 111
112 Quellen sky.jpg/220px-chomsky.jpg Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 112
113 Überschrift Farbschema (24) Hervorhebung (22) Besondere Akzentuierung Dritte Farbe bei Bedarf Dritte Ebene (20) Vierte Ebene (18) -Fünfte Ebene (18) Beispiel-Legende (20) Auch in Textfeld Arial Linien 2¼ pt Hallo Welt für Fortgeschrittene Parsen Michael Hußnätter Folie 113
Hallo Welt für Fortgeschrittene
Hallo Welt für Fortgeschrittene Parsen Thomas Wehr Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Inhalt Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform
MehrHallo Welt für Fortgeschrittene
Hallo Welt für Fortgeschrittene Parsen Andreas Ruprecht Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie
MehrParsen Hallo Welt! für Fortgeschrittene
Parsen Hallo Welt! für Fortgeschrittene Benedikt Rauh Inhalt Einführung Theoretische Grundlagen Grammatiken und Chomsky-Hierarchie Chomsky-Normalform für kontextfreie Grammatiken Parsen Bottom-Up-Parsing
MehrChomsky-Grammatiken 16. Chomsky-Grammatiken
Chomsky-Grammatiken 16 Chomsky-Grammatiken Ursprünglich von Chomsky in den 1950er Jahren eingeführt zur Beschreibung natürlicher Sprachen. Enge Verwandschaft zu Automaten Grundlage wichtiger Softwarekomponenten
MehrEinführung - Parser. Was ist ein Parser?
Gliederung 1. Einleitung 1.1 Was ist ein Parser? 1.2 Was ist ein tabellengesteuerter TD-Parser? 1. Tabellengesteuerter TD-Parser 2.1 Funktionsweise 2.2 Darstellung als Pseudocode 2.3 Konstruktion von prädiktiven
MehrVorlesung Programmieren
Vorlesung Programmieren 14 Parsen, Suchen und Sortieren 19./26.01.2015 Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION
Mehr9.4 Grundlagen des Compilerbaus
Kap09.fm Seite 717 Dienstag, 7. September 2010 2:06 14 9.4 Grundlagen des Compilerbaus 717 so dass die Benutzung dieser Regeln zum Aufbau eines + -Knotens bzw. eines Negations- Knotens im abstrakten Syntaxbaum
MehrDefinition Compiler. Bekannte Compiler
Compiler Inhalt: Definition Compiler / bekannte Compiler Klassifikationen von Compilern Analyse-Synthese-Modell der Kompilierung Analyse des Quellprogramms Synthesephase Die Phasen eines Compilers Symboltabellenverwaltung
MehrGrundlagen der Theoretischen Informatik
Grundlagen der Theoretischen Informatik 4. Kellerautomaten und kontextfreie Sprachen (III) 17.06.2015 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Übersicht 1. Motivation 2. Terminologie
MehrGrammatiken und ANTLR
Grammatiken und ANTLR Zusatzfolien zu Algo Blatt 6 Author: Henry Schaefer http://www.majeeks.de/folien_blatt6.pdf Grammatik Definition: syntaktische Beschreibung einer Sprache (H.S.) Definiton Grammatik
MehrKontextfreie Sprachen
Kontextfreie Sprachen Bedeutung: Programmiersprachen (Compilerbau) Syntaxbäume Chomsky-Normalform effiziente Lösung des Wortproblems (CYK-Algorithmus) Grenzen kontextfreier Sprachen (Pumping Lemma) Charakterisierung
MehrAlphabet, formale Sprache
n Alphabet Alphabet, formale Sprache l nichtleere endliche Menge von Zeichen ( Buchstaben, Symbole) n Wort über einem Alphabet l endliche Folge von Buchstaben, die auch leer sein kann ( ε leere Wort) l
MehrEinführung in die Informatik. Programming Languages
Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Cyrill Stachniss 1/15 Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens
MehrFormale Sprachen und Grammatiken
Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax
MehrGrundlagen der Theoretischen Informatik
Grundlagen der Theoretischen Informatik Sommersemester 2015 23.04.2015 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt 1. Terminologie 2. Endliche Automaten und reguläre Sprachen
MehrDeterministischer Kellerautomat (DPDA)
Deterministische Kellerautomaten Deterministischer Kellerautomat (DPDA) Definition Ein Septupel M = (Σ,Γ, Z,δ, z 0,#, F) heißt deterministischer Kellerautomat (kurz DPDA), falls gilt: 1 M = (Σ,Γ, Z,δ,
MehrLexikalische Programmanalyse der Scanner
Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung
MehrWS06/07 Referentin: Katharina Blinova. Formale Sprachen. Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven
WS06/07 Referentin: Katharina Blinova Formale Sprachen Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven 1. Allgemeines 2. Formale Sprachen 3. Formale Grammatiken 4. Chomsky-Hierarchie 5.
MehrCompilerbau Syntaxanalyse 68. LR(1)-Syntaxanalyse
Compilerbau Syntaxanalyse 68 LR(1)-Syntaxanalyse Bei der LL(1)-Syntaxanalyse wird allein aufgrund des nächsten Tokens die zu verwendende Produktion ermittelt. Bei der LR(1)-Syntaxanalyse braucht diese
MehrLösungen zur 1. Klausur. Einführung in Berechenbarkeit, formale Sprachen und Komplexitätstheorie
Hochschuldozent Dr. Christian Schindelhauer Paderborn, den 21. 2. 2006 Lösungen zur 1. Klausur in Einführung in Berechenbarkeit, formale Sprachen und Komplexitätstheorie Name :................................
MehrGrammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S)
Grammatiken Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V Startsymbol S V Produktionen P ( (V Σ) \ Σ ) (V Σ) Kurzschreibweise G = (V, Σ, P, S) Schreibweise für Produktion (α, β) P: α β 67 /
MehrFachseminar Compilerbau
Fachseminar Compilerbau WS 08/09 Matthias Schiller Syntaktische Analyse 1. Prinzip der Top-Down-Analyse 2. LL(1)-Grammatiken Modell-Vorstellung Der Scanner liefert als Ergebnis der lexikalischen Analyse,
MehrAutomaten und formale Sprachen Klausurvorbereitung
Automaten und formale Sprachen Klausurvorbereitung Rami Swailem Mathematik Naturwissenschaften und Informatik FH-Gießen-Friedberg Inhaltsverzeichnis 1 Definitionen 2 2 Altklausur Jäger 2006 8 1 1 Definitionen
MehrUmformung NTM DTM. Charakterisierung rek. aufz. Spr. Chomsky-3-Grammatiken (T5.3) Chomsky-0-Grammatik Rek. Aufz.
Chomsky-0-Grammatik Rek. Aufz. Satz T5.2.2: Wenn L durch eine Chomsky-0- Grammatik G beschrieben wird, gibt es eine NTM M, die L akzeptiert. Beweis: Algo von M: Schreibe S auf freie Spur. Iteriere: Führe
MehrHEUTE. Unterschiede Pseudocode / Programmcode. Rundung und modulo (Tafel) Pseudocode: findprimeswithdifference. Strings in JAVA.
15.11.06 1 HEUTE 15.11.06 3 Unterschiede Pseudocode / Programmcode Rundung und modulo (Tafel) Pseudocode: findprimeswithdifference Strings in JAVA Pseudocode: kontextfrei Variablentyp passend Schleifen
MehrSyntaxanalyse Ausgangspunkt und Ziel
Syntaxanalyse Ausgangspunkt und Ziel Ausgangspunkt: Kontextfreie Grammatik Im Normalfall BNF, manchmal EBNF BNF = Backus-Naur-Form = Produktionsregeln EBNF = erweiterte BNF (+ reguläre Ausdrücke) Prüfung
MehrSystem.out.println("TEXT");
Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class
MehrProgrammierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder
Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Syntax und Semantik): 1. Was ist Syntax? Was ist Semantik? Erläutern Sie den Unterschied. 2.
MehrProgrammieren in Java
Programmieren in Java Vorlesung 07: Parsen Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 32 Inhalt Vorlesungsüberblick
MehrObjektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln
Stefan Brass: OOP (Java), 3. Syntaxdiagramme und Grammatikregeln 1/32 Objektorientierte Programmierung Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass Martin-Luther-Universität Halle-Wittenberg
MehrLemma Für jede monotone Grammatik G gibt es eine kontextsensitive
Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive Grammatik G mit L(G) = L(G ). Beweis im Beispiel (2.): G = (V,Σ, P, S) : P = {S asbc, S abc, CB BC, ab ab, bb bb, bc bc, cc cc}. (i) G
MehrGrundlagen der Theoretischen Informatik
Grundlagen der Theoretischen Informatik Sommersemester 2016 20.04.2016 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt 1. Terminologie 2. Endliche Automaten und reguläre Sprachen
MehrWerkzeuge zur Programmentwicklung
Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul
MehrTheoretische Informatik Mitschrift
Theoretische Informatik Mitschrift 2. Grammatiken und die Chomsky-Hierarchie Beispiel: Syntaxdefinition in BNF :=
MehrInhalt Kapitel 5: Syntax
Inhalt Kapitel 5: Syntax 1 Syntax und Semantik 2 Formale Sprachen 3 Backus-Naur Form 4 Chomsky Grammatik 5 Reguläre Ausdrücke 6 Endliche Automaten 180 Syntax und Semantik Syntax Syntax: Festlegung des
MehrKapitel 5: Syntax-Analyse
Kapitel 5: Syntax-Analyse Aufgabe Die Token-Folge wird strukturiert in Anweisungen, Ausdrücke etc., um die Semantische Analyse und Code-Erzeugung zu ermöglichen Themen Kontextfreie Grammatik Äquivalente
MehrEinführung in die Informatik Grammars & Parsers
Einführung in die Informatik Grammars & Parsers Grammatiken, Parsen von Texten Wolfram Burgard Cyrill Stachniss 12.1 Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme
MehrKapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie
Gliederung 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie 2.1. 2.2. Reguläre Sprachen 2.3. Kontextfreie Sprachen 2/1, Folie 1 2015 Prof. Steffen
MehrWas bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen
Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen (Kontextsensitive) Sprachen L 2 Menge aller kontextfreien
MehrEin Satz der deutschen Sprache besitzt ein Subjekt, ein Prädikat und ein Objekt (SPO).
1 Grammatiken Autor: Tilman Blumenbach Letzte Änderung: 28. Juni 2012 18:15 Ziel von Grammatiken Wollen die Struktur von Sprachen modellieren und charakterisieren. Beispiel Ein Satz der deutschen Sprache
MehrWas ist ein Compiler?
Was ist ein Compiler? Was ist ein Compiler und worum geht es? Wie ist ein Compiler aufgebaut? Warum beschäftigen wir uns mit Compilerbau? Wie ist die Veranstaltung organisiert? Was interessiert Sie besonders?
MehrInformatik III. Christian Schindelhauer Wintersemester 2006/07 6. Vorlesung
Informatik III Christian Schindelhauer Wintersemester 2006/07 6. Vorlesung 10.11.2006 schindel@informatik.uni-freiburg.de 1 Kapitel IV Kontextfreie Sprachen Kontextfreie Grammatik Informatik III 6. Vorlesung
Mehrkontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung
Theoretische Informatik Rainer Schrader Zentrum für Angewandte Informatik Köln 14. Juli 2009 1 / 40 2 / 40 Beispiele: Aus den bisher gemachten Überlegungen ergibt sich: aus der Chomsky-Hierarchie bleiben
MehrString s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:
Informatik mit Java: Gierhardt Zeichenketten bzw. Strings Der Datentyp String Zeichenketten bzw. Strings sind eine häufig benutzte Datenstruktur. Man könnte auch mit Arrays aus Zeichen arbeiten. Da aber
MehrDer Datentyp String. Stringvariable und -vergleiche
Informatik 12 mit Java: Gierhardt Zeichenketten bzw. Strings Der Datentyp String Zeichenketten bzw. Strings sind eine häufig benutzte Datenstruktur. Man könnte auch mit Arrays aus Zeichen arbeiten. Da
MehrAlgorithmen mit konstantem Platzbedarf: Die Klasse REG
Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August
MehrGrundlagen der Theoretischen Informatik
Grundlagen der Theoretischen Informatik Sommersemester 2015 29.04.2015 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt 1. Motivation 2. Terminologie 3. Endliche Automaten und reguläre
Mehr1.2 Attribute und Methoden Aufbau einer Java-Klasse:
Aufbau einer Java-Klasse: public class Quadrat { int groesse; int xposition; String farbe; boolean istsichtbar; public void sichtbarmachen() { istsichtbar = true; public void horizontalbewegen(int distance){
MehrEinstieg in die Informatik mit Java
1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,
MehrThomas Behr. 17. November 2011
in in Fakultät für Mathematik und Informatik Datenbanksysteme für neue Anwendungen FernUniversität in Hagen 17. November 2011 c 2011 FernUniversität in Hagen Outline in 1 2 3 4 5 6 - Was ist das? in über
MehrGrammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht
Zusammenhang: Formale Sprache Grammatik Formale Sprache kann durch Grammatik beschrieben werden. Zur Sprache L = L(G) gehören nur diejenigen Kombinationen der Zeichen des Eingabealphabets, die durch die
MehrGrundlagen der Theoretischen Informatik
Grundlagen der Theoretischen Informatik Sommersemester 2015 22.04.2015 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt 1. Terminologie 2. Endliche Automaten und reguläre Sprachen
MehrInterdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko
Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der SS 2016: Grossmann, Jenko Die Beschreibung orientiert sich am Begriffssystem der Beschreibung natürlicher Sprachen Sprache in der steht
MehrVU Software Paradigmen / SS 2012
VU Software Paradigmen 716.060 / SS 2012 Sandra Fruhmann sandra.fruhmann@student.tugraz.at Inhalt Grammatiken Chomsky Sprachhierarchie Parse Trees Recursive Descent Parser First-, Follow-Mengen 2 Compiler
MehrInformatik III. Christian Schindelhauer Wintersemester 2006/07 5. Vorlesung
Informatik III Christian Schindelhauer Wintersemester 2006/07 5. Vorlesung 09.11.2006 schindel@informatik.uni-freiburg.de 1 Äquivalenzklassen Definition und Beispiel Definition Für eine Sprache L Σ* bezeichnen
MehrAlgorithmen und Datenstrukturen I - Exkurs Formale Sprachen -
Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen - Thies Pfeiffer Technische Fakultät tpfeiffe@techfak.uni-bielefeld.de Vorlesung, Universität Bielefeld, Winter 2012/2013 1 / 1 Exkurs: Formale
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrAutomaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013
Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2013 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1 Deterministische Kellerautomaten
MehrTheorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie
Theorie der Informatik 17. März 2014 6. Formale Sprachen und Grammatiken Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 6.1 Einführung
MehrGrundlagen der Theoretischen Informatik
1 Grundlagen der Theoretischen Informatik Till Mossakowski Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Wintersemester 2014/15 2 Kontextfreie Grammatiken Definition: Eine Grammatik G
MehrFormale Sprachen und Automaten: Tutorium Nr. 8
Formale Sprachen und Automaten: Tutorium Nr. 8 15. Juni 2013 Übersicht 1 Nachtrag 2 Besprechung von Übungsblatt 7 Aufgabe 1 Aufgabe 2 Aufgabe 3 3 CFG PDA Definitionen Ein Beispiel! Aufgabe 4 Der PDA als
MehrKapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14
Kapitel: Die Chomsky Hierarchie Die Chomsky Hierarchie 1 / 14 Allgemeine Grammatiken Definition Eine Grammatik G = (Σ, V, S, P) besteht aus: einem endlichen Alphabet Σ, einer endlichen Menge V von Variablen
MehrÜbersicht. Vorstellung des OO-Paradigmas
Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java
MehrEinstieg in die Informatik mit Java
1 / 17 Einstieg in die Informatik mit Java String Tokenizer Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 17 1 Überblick Tokenizer 2 StringTokenizer 3 Verwendung von String.split
MehrGI Vektoren
Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung
Mehr6 Kontextfreie Grammatiken
6 Kontextfreie Grammatiken Reguläre Grammatiken und damit auch reguläre Ausdrücke bzw. endliche Automaten haben bezüglich ihres Sprachumfangs Grenzen. Diese Grenzen resultieren aus den inschränkungen,
MehrSWE1 / Übung 2 (19.10.2011)
SWE1 / Übung 2 (19.1.211) Simulation von Algorithmen Testen, Testplan Beispiel arithmetische Ausdrücke Handsimulation von Algorithmen Man versteht einen Algorithmus (insbesonders einen "Fremden"), wenn
MehrAbschluss gegen Substitution. Wiederholung. Beispiel. Abschluss gegen Substitution
Wiederholung Beschreibungsformen für reguläre Sprachen: DFAs NFAs Reguläre Ausdrücke:, {ε}, {a}, und deren Verknüpfung mit + (Vereinigung), (Konkatenation) und * (kleenescher Abschluss) Abschluss gegen
MehrBeispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme
Schwerpunkte 3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java Imperative Programmierung Beispiel für ein Programm aus drei Komponenten Variable,
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
MehrEinstieg in die Informatik mit Java
Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere
MehrJAVA - Methoden
Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können
MehrLexikalische Analyse, Tokenizer, Scanner
Lexikalische Analyse, Tokenizer, Scanner Frühe Phase des Übersetzers Aufgabenteilung: Scanner (lokale) Zeichen (Symbol-)Analyse Parser Syntax-Analyse Aufgabe des Scanners: Erkennung von: Zahlen, Bezeichner,
Mehr2.5 Backtracking. 1 Ausgang. Beispiel: ungerichteter Graph: Ausweg aus einem Labyrinth suchen, modelliert als. Sackgasse. Ecken. Kanten 2.
2.5 Backtracking Beispiel: Ausweg aus einem Labyrinth suchen, modelliert als ungerichteter Graph: 2 0 Sackgasse 3 6 4 Ecken 5 Kanten 1 Ausgang 2.5 1 Vorgeschichte: Man hat sich ins Labyrinth begeben, geht
Mehr1 Syntax von Programmiersprachen
1 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ): formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmier-Sprache Festlegung, wie Programme
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrSyntax von Programmiersprachen
"Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt Syntax von Programmiersprachen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang WS 07/08
Mehr3.4 Struktur von Programmen
3.4 Struktur von Programmen Programme sind hierarchisch aus Komponenten aufgebaut. Für jede Komponente geben wir Regeln an, wie sie aus anderen Komponenten zusammengesetzt sein können. program ::= decl*
MehrFormale Sprachen. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marian KOGLER
Formale Sprachen Grammatiken und die Chomsky-Hierarchie Rudolf FREUND, Marian KOGLER Grammatiken Das fundamentale Modell zur Beschreibung von formalen Sprachen durch Erzeugungsmechanismen sind Grammatiken.
MehrPrimitive Datentypen
Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.
MehrDie Programmiersprache C Eine Einführung
Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert
MehrDistributed Computing Group
JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird
MehrGrundlagen der Informatik II
Grundlagen der Informatik II Dr.-Ing. Sven Hellbach S. Hellbach Grundlagen der Informatik II Abbildungen entnommen aus: Dirk W. Hoffmann: Theoretische Informatik; Hanser Verlag 2011, ISBN: 978-3-446-42854-6
MehrKapitel 3: Grundlegende Ergebnisse aus der Komplexitätstheorie Gliederung
Gliederung 1. Berechenbarkeitstheorie 2. Grundlagen 3. Grundlegende Ergebnisse aus der Komplexitätstheorie 4. Die Komplexitätsklassen P und NP 5. Die Komplexitätsklassen RP und BPP 3.1. Ressourcenkompression
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
Mehr3. Grundlegende Sprachkonstruktionen imperativer Programme
3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 4. Nov. 2015 2 Schwerpunkte
Mehr1 Hashing und die Klasse String
1 Hashing und die Klasse String Die Klasse String stellt Wörter von (Unicode-) Zeichen dar. Objekte dieser Klasse sind stets konstant, d.h. können nicht verändert werden (immutable). Die Zeichenkette ist
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 10.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik
MehrII.3.1 Rekursive Algorithmen - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -
MehrFORMALE SYSTEME. Sprachen beschreiben. Wiederholung. Wie kann man Sprachen beschreiben? 2. Vorlesung: Grammatiken und die Chomsky-Hierarchie
Wiederholung FORMALE SYSTEME 2. Vorlesung: Grammatiken und die Chomsky-Hierarchie Markus Krötzsch Formale Sprachen sind in Praxis und Theorie sehr wichtig Ein Alphabet ist eine nichtleere, endliche Menge
MehrKapitel 4: Syntaxdiagramme und Grammatikregeln
4. Syntaxdiagramme und Grammatikregeln 4-1 Objektorientierte Programmierung (Winter 2006/2007) Kapitel 4: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische
MehrGrundlagen der Informatik
Grundlagen der Informatik Einführung in die Programmiersprache C Teil 2 Ein- und Ausgabe in C-Programmen Prof. Dr.-Ing. Thomas Wiedemann Fachgebiet Informatik / Mathematik Überblick zur Vorlesung Ein-
MehrKontrollstrukturen, Pseudocode und Modulo-Rechnung
Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1
Mehr4.2 Die Chomsky Normalform
4.2 Die Chomsky Normalform Für algorithmische Problemstellungen (z.b. das Wortproblem) aber auch für den Nachweis von Eigenschaften kontextfreier Sprachen ist es angenehm, von CFG in Normalformen auszugehen.
MehrEinführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
MehrKellerautomat (1/4) Kellerautomat (2/4) Kellerautomat (3/4) Kellerautomat (4/4)
Kellerautomat (1/4) Kellerautomat (2/4) Kontextfreie Grammatiken können von Kellerautomaten (Push Down Automata, PDA) erkannt werden PDAs sind eine Erweiterung der endlichen Automaten um ein einfaches
MehrInformatik I WS 07/08 Tutorium 24
Info I Tutorium 24 Informatik I WS 07/08 Tutorium 24 20.12.07 Bastian Molkenthin E-Mail: infotut@sunshine2k.de Web: http://infotut.sunshine2k.de Rückblick Semi-Thue-Systeme Ein Semi-Thue-System besteht
Mehr16. Die Chomsky-Hierarchie
16. Die Chomsky-Hierarchie Die Chomsky-Sprachen sind gerade die rekursiv aufzählbaren Sprachen: CH = RA Da es nicht rekursive (d.h. unentscheidbare) r.a. Sprachen gibt, ist das Wortproblem für Chomsky-Grammatiken,
MehrWelche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
Mehr