Hallo Welt für Fortgeschrittene

Größe: px
Ab Seite anzeigen:

Download "Hallo Welt für Fortgeschrittene"

Transkript

1 Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Informatik 2 Programmiersysteme Martensstraße Erlangen

2 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform für kontextfreie Grammatiken Vorgehensweisen beim Parsen Bottom-Up-Parsing CYK-Algorithmus Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 2/80

3 Einführung Definition des Begriffs Parser : Ein Parser ist ein Computerprogramm, das in der Informatik für die Zerlegung und Umwandlung einer beliebigen Eingabe in ein für die Weiterverarbeitung brauchbares Format zuständig ist. Beispiele für Parser: Compiler von Programmiersprachen TeX/LaTeX Intelligente Suche z.b. Wie wird morgen das Wetter? Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 3/80

4 Einführung - Compiler Vereinfachte Funktionsweise: 1. Analysephase Lexikalische Analyse (Zerteilung des Textes in Token) Syntaktische Analyse Überprüfung, ob Syntax stimmt, dem Standard entspricht Umwandlung in Syntaxbaum, Analyse mit Parser Fehler, falls Syntaxprüfung oder Analyse nicht funktioniert (der Code nicht korrekt ist) Semantische Analyse ( Macht der Code Sinn? ), weitere Sprachbedingungen prüfen 2. Synthesephase Zwischenprodukte (Header inkludieren, Makros einfügen, ) Optimierung (wenn gewünscht) Endprodukt (Maschinencode) erzeugen Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 4/80

5 Einführung - Syntaxbaum Beispiel für den Syntaxbaum einer natürlichen Sprache Grammatik ist hier, was man klassisch unter Grammatik versteht Satz Subjekt Prädikat Artikel Substantiv Verb Die Katze schläft Erforschung der Struktur von Sprachen u.a. durch Noam Chomsky (Chomsky-Hierarchie) Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 5/80

6 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform für kontextfreie Grammatiken Vorgehensweisen beim Parsen Bottom-Up-Parsing CYK-Algorithmus Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 6/80

7 Theoretische Grundlagen - Grammatiken Eine formale Grammatik G = (V, Σ, P, S) besteht aus V: endliche, nichtleere Menge von Variablen Σ: endliche, nichtleere Menge von Terminalen S: Startsymbol, S V P: endliche Menge von Produktionen der Form ((V Σ) + \ Σ*) x (V Σ)* Anschaulich: Menge von Ableitungsregeln P Q, wobei P aus mindestens einer Variable und optional Terminalen und Q aus beliebig vielen Variablen und Terminalen besteht. Allgemeinster Typ: Chomsky-0-Grammatik Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 7/80

8 Theoretische Grundlagen Chomsky-Hierarchie (1) Hierarchische Klassifikation von Grammatiken, erstmals 1956 durch Noam Chomsky beschrieben Unterschied der Hierarchiestufen: zunehmend stärkere Einschränkungen für die Form zulässiger Produktionen Grammatik G = (V, Σ, P, S) Chomsky-0: wie auf vorheriger Folie Chomsky-1, kontextsensitiv : Wie Chomsky-0, zusätzlich: (u v) P: u v Erweiterung: S ε erlaubt, wenn S nie rechts vorkommt Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 8/80

9 Theoretische Grundlagen Chomsky-Hierarchie (2) Chomsky-2, kontextfrei (für uns interessant): Wie Chomsky-1, zusätzlich: Links darf nur eine Variable stehen Chomsky-3, regulär : Wie Chomsky-2, zusätzlich: Alle Produktionen haben die Form A ab (rechtsregulär) oder A Ba (linksregulär) A a A ε für A, B V, a Σ Im Folgenden: Details der kontextfreien Grammatik Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 9/80

10 Theoretische Grundlagen - Beispiel Beispiel für eine kontextfreie Grammatik: G = (V, Σ, P, S) mit V = {A, T, F} Σ = {1, 2, 3, 4} P: A T A+T T F T*F F (A) S=A Erzeugt mathematische Ausdrücke mit Zahlen 1-4, Operatoren Plus und Mal, wertet diese in der richtigen Reihenfolge aus, und lässt Klammerung zu Tafel Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 10/80

11 Theoretische Grundlagen Chomsky-Normalform Für die Anwendung bestimmter Algorithmen muss die Grammatik in einer dafür geeigneten Normalform vorliegen. Für CYK: Chomsky-Normalform Definition: Eine kontextfreie Grammatik ist in ChomskyNormalform (CNF), wenn jede Regel in der Form A BC oder A a S ε ist, mit A V, B, C V \ {S} und a Σ. Jede kontextfreie Grammatik kann in eine CNF umgewandelt werden. Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 11/80

12 Theoretische Grundlagen Chomsky-Normalform Algorithmus zur Umformung einer kontextfreien Grammatik in CNF: 1. Eliminiere ε-produktionen 2. Für jedes Terminalsymbol a: Führe eine neue Variable Aa und eine neue Regel Aa a ein; ersetze alle Vorkommen von a durch Aa 3. Eliminiere Kettenregeln 4. Löse Regeln mit mehr als 2 Variablen auf der rechten Seite auf 5. Entferne unerreichbare und unproduktive Variablen Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 12/80

13 Theoretische Grundlagen CNF-Umformung (1) Elimination von ε-produktionen: Entferne alle Regeln der Form A ε Für jede Regel, die auf A abbildet, füge weitere Regel hinzu, in der A gestrichen wurde Ausnahme: Falls Startsymbol auf ε abbildet (S ε) In diesem Fall: Füge neues Startsymbol S' ein und neue Regeln: S' ε und S' S Beispiel: S A, A BC, B b ε, C c Tafel Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 13/80

14 Theoretische Grundlagen CNF-Umformung (1) Elimination von ε-produktionen: Entferne alle Regeln der Form A ε Für jede Regel, die auf A abbildet, füge weitere Regel hinzu, in der A gestrichen wurde Ausnahme: Falls Startsymbol auf ε abbildet (S ε) In diesem Fall: Füge neues Startsymbol S' ein und neue Regeln: S' ε und S' S Beispiel: S A, A BC, B b ε, C c wird umgeformt zu: S A, A BC C, B b, C c Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 14/80

15 Theoretische Grundlagen CNF-Umformung (2) Für jedes Terminalsymbol a: Einführung einer neuen Variable Aa und einer neuen Regel Aa a; ersetze alle Vorkommen von a durch Aa Ziel: Entfernung gemischter Produktionen, die rechts Terminale und Nicht-Terminale enthalten Beispiel: A Ab wird zu A AAb, Ab b Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 15/80

16 Theoretische Grundlagen CNF-Umformung (3) Elimination von Kettenregeln: Ziel: Entfernung von Regeln, die später zur Endlosrekursion führen würden ( im Kreis laufen ) Konstruiere Graph aus Regeln, suche darin nach Zyklen Ersetze bei jedem Zyklus die zugehörigen Variablen durch genau eine davon, ersetze alle Vorkommen der ersetzten Variable durch die genau eine (S darf nicht ersetzt werden). Ersetze zum Schluss die übrigen Kettenregeln durch die Regeln A alle rechten Seiten Beispiel: A BC E E XZ F F A Z Z ae A BC A A XZ A A A Z Z ae A BC XZ ae Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 16/80

17 Theoretische Grundlagen CNF-Umformung (4) Auflösung von Regeln mit mehr als 2 Variablen auf der rechten Seite Vorgehen: Ersetze so lange jeweils 2 benachbarte Symbole AB auf der rechten Seite durch neue Var. X, füge neue Regel X AB hinzu, bis keine Regeln mit mehr als 2 Variablen mehr existieren Beispiel: A BCDEF Tafel Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 17/80

18 Theoretische Grundlagen CNF-Umformung (4) Auflösung von Regeln mit mehr als 2 Variablen auf der rechten Seite Vorgehen: Ersetze so lange jeweils 2 benachbarte Symbole AB auf der rechten Seite durch neue Var. X, füge neue Regel X AB hinzu, bis keine Regeln mit mehr als 2 Variablen mehr existieren Beispiel: A BCDEF A XDEF, X AB A YEF, Y XD, X AB A ZF, Z YE, Y XD, X AB Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 18/80

19 Theoretische Grundlagen CNF-Umformung (5) Entferne unerreichbare und unproduktive Variablen (Reduzieren der CNF) Unerreichbar: Variablen, die vom Startsymbol aus nie erreicht werden können Regeln, deren linke Seite eine unerreichbare Variable ist, kann ohne Veränderung der Sprache entfernt werden Unproduktiv: Variablen, deren Anwendung nie zu einem Wort der Sprache führen kann Diese Regeln können (und sollen) ebenso entfernt werden Grammatik ist nun in CNF und reduziert Bereit für die Algorithmen Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 19/80

20 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform für kontextfreie Grammatiken Vorgehensweisen beim Parsen Bottom-Up-Parsing CYK-Algorithmus Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 20/80

21 Vorgehensweisen beim Parsen Bottom-Up-Parsing von unten nach oben, für gegebenes Wort wird geprüft, ob es der Grammatik entspricht Algorithmus: CYK Top-Down-Parsing von oben nach unten, wende Regeln der Grammatik an, versuche daraus das Wort zu bilden Mögliche Umsetzung: Rekursiver Abstiegsparser (RDP) Beide Male Backtracking möglich, aber nicht performant Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 21/80

22 Bottom-Up-Parsing Der CYK-Algorithmus Cocke-Younger-Kasami-Algorithmus Da fehlt doch Magenta! Unabhängig voneinander in den 1960er Jahren entwickelt Beantwortet die Frage w L(G)? für kontextfreie Sprachen mit Wortlänge n und Anzahl Produktionen P in Laufzeit Platz O(n3 * P ) O(n2 * P ) Idee: Aufteilen des Wortes in Fragmente, die von Produktionen erzeugt werden Tafel Einzelne Terminale können direkt hergeleitet werden Backtracking Ausprobieren aller Möglichkeiten Kann durch Dynamische Programmierung beschleunigt werden Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 22/80

23 Bottom-Up-Parsing Der CYK - Algorithmus Pseudocode des Algorithmus: Für i = 1 n Für jede Produktion (l r) P Falls r = wi Setze Vi,1 := Vi,1 {l} vi,j: Variablen, aus denen wi...wj hergeleitet werden Für d = 2 n Für i = 1 n d kann Setze j := i + d Für k = 1 j 1 Für jedes (B Vi,k und C Vk+1,j) Wenn (l BC P) Vi,j := Vi,j {l} Wenn S V1,n Wort ist enthalten Sonst Wort ist nicht enthalten Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 23/80

24 Bottom-Up-Parsing Der CYK - Algorithmus Beispiel: Grammatik: S AB BC B CC b A BA a C AB a Zu prüfendes Wort:? Tafel Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 24/80

25 Bottom-Up-Parsing Der CYK - Algorithmus Beispiel: Grammatik: S AB BC B CC b A BA a C AB a Zu prüfendes Wort: babab b a b a b {B} {A,C} {B} {A,C} {B} {S,A} {S,C} {S,A} {S,C} {S,C} {B} {S,C} {B} {B} {B} S V1,5 babab L(G) Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 25/80

26 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform für kontextfreie Grammatiken Vorgehensweisen beim Parsen Bottom-Up-Parsing CYK-Algorithmus Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 26/80

27 Top-Down-Parsing Gleiches Problem, umgekehrte Lösung Arbeitet von oben nach unten Tiefensuche: oben unten, links rechts Versuche, Regeln der Grammatik anzuwenden, um zu prüfenden Satz zu bilden Grammatik darf keine Linksrekursion enthalten, sonst Endlosrekursion Laufzeit: O(nn) Normal für Backtracking-Algorithmen Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 27/80

28 Top-Down-Parsing Operationen eines Top-Down-Parsers: Expand Für gefundene Variable eine Regel der Grammatik anwenden z.b. X ab (Vorkommen von X mit ab ersetzen) Scan Vergleiche Ableitungssymbol mit Eingabesymbol ( Wurde das gleiche Wort gebildet? ) Wenn gleich: Weiter expanden, wenn nicht: Backtrack gehe Schritt zurück, versuche nächste Möglichkeit Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 28/80

29 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S Frage: Die Katze frisst die Maus L(G)? Operation: Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 29/80

30 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP VP Frage: Die Katze frisst die Maus L(G)? Operation: Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 30/80

31 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET VP N Frage: Die Katze frisst die Maus L(G)? Operation: Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 31/80

32 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET VP N Frage: Die Katze frisst die Maus L(G)? Die Operation: Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 32/80

33 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET VP N Frage: Die Katze frisst die Maus L(G)? Die Operation: Scan Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 33/80

34 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET VP N Frage: Die Katze frisst die Maus L(G)? Die Katze Operation: Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 34/80

35 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET VP N Frage: Die Katze frisst die Maus L(G)? Die Katze Operation: Scan Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 35/80

36 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP V Frage: Die Katze frisst die Maus L(G)? Die Katze Operation: Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 36/80

37 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP V Frage: Die Katze frisst die Maus L(G)? Die Katze jagt Operation: Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 37/80

38 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP V Frage: Die Katze frisst die Maus L(G)? Die Katze jagt Operation: Backtrack Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 38/80

39 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP V Frage: Die Katze frisst die Maus L(G)? Die Katze frisst Operation: Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 39/80

40 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP V Frage: Die Katze frisst die Maus L(G)? Die Katze frisst Operation: Scan Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 40/80

41 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP V Frage: Die Katze frisst die Maus L(G)? Die Katze frisst Operation: Scan Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 41/80

42 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP V Frage: Die Katze frisst die Maus L(G)? Die Katze Operation: Backtrack Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 42/80

43 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP V NP Frage: Die Katze frisst die Maus L(G)? Die Katze Operation: Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 43/80

44 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP V NP Frage: Die Katze frisst die Maus L(G)? Die Katze jagt Operation: Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 44/80

45 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP V NP Frage: Die Katze frisst die Maus L(G)? Die Katze jagt Operation: Backtrack Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 45/80

46 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP V NP Frage: Die Katze frisst die Maus L(G)? Die Katze frisst Operation: Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 46/80

47 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP V NP Frage: Die Katze frisst die Maus L(G)? Die Katze frisst Operation: Scan Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 47/80

48 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP NP V DET Frage: Die Katze frisst die Maus L(G)? Die Katze frisst Operation: Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 48/80 N

49 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP NP V DET Frage: Die Katze frisst die Maus L(G)? Die Katze frisst Die Operation: Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 49/80 N

50 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP NP V DET Frage: Die Katze frisst die Maus L(G)? Die Katze frisst die Operation: Backtrack & Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 50/80 N

51 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP NP V DET Frage: Die Katze frisst die Maus L(G)? Die Katze frisst die Operation: Scan Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 51/80 N

52 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP NP V DET N Frage: Die Katze frisst die Maus L(G)? Die Katze frisst die Katze Operation: Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 52/80

53 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP NP V DET N Frage: Die Katze frisst die Maus L(G)? Die Katze frisst die Maus Operation: Backtrack & Expand Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 53/80

54 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP NP V DET N Frage: Die Katze frisst die Maus L(G)? Die Katze frisst die Maus Operation: Scan Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 54/80

55 Top-Down-Parsen (Demo) Grammatik: S NP VP NP DET N VP V V NP DET Die die den N Katze Maus V jagt frisst S NP DET N VP NP V DET N Frage: Die Katze frisst die Maus L(G)! Die Katze frisst die Maus Operation: Fertig Die Katze frisst die Maus Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 55/80

56 Top-Down-Parsen Rekursiver Abstiegsparser Wie setzt man das um? Recursive Descent Parser Erinnerung: Grammatik darf keine Linksrekursion besitzen! Regeln der Form S Sb können aber leicht umgewandelt werden: A AX Y wird zu A YA' A' XA' ε Grundprinzip der Implementierung: Pro Produktion eine eigene Funktion, die nur diese Produktion prüft Besonders schön für Grammatiken, bei denen man nicht backtracken muss Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 56/80

57 Top-Down-Parsen Rekursiver Abstiegsparser Beispiel: S AB A a ab B b ba Eine Funktion pro Regel pos = Position im Wort len = Länge des Wortes accept = Globales Flag Code: fun S() { //S A A(); B(); if(pos!= len) { accept = false; } } Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 57/80

58 Top-Down-Parsen Rekursiver Abstiegsparser Code (weiter): fun A() { //A a ab if(matches('a')) { pos++; if(pos!= len) { B(); } } else { accept = false; } } fun B() { //B b ba if(matches('b')) { pos++; if(pos!= len) { if(matches('a')) { pos++; } else { accept = false; } } } else { accept = false; } } Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 58/80

59 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform für kontextfreie Grammatiken Vorgehensweisen beim Parsen Bottom-Up-Parsing CYK-Algorithmus Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 59/80

60 Ein- und Ausgabe in Java, C und C++ Gleiches Schema bei Aufgaben Einlesen von stdin Algorithmen anwenden Ausgeben auf stdout Zu lesende und verändernde Daten können groß werden Aufgabe Class Exercise (SS1): Zahlen einlesen, Anfragen auf die Daten Problem: Effiziente Ein- und Ausgabemechanismen benötigt Bei großen Datenmengen ist C/C++ besser geeignet als Java Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 60/80

61 Ein- und Ausgabe in Java Einlesen BufferedReader (in java.io.*) Initialisierung: BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); Wichtige Methoden: public int read(); Liest einzelnes Zeichen, gibt bei EOF -1 zurück. Wie getc in C. public String readline(); Liest ganze Zeile ein. Newline ist \r, \n oder \r\n public int read(char[] cbuf, int off, int len) Schreibt bis zu len Chars nach cbuf+off. Wie fgets in C. Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 61/80

62 Ein- und Ausgabe in Java Einlesen StringTokenizer (in java.util.*) Zur Weiterverarbeitung eines eingelesenen Strings ( einer Zeile ) Initialisierung: StringTokenizer st = new StringTokenizer(String str, String delim); Wichtige Methoden: int counttokens(); Gibt die Anzahl der verbleibenden Tokens zurück boolean hasmoretokens(); Gibt es verbleibende Tokens? (z.b. Prüfung in while-schleife) string nexttoken(); Gibt den nächsten Token zurück...und viele mehr Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 62/80

63 Ein- und Ausgabe in Java Einlesen Scanner (in java.util.*) Noch komfortabler, aber langsamer (reicht trotzdem für fast alle Aufgaben aus) Initialisierung: Scanner in = new Scanner(System.in).useLocale(Locale.ENGLISH); Wichtige Methoden: public boolean hasnext[int, Float, Double, Long](); Gibt es einen nächsten Int-, Float-, -Wert? public int nextint(), float nextfloat(), Gib den nächsten Int-, Float-, -Wert zurück public String nextline(); Gibt komplette Zeile zurück public String next(); Gibt nächstes Token als String zurück Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 63/80

64 Ein- und Ausgabe in Java Ausgabe System.out.print($ausgabe) $ausgabe kann alles sein, was tostring() implementiert, nicht nur primitive Datentypen Konkatenieren mit +, Automatisches \n mit System.out.println(); Beispiel: System.out.print( Das ist Test ); System.out.printf(String format, $ausgabe); Ähnlich wie printf in C Formatstring enthält Anweisungen, wie Argumente in $ausgabe ausgeben werden sollen Beispiele: %d = int, %f = float, %.2f = float mit 2 Nachkommastellen, %c = char, %x = int als Hex,... z.b. System.out.printf( %d, %f, %x, 1337, 13.37, 51966); gibt aus: 1337, 13.37, cafe Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 64/80

65 Ein- und Ausgabe in C/C++ Einlesen int scanf(const char *format, ); (#include <cstdio> / <stdio.h>) Ignoriert Whitespace (' ', '\t', '\n') Liest Zeichen an im Formatstring angegebenen Stellen automatisch in Variablen ein, Rest der Zeichen muss genau so vorkommen Falls anderer Stream als stdin: int fscanf(file *stream, const char *format, ); Beispiel: scanf( %d - %f, &a, &b); Bei Eingabe steht danach in a 42, in b Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 65/80

66 Ein- und Ausgabe in C/C++ Einlesen char *fgets(char *s, int size, FILE *stream); Liest, bis size Zeichen oder '\n' erreicht sind/ist nach s Buffer s muss groß genug sein! char *strtok(char *str, const char *delim); Zerlegung von str bei jedem Vorkommen von delim Erster Aufruf: strtok(zusplittenderstring, delim); Alle nachfolgenden: strtok(null, delim); Gibt NULL zurück, wenn kein weiterer Token gefunden wurde Weiterverarbeitung z.b. mit atoi (String int) oder atof (String float Vorsicht! strtok macht den String kaputt! Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 66/80

67 Ein- und Ausgabe in C/C++ Einlesen (C++) cin (#include <iostream>) Benutzung: cin >> var1 >> var2 >> ; varx kann z.b. int, double, long, char u.s.w. sein Komfortabler, aber etwas langsamer als scanf oder fgets + strtok Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 67/80

68 Ein- und Ausgabe in C/C++ Ausgabe int printf(const char *format, ) Benutzung wie in Java mit Formatstring und Argumenten putc, puts, fputc, fputs putc(int c): gibt einzelnen Char auf stdout aus puts(char *s): gibt Char-Array (String) auf stdout aus fputc(int c, FILE *stream), fputs(char *s, FILE *stream): das gleiche mit beliebigen Streams Schneller als printf Nur in C++: cout Benutzung: cout << var1 << var2 << ; Wie cin, nur eben Ausgabe Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 68/80

69 Ein- und Ausgabe - Zeitmessung 5000 x 5000 Integer-Matrix einlesen und ausgeben (in Sekunden) worst avg best fgets scanf cin/cout Java BufferedReader Java Scanner Gcc / javac 1.7.0_51 auf Quad 3.3GHz, Debian x86_64, Kernel Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 69/80

70 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform für kontextfreie Grammatiken Vorgehensweisen beim Parsen Bottom-Up-Parsing CYK-Algorithmus Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 70/80

71 Reguläre Ausdrücke Regulärer Ausdruck = Zeichenkette, die die Struktur einer Zeichenkette beschreibt. Dagegen kann dann gematched werden Beschreibt die regulären Sprachen (Chomsky-3) Zum Filtern oder erkennen von Texten geeignet, weit flexibler als nur z.b. strtok & atoi In Java in der String-Klasse enthalten: String text = 2015 ; if(text.matches( [0-9]+ )) {//text ist eine Zahl} [0-9]+ bedeutet Es komme mindestens einmal ein Zeichen aus dem Bereich '0'-'9' vor Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 71/80

72 Reguläre Ausdrücke in Java Beispiele: [0-9][0-35-9] Ziffer von 0-9, gefolgt von einer Ziffer von 0-3 oder 5-9 [3-5][a-zA-Z]? Ziffer [ ], optional gefolgt von Groß- oder Kleinbuchstabe [0-9]*[a-z]+ Keine oder beliebig viele Ziffern, gefolgt von mindestens einem Buchstaben Das.*Test Beliebige, beliebig viele Zeichen zwischen Leerzeichen und T z.b. Das ist ein Test, Das Test, Das Herpaderp Test, [^a-e] Negation, beliebiges Zeichen außer a-e Römer geht (nach Haus in das Haus) Zusammenfassen von Zeichenfolgen Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 72/80

73 Reguläre Ausdrücke in Java Alternative in Java: Matcher-Klasse Zuerst Reg. Ausdruck zu Pattern umwandeln: Pattern p = Pattern.compile(String regexp); Danach Matcher-Objekt erzeugen: Matcher m = p.matcher(string input) Damit sind folgende Methoden möglich: bool matches(): bool find(): int start(): Matcht kompletten input-string Versucht, einen Teilstring von input auf das Muster zu matchen Gibt Index des ersten passenden chars zurück etc. Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 73/80

74 Reguläre Ausdrücke in C++11 und Python C++11: bool regex_match(string search, string regex): Sucht Matches von regex in search, gibt bei Erfolg true zurück bool regex_search(string search, string regex): Wie match, aber sucht nach Substrings und matcht diese string regex_replace(string search, string regex, string replace): Ersetzt jedes Vorkommen von regex in search durch replace Python: re-modul, ähnlich wie Matcher in Java: import re matcher = re.compile( RegExp ) match = matcher.match( Suchstring ) Match ist None, wenn nichts gefunden wurde, oder lässt durch match.group() bzw. match.groups() auf gefundene(n) String(s) zugreifen Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 74/80

75 Inhalt Einführung Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform für kontextfreie Grammatiken Vorgehensweisen beim Parsen Bottom-Up-Parsing CYK-Algorithmus Top-Down-Parsing Allgemeines Prinzip Rekursiver Abstiegsparser Ein- und Ausgabe in Java, C und C++ Reguläre Ausdrücke Zusammenfassung Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 75/80

76 Zusammenfassung Wichtig für das Verständnis: Theoretisches Hintergrundwissen Formale Grammatiken ( Chomsky-Hierarchie) Umformung nach CNF, um div. Algorithmen anwenden zu können Entfernen von ε-produktionen Neue Terminalregeln Entfernen von Kettenregeln Auflösen längerer Regeln Ziel: Nur noch Regeln der Form S ε A b A Bb B c Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 76/80

77 Zusammenfassung Bottom-Up-Parsing Fange mit Wort an, finde heraus, wie es entstanden sein könnte CYK-Algorithmus Vorher: Grammatik nach CNF umwandeln Laufzeit: O(n3) Top-Down-Parsing Fange mit Startsymbol an, versuche Wort zu bilden Backtracking ( Trial and Error ) Rekursive Abstiegsparser Jede Regel in Funktion umwandeln Linksrekursion vermeiden Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 77/80

78 Zusammenfassung Ein-/Ausgabe in Java, C und C++ Java im Vergleich am Langsamsten Bequemste Variante zum Einlesen: java.util.scanner Schnellste Variante: fgets + strtok Schnellste Ausgabe: putc, printf reicht aber fast immer aus Reguläre Ausdrücke Flexibler und komfortabler In Java mit Matcher- oder String-Klasse Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 78/80

79 Ende Vielen Dank für eure Aufmerksamkeit! Fragen? Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 79/80

80 Literaturhinweise Mitschrift zur Vorlesung Berechenbarkeit und Formale Sprachen, Prof. Rolf Wanka, WS14/15 Vortrag Parsen, Andreas Ruprecht, 2011 C/C++ Reference ( Java 7 API ( Folien zu Theoretische Informatik, Uni Mannheim ( ) Wikipedia (Regulärer Ausdruck, CYK-Algorithmus) TopCoder Forums ( Theoretische Informatik, Ingo Wegener, Teubner Verlag, 3. Auflage, 2005 Python Dokumentation ( Hallo Welt für Fortgeschrittene Parsen Andreas Hammer Folie 80/80

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

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

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

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

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

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

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

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

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

Grundbegriffe. Grammatiken

Grundbegriffe. Grammatiken Grammatiken Grammatiken in der Informatik sind ähnlich wie Grammatiken für natürliche Sprachen ein Mittel, um alle syntaktisch korrekten Sätze (hier: Wörter) einer Sprache zu erzeugen. Beispiel: Eine vereinfachte

Mehr

Beschreibungskomplexität von Grammatiken Definitionen

Beschreibungskomplexität von Grammatiken Definitionen Beschreibungskomplexität von Grammatiken Definitionen Für eine Grammatik G = (N, T, P, S) führen wir die folgenden drei Komplexitätsmaße ein: Var(G) = #(N), Prod(G) = #(P ), Symb(G) = ( α + β + 1). α β

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

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

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

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

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

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

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

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

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen reguläre Grammatiken/prachen Beschreibung für Bezeichner in Programmiersprachen Beschreibung für wild cards in kriptsprachen (/* reguläre Ausdrücke */)?; [a-z]; * kontextfreie Grammatiken/prachen Beschreibung

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

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

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

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

Formale Sprachen. Script, Kapitel 4. Grammatiken

Formale Sprachen. Script, Kapitel 4. Grammatiken Formale Sprachen Grammatiken Script, Kapitel 4 erzeugen Sprachen eingeführt von Chomsky zur Beschreibung natürlicher Sprache bedeutend für die Syntaxdefinition und -analyse von Programmiersprachen Automaten

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

7. Formale Sprachen und Grammatiken

7. Formale Sprachen und Grammatiken 7. Formale Sprachen und Grammatiken Computer verwenden zur Verarbeitung von Daten und Informationen künstliche, formale Sprachen (Maschinenspr., Assemblerspachen, Programmierspr., Datenbankspr., Wissensrepräsentationsspr.,...)

Mehr

Informatik B von Adrian Neumann

Informatik B von Adrian Neumann Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000

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

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

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

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

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling Input / Output in C, C++ Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling Page 1 Ausgaben in C,C++ - generell Fuer C basierte Ausgaben:

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

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

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

Tutoraufgabe 1 (ɛ-produktionen):

Tutoraufgabe 1 (ɛ-produktionen): Prof aa Dr J Giesl Formale Systeme, Automaten, Prozesse SS 2010 M Brockschmidt, F Emmes, C Fuhs, C Otto, T Ströder Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus dem gleichen Tutorium

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

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

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

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

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Einfache Programme: Programm-Argument, Bedingte Anweisungen, Switch, Enum Boolesche Werte und Ausdrücke Seite 1 Beispiel: Umrechnen

Mehr

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2 Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen

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

Theoretische Informatik. Reguläre Sprachen und Automaten

Theoretische Informatik. Reguläre Sprachen und Automaten Theoretische Informatik Reguläre Sprachen und Automaten Reguläre Sprachen Reguläre Ausdrücke und Sprachen Gleichungen Syntaxdiagramme Erweiterungen Anwendungen Reguläre Ausdrücke über Σ Syntax: Konstante

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

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

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

Einführung in die Programmierung mit VBA Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen

Mehr

VU Software Paradigmen / SS 2014

VU Software Paradigmen / SS 2014 VU Software Paradigmen 716.060 / SS 2014 Thorsten Ruprechter ruprechter@tugraz.at Institute for Software Technology 1 Organisatorisches Ausgabe: 25.03. (heute) Fragestunde: 22.04. Abgabe: 29.04 (ausgedruckt)

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die

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

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

Anwendung höherer Programmiersprachen. Formatierte Ausgabe mit cout. Angewandte Informatik I C / C++ Teil B: Formatierte Ein- und Ausgabe

Anwendung höherer Programmiersprachen. Formatierte Ausgabe mit cout. Angewandte Informatik I C / C++ Teil B: Formatierte Ein- und Ausgabe Angewandte Informatik I Anwendung höherer Programmiersprachen C / C++ Vorlesung der FH Münster Prof. Dr.-Ing. H. Bösche // Programm b0301208 #include { int i = 1, j = 2; cout

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

(Prüfungs-)Aufgaben zu formale Sprachen

(Prüfungs-)Aufgaben zu formale Sprachen (Prüfungs-)Aufgaben zu formale Sprachen (siehe auch bei den Aufgaben zu endlichen Automaten) 1) Eine Grammatik G sei gegeben durch: N = {S, A}, T = {a, b, c, d}, P = { (S, Sa), (S, ba), (A, ba), (A, c),

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Einführung in den Einsatz von Objekt-Orientierung mit C++ I Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen

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

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 2. Methoden zur Beschreibung von Syntax 1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von

Mehr

Empfehlenswerte Referenzen

Empfehlenswerte Referenzen Wenn Google etwas nicht finden kann, fragen sie Jack Bauer. ("Fakten über Jack Bauer") Inhalt Empfehlenswerte Referenzen...1 0 Wozu reguläre Ausdrücke?...1 1 Die Elemente regulärer Ausdrücke...2 2 Ein

Mehr

Programmier-Befehle - Woche 10

Programmier-Befehle - Woche 10 Funktionen Rekursion Selbstaufruf einer Funktion Jeder rekursive Funktionsaufruf hat seine eigenen, unabhängigen Variablen und Argumente. Dies kann man sich sehr gut anhand des in der Vorlesung gezeigten

Mehr

Theorie der Informatik

Theorie der Informatik Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 Einführung Beispiel: Aussagenlogische Formeln Aus dem Logikteil: Definition (Syntax

Mehr

Elementare Datentypen in C++

Elementare Datentypen in C++ Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der

Mehr

Erste Schritte der Programmierung in C

Erste Schritte der Programmierung in C Erste Schritte der Programmierung in C C versus C++ Anatomie von C-Programmen für AVR- Mikrocontroller Unterschiede zwischen C++ und C 1 Grundlegende Unterschiede File-Extensions (Header und Quellcode)

Mehr

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

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Theoretische Informatik I (Grundzüge der Informatik I)

Theoretische Informatik I (Grundzüge der Informatik I) Theoretische Informatik I (Grundzüge der Informatik I) Literatur: Buch zur Vorlesung: Uwe Schöning, Theoretische Informatik - kurzgefasst. Spektrum Akademischer Verlag, Heidelberg/Berlin, 4. Auflage, 2001.

Mehr

9 Theoretische Informatik und Compilerbau

9 Theoretische Informatik und Compilerbau 9 Theoretische Informatik und Compilerbau Theoretische Informatik und Mathematik schaffen die Basis für viele der technischen Entwicklungen, die wir in diesem Buch besprechen. Die boolesche Algebra (S.

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

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 1: Bezeichner, Elementare Datentypen, Variablen, Referenzen, Zuweisungen, Ausdrücke Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Bezeichner

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

Rekursiv aufzählbare Sprachen

Rekursiv aufzählbare Sprachen Kapitel 4 Rekursiv aufzählbare Sprachen 4.1 Grammatiken und die Chomsky-Hierarchie Durch Zulassung komplexer Ableitungsregeln können mit Grammatiken größere Klassen als die kontextfreien Sprachen beschrieben

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

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Lehrstuhl für Programmierparadigmen prachtechnologie und Compiler W 2008/2009 http://pp.info.uni-karlsruhe.de/ Dozent: Prof. Dr.-Ing. G. nelting snelting@ipd.info.uni-karlsruhe.de

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

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

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:

Mehr

3. Nur die mit diesen Regeln erzeugten Ausdrücke sind reguläre Ausdrücke über Σ.

3. Nur die mit diesen Regeln erzeugten Ausdrücke sind reguläre Ausdrücke über Σ. H O C H S C H U L E University of Applied Sciences ZITTAU/GÖRLITZ Fachbereich Informatik Prof. Dr. Christian Wagenknecht Formale Sprachen und Automaten Übung: Reguläre Ausdrücke Zur Erinnerung: Reguläre

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Dr. Werner Meixner, Dr. Alexander Krauss Sommersemester 2010 Lösungsblatt 7 15. Juni 2010 Einführung in die Theoretische

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

Theoretische Informatik Mitschrift

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

Mehr

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen Informatik I Übung 2 : Programmieren in Eclipse 5. März 2014 Daniel Hentzen dhentzen@student.ethz.ch Downloads : http://n.ethz.ch/~dhentzen/download/ Heute 1. Nachbesprechung Übung 1 2. Theorie 3. Vorbesprechung

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

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

Einführung in die STL

Einführung in die STL 1/29 in die STL Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/29 Outline 1 3/29 Inhaltsverzeichnis 1 4/29 Typisierung

Mehr

Reguläre Ausdrücke. Felix Döring, Felix Wittwer 14. November Python-Kurs

Reguläre Ausdrücke. Felix Döring, Felix Wittwer 14. November Python-Kurs Reguläre Ausdrücke Felix Döring, Felix Wittwer 14. November 2016 Python-Kurs Gliederung 1. Grundlagen 2. Matching Regeln Sonderzeichen Zusammengesetzte Regex Spezielle Sequenzen 3. Methoden 4. reqular

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Theoretische Informatik. Grammatiken. Grammatiken. Grammatiken. Rainer Schrader. 9. Juli 2009

Theoretische Informatik. Grammatiken. Grammatiken. Grammatiken. Rainer Schrader. 9. Juli 2009 Theoretische Informatik Rainer Schrader Institut für Informatik 9. Juli 2009 1 / 41 2 / 41 Gliederung die Chomsky-Hierarchie Typ 0- Typ 3- Typ 1- Die Programmierung eines Rechners in einer höheren Programmiersprache

Mehr

Was bisher geschah: Formale Sprachen

Was bisher geschah: Formale Sprachen Was bisher geschah: Formale Sprachen Alphabet, Wort, Sprache Operationen und Relationen auf Wörtern und Sprachen Darstellung unendlicher Sprachen durch reguläre Ausdrücke (Syntax, Semantik, Äquivalenz)

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

JAVA-Datentypen und deren Wertebereich

JAVA-Datentypen und deren Wertebereich Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).

Mehr

Kurze Einführung in die Programmiersprache C++ und in Root

Kurze Einführung in die Programmiersprache C++ und in Root Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung

Mehr

Klassen in Java. Grundlagen der Programmierung. Stephan Kleuker 68

Klassen in Java. Grundlagen der Programmierung. Stephan Kleuker 68 Klassen in Java Stephan Kleuker 68 Klassen in Java (Syntax) (1/3) class Datum { int tag; int monat; int jahr; } Java hat Schlüsselworte (z. B. class), diese dürfen z. B. nicht als Variablennamen genutzt

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