Hallo Welt für Fortgeschrittene Parsen

Größe: px
Ab Seite anzeigen:

Download "Hallo Welt für Fortgeschrittene Parsen"

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 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

Mehr

Hallo Welt für Fortgeschrittene

Hallo 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

Mehr

Parsen Hallo Welt! für Fortgeschrittene

Parsen 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

Mehr

Chomsky-Grammatiken 16. Chomsky-Grammatiken

Chomsky-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

Mehr

Einführung - Parser. Was ist ein Parser?

Einfü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

Mehr

Vorlesung Programmieren

Vorlesung 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

Mehr

9.4 Grundlagen des Compilerbaus

9.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

Mehr

Definition Compiler. Bekannte Compiler

Definition 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

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen 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

Mehr

Grammatiken und ANTLR

Grammatiken 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

Mehr

Kontextfreie Sprachen

Kontextfreie Sprachen Kontextfreie Sprachen Bedeutung: Programmiersprachen (Compilerbau) Syntaxbäume Chomsky-Normalform effiziente Lösung des Wortproblems (CYK-Algorithmus) Grenzen kontextfreier Sprachen (Pumping Lemma) Charakterisierung

Mehr

Alphabet, formale Sprache

Alphabet, 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

Mehr

Einführung in die Informatik. Programming Languages

Einfü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

Mehr

Formale Sprachen und Grammatiken

Formale 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

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen 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

Mehr

Deterministischer Kellerautomat (DPDA)

Deterministischer 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,δ,

Mehr

Lexikalische Programmanalyse der Scanner

Lexikalische 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

Mehr

WS06/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 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.

Mehr

Compilerbau Syntaxanalyse 68. LR(1)-Syntaxanalyse

Compilerbau 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

Mehr

Lösungen zur 1. Klausur. Einführung in Berechenbarkeit, formale Sprachen und Komplexitätstheorie

Lö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 :................................

Mehr

Grammatiken. 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. 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 /

Mehr

Fachseminar Compilerbau

Fachseminar 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,

Mehr

Automaten und formale Sprachen Klausurvorbereitung

Automaten 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

Mehr

Umformung NTM DTM. Charakterisierung rek. aufz. Spr. Chomsky-3-Grammatiken (T5.3) Chomsky-0-Grammatik Rek. Aufz.

Umformung 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

Mehr

HEUTE. Unterschiede Pseudocode / Programmcode. Rundung und modulo (Tafel) Pseudocode: findprimeswithdifference. Strings in JAVA.

HEUTE. 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

Mehr

Syntaxanalyse Ausgangspunkt und Ziel

Syntaxanalyse 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

Mehr

System.out.println("TEXT");

System.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

Mehr

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Programmierung 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.

Mehr

Programmieren in Java

Programmieren 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

Mehr

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Objektorientierte 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

Mehr

Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive

Lemma 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

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen 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

Mehr

Werkzeuge zur Programmentwicklung

Werkzeuge zur Programmentwicklung Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul

Mehr

Theoretische Informatik Mitschrift

Theoretische Informatik Mitschrift Theoretische Informatik Mitschrift 2. Grammatiken und die Chomsky-Hierarchie Beispiel: Syntaxdefinition in BNF :=

Mehr

Inhalt Kapitel 5: Syntax

Inhalt 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

Mehr

Kapitel 5: Syntax-Analyse

Kapitel 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

Mehr

Einführung in die Informatik Grammars & Parsers

Einfü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

Mehr

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie

Kapitel 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

Mehr

Was 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 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

Mehr

Ein Satz der deutschen Sprache besitzt ein Subjekt, ein Prädikat und ein Objekt (SPO).

Ein 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

Mehr

Was ist ein Compiler?

Was 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?

Mehr

Informatik III. Christian Schindelhauer Wintersemester 2006/07 6. Vorlesung

Informatik 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

Mehr

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

kontextfreie 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

Mehr

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

String 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

Mehr

Der Datentyp String. Stringvariable und -vergleiche

Der 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

Mehr

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Algorithmen 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

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen 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

Mehr

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

1.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){

Mehr

Einstieg in die Informatik mit Java

Einstieg 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,

Mehr

Thomas Behr. 17. November 2011

Thomas 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

Mehr

Grammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht

Grammatik 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

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen 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

Mehr

Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko

Interdisziplinä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

Mehr

VU Software Paradigmen / SS 2012

VU 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

Mehr

Informatik III. Christian Schindelhauer Wintersemester 2006/07 5. Vorlesung

Informatik 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

Mehr

Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

Algorithmen 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

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013

Automaten 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

Mehr

Theorie 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. 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

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen 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

Mehr

Formale Sprachen und Automaten: Tutorium Nr. 8

Formale 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

Mehr

Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14

Kapitel: 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

Ü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

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

GI Vektoren

GI 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

Mehr

6 Kontextfreie Grammatiken

6 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,

Mehr

SWE1 / Übung 2 (19.10.2011)

SWE1 / Ü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

Mehr

Abschluss gegen Substitution. Wiederholung. Beispiel. Abschluss gegen Substitution

Abschluss 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

Mehr

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

Beispiel: 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,

Mehr

Theoretische Grundlagen der Informatik

Theoretische 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

Mehr

1. 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. 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

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

JAVA - Methoden

JAVA - 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

Mehr

Lexikalische Analyse, Tokenizer, Scanner

Lexikalische 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,

Mehr

2.5 Backtracking. 1 Ausgang. Beispiel: ungerichteter Graph: Ausweg aus einem Labyrinth suchen, modelliert als. Sackgasse. Ecken. Kanten 2.

2.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

Mehr

1 Syntax von Programmiersprachen

1 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

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: 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,

Mehr

Syntax von Programmiersprachen

Syntax 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

Mehr

3.4 Struktur von Programmen

3.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*

Mehr

Formale Sprachen. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marian KOGLER

Formale 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.

Mehr

Primitive Datentypen

Primitive 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.

Mehr

Die Programmiersprache C Eine Einführung

Die 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

Mehr

Distributed Computing Group

Distributed 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

Mehr

Grundlagen der Informatik II

Grundlagen 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

Mehr

Kapitel 3: Grundlegende Ergebnisse aus der Komplexitätstheorie Gliederung

Kapitel 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

Mehr

Programmierkurs Java

Programmierkurs 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

Mehr

3. Grundlegende Sprachkonstruktionen imperativer Programme

3. 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

Mehr

1 Hashing und die Klasse String

1 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

Mehr

Theoretische Grundlagen der Informatik

Theoretische 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

Mehr

II.3.1 Rekursive Algorithmen - 1 -

II.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 -

Mehr

FORMALE SYSTEME. Sprachen beschreiben. Wiederholung. Wie kann man Sprachen beschreiben? 2. Vorlesung: Grammatiken und die Chomsky-Hierarchie

FORMALE 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

Mehr

Kapitel 4: Syntaxdiagramme und Grammatikregeln

Kapitel 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

Mehr

Grundlagen der Informatik

Grundlagen 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-

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, 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

Mehr

4.2 Die Chomsky Normalform

4.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.

Mehr

Einführung in die Programmierung 1

Einfü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

Mehr

Kellerautomat (1/4) Kellerautomat (2/4) Kellerautomat (3/4) Kellerautomat (4/4)

Kellerautomat (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

Mehr

Informatik I WS 07/08 Tutorium 24

Informatik 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

Mehr

16. Die Chomsky-Hierarchie

16. 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,

Mehr

Welche Informatik-Kenntnisse bringen Sie mit?

Welche 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