1 Spezifikation formaler Sprachen
|
|
- Anke Lang
- vor 7 Jahren
- Abrufe
Transkript
1 1 Spezifikation formaler Sprachen 1.1 Formale Sprachen Ein Alphabet ist eine endliche, nicht-leere Menge von atomaren Symbolen, d.h. von Symbolen, die weder eine innere Struktur besitzen noch eine andere Eigenschaften haben als jene, voneinander unterscheidbar zu sein. Als mathematische Variablen für Alphabete verwenden wir Σ oder T. Um eindeutig zu kennzeichnen, dass ein Zeichen als Symbol und nicht als meta-sprachlicher Begriff zu verstehen ist, unterstreichen wir Symbole. 1.1 Beispiel Das Zeichen 0 ist ein Symbol, das wie die Ziffer 0 aussieht, tatsächlich aber von vorneherein keine Bedeutung besitzt (es sei denn, wir ordnen sie ihm explizit zu). Ist Σ ein Alphabet, dann entspricht der Ausdruck 0 Σ der Aussage Das Symbol 0 kommt im Alphabet Σ vor. Die Aussage 0 Σ ergibt hingegen nur Sinn, wenn Σ kein Alphabet, sondern etwa eine Menge von Zahlen ist. Analog ist + ein Symbol, das wie ein Kreuz aussieht, während + in einem mathematischen Kontext die Addition, also eine zweistellige Funktion, bezeichnet. 2+3 ist eine Abfolge von 3 Symbolen, die nichts mit 5 zu tun hat, während äquivalent zu 5 ist. Der Ausdruck wird üblicherweise wenig Sinn haben, da die Addition nicht auf Zeichen definiert ist. Wichtig ist auch, zwischen Symbolen und mathematischen Variablen zu unterscheiden. Der Ausdruck a Σ entspricht der Aussage Das Symbol a kommt in Σ vor, während a Σ der Typdefinition Sei a irgendein Symbol aus Σ entspricht. Ein Wort über einem Alphabet Σ ist eine Folge von Symbolen aus Σ. Das Wort, das aus gar keinen Zeichen besteht, wird Leerwort genannt. Um dieses unsichtbare Wort niederschreiben zu können, verwenden wir das metasprachliche Zeichen ε. Die Menge aller Wörter über Σ wird mit Σ + oder, wenn auch das Leerwort ε in der Menge enthalten ist, mit Σ bezeichnet: Σ + = {s 1 s n s i Σ, 1 i n} Σ = Σ + {ε} Wörter können durch den Verkettungsoperator verknüpft werden: w 1 w 2 = w 1 w 2, d.h., das Wort w 1 verkettet mit dem Wort w 2 ergibt das Wort w 1 w 2. Das Leerwort spielt dabei die Rolle eines neutralen Elementes, d.h., mit einem beliebigen Wort verkettet ergibt sich wieder dieses Wort: w ε = ε w = w. Algebraisch gesehen bildet Σ,, ε somit ein Monoid (=Halbgruppe mit Einselement), da Σ abgeschlossen bezüglich des assoziativen Verkettungsoperators ist und ε als neutrales Element fungiert. 1
2 Zusätzlich definieren wir Potenzen von Worten: w 0 = ε, w n+1 = w w n für n 0. Die Länge eines Wortes w, geschrieben als w, ist die Anzahl der Symbolvorkommnisse in w: ε = 0, aw = 1 + w für a Σ, w Σ. 1.2 Beispiel Sei Σ das Alphabet {a, b}. Dann ist Σ die Menge {ε, a, b, aa, ab, ba, bb, aaa, aab, aba,...}. Σ + ist identisch mit Σ bis auf den Umstand, dass Σ + das Leerwort ε nicht enthält. Beispiele zur Verkettung: ab ba = abba, ba ab = baab, ab ε = ε ab = ab, (ab) 0 = ε, (ab) 1 = ab, (ab) 2 = abab, (ab) 3 = ababab Die ersten beiden Beispiele zeigen, dass die Verkettung nicht kommutativ ist. Unter einer formalen Sprache L über einem Alphabet Σ versteht man eine beliebige Menge von Wörtern über Σ, d.h., L Σ. Die Menge aller Sprachen ist die Menge aller Teilmengen von Σ, also die Potenzmenge P(Σ ) von Σ. 1.3 Beispiel Beispiele für Sprachen: Über den Buchstaben A Z inklusive Umlauten und Satzzeichen: die Menge aller grammatikalisch richtigen deutschen Sätze. Über dem Ascii-Zeichensatz: die Menge aller C-Programme. Über einem beliebigen Alphabet: die Menge aller Palindrome (=Wörter, die von vorne nach hinten und hinten nach vorne gelesen gleich lauten, wie omo, anna, otto, reliefpfeiler,... ). Längere, aber nicht unbedingt sinnvollere Palindrome sind Vitaler Nebel mit Sinn ist im Leben relativ und Satan, oscillate my metallic sonatas. Über einem beliebigen Alphabet: die leere Menge; die Menge aller Wörter; die Menge aller Wörter der Länge 4. Der Verkettungsoperator kann von Wörtern auf Sprachen erweitert werden. Seien L 1 und L 2 zwei Sprachen über Σ, d.h. L 1, L 2 Σ bzw. L 1, L 2 P(Σ ). Dann definieren wir die Verkettung von Sprachen als L 1 L 2 = {w 1 w 2 w 1 L 1, w 2 L 2 }. Bei dieser Operation übernimmt {ε} die Funktion des Einheitselementes. Somit bildet P(Σ ),, {ε} wieder ein Monoid. 2
3 Rechengesetz Kommentar A B = B A Vereinigung ist kommutativ. A (B C) = (A B) C Vereinigung ist assoziativ. A (B C) = (A B) C Verkettung ist assoziativ. A (B C) = A B A C Verkettung distribuiert über Vereinigung (A B) C = A C B C {ε} A = A {ε} ist das Einheitselement bzgl. Verkettung A {ε} = A (A {ε}) = A (A ) = A ist idempotent A A = A + A A = A + A + {ε} = A Tabelle 1.1: Algebraische Eigenschaften der Sprachoperatoren Auch die Potenzenbildung lässt sich auf Sprachen erweitern. Ist L eine Sprache, dann sind ihre Potenzen definiert durch L 0 = {ε}, L n+1 = L L n für n 0. Vereinigt man alle Potenzen, erhält man den Stern-Operator 1 L = n 0 Ln, und analog den Plus-Operator L + = n 1 Ln. Ist L ein Alphabet, d.h., bestehen alle Wörter in L aus nur einem Zeichen, dann ist L n genau die Menge aller Wörter der Länge n, die mit den Symbolen in L gebildet werden können. L ist dann die Vereinigung der Wörter aller Längen, somit die Menge aller Wörter über dem Alphabet L. Wegen L 0 = {ε} enthält L auch das Leerwort. Die Vereinigung in der Definition von L + hingegen beginnt erst bei n = 1, somit ist das Leerwort nur dann in L +, falls es bereits in L war. Tabelle 1.1 gibt einen Überblick über wichtige Rechenregeln für Sprachoperatoren. 1.4 Beispiel Sei Σ = {a, b}. Wir erhalten Σ 0 = {ε}, Σ 1 = Σ, Σ 2 = {aa, ab, ba, bb} und Σ 3 = {aaa, aab, aba, abb, baa, bab,...}. Die Menge Σ ist die Vereinigung all dieser Mengen, somit die Menge aller Wörter über den Symbolen a und b. 1.2 Induktive Definitionen Die in der Informatik auftretenden Mengen enthalten zum Teil Elemente komplizierterer Bauart; man denke etwa an die Menge aller syntaktisch korrekten C-Programme. Eine übliche mathematische Methode zur Definition unendlicher Mengen ist die stufenweise Konstruktion: unter Verwendung einer gegebenen Grundmenge A 0 sowie der 1 Nach seinem Erfinder auch Kleene-Stern genannt, gesprochen [ kli:ni]. 3
4 bisher konstruierten Mengen A 1,..., A k baut man nach bestimmten Vorschriften die nächste Menge A k+1 auf, die üblicherweise komplizierter als die Vorgängermengen ist. Die dadurch insgesamt definierte Menge ist dann die Vereinigung all dieser Mengen: A = i ω A i. 1.5 Beispiel Sei A 0 die Menge der Ziffern, also A 0 = {0,..., 9}. Additive Ausdrücke über dieser Menge lassen sich stufenweise konstruieren durch: A 1 = A 0 {u+v u, v A 0 } = {0,..., 9, 0+0, 0+1,..., 9+9} A 2 = A 1 {u+v u, v A 1 } = {0,..., 0+0,..., 0+0+0, 0+0+1,..., ,..., }. Die Menge aller additiven Ausdrücke ergibt sich als i 0 A i. Stufenweise konstruierte Mengen sind in folgendem Sinn abgeschlossen bezüglich der Konstruktionsvorschriften. 1.6 Definition Sei B eine Menge und f: B n B eine Funktion. Eine Menge A B heißt abgeschlossen unter f, wenn gilt: aus x 1,..., x n A folgt f(x 1,..., x n ) A. 1.7 Satz Sei B eine Menge, A 0 B und f: B n B. Weiters sei und A = k 0 A k. Dann gilt: (a) A ist abgeschlossen unter f. A k+1 = A k {f(x 1,..., x n ) x 1,..., x n A k } (b) Ist A irgendeine Teilmenge von B, die A 0 enthält und abgeschlossen ist unter f, dann ist A Teilmenge von A (A A ). Beweis (a) Laut Definition der Abgeschlossenheit müssen wir zeigen, dass f(x 1,..., x n ) für beliebige x 1,..., x n A in A liegt. Auf Grund der Konstruktion der Mengen A i gilt A i A i+1 für alle i 0. Daher muss es ein k geben, sodass x 1,..., x n allesamt in A k liegen. Daraus folgt aber f(x 1,..., x n ) A k+1. Die Menge A ist die Vereinigung aller A k, enthält also auch die Elemente von A k+1, insbesondere f(x 1,..., x n ). (b) Um zu zeigen, dass A Teilmenge von A ist, beweisen wir mittels vollständiger Induktion, dass A k Teilmenge von A ist für alle k 0. Offenbar gilt dann auch A A, da A die Vereinigung aller A k ist. Induktionsanfang: A 0 ist laut Voraussetzung des Satzes in A. Induktionshypothese: A k ist Teilmenge von A. 4
5 Induktionsschritt: Wir müssen zeigen, dass auch A k+1 A gilt. Laut Definition gilt A k+1 = A k {f(x 1,..., x n ) x 1,..., x n A k }. Wegen der Induktionshypothese können wir A k A annehmen, es bleibt zu beweisen, dass {f(x 1,..., x n ) x 1,..., x n A k } A gilt. Dies folgt aber aus der Induktionshypothese und der Abgeschlossenheit von A bezüglich f: da x 1,..., x n in A k und damit in A liegen, muss auch f(x 1,..., x n ) in A liegen. In anderen Worten: A ist die kleinste Menge, die A 0 enthält und abgeschlossen ist unter f. Um A kompakt und eindeutig zu definieren, kann daher folgendes Schema verwendet werden. Schema der induktiven Definition A ist die kleinste Menge, für die gilt: (a) A 0 A (b) Wenn x 1,..., x n A, dann f(x 1,..., x n ) A. Induktive Definitionen bestehen somit aus drei wesentlichen Komponenten: einer Grundmenge, einer Abschlusseigenschaft und einer Minimalitätsbedingung (... ist kleinste Menge, für die gilt... ). 1.8 Beispiel Die in Beispiel 1.5 stufenweise konstruierte Menge lässt sich induktiv definieren als die kleinste Menge A, für die gilt: (a) {0, 1,..., 9} A (b) Wenn x, y A, dann auch x+y A. 1.9 Beispiel Die geraden Zahlen können induktiv definiert werden als die kleinste Menge, für die gilt: (a) Grundelement: 0 ist eine gerade Zahl. (b) Abschlusseigenschaft: Ist n eine gerade Zahl, dann ist auch n + 2 eine solche. Jede der drei Bedingungen ist notwendig, um die geraden Zahlen eindeutig festzulegen. Ohne der Minimalitätsbedingung etwa käme auch die Menge aller natürlichen Zahlen in Frage, da 0 eine natürliche Zahl ist und die natürlichen Zahlen abgeschlossen unter der Funktion +2 sind. Allerdings ist sie nicht die kleinste Menge mit diesen Eigenschaften, da die geraden Zahlen eine echte Teilmenge bilden. Die erste Bedingung hingegen scheidet die ungeraden Zahlen als Kandidat aus. Die induktive Definition kann gemäß Satz 1.7 auch benützt werden, um die geraden Zahlen stufenweise zu konstruieren: A 0 = {0} A 1 = A 0 {n + 2 n A 0 } = {0} {2} = {0, 2} A 2 = A 1 {n + 2 n A 1 } = {0, 2} {2, 4} = {0, 2, 4} A 3 = A 2 {n + 2 n A 2 } = {0, 2, 4} {2, 4, 6} = {0, 2, 4, 6}. 5
6 1.3 Reguläre Sprachen Eine der einfachsten Sprachklassen ist die Menge der regulären Sprachen. Reguläre Sprachen können auf mehrere gleichwertige Arten definiert werden: als reguläre Mengen, als die von endlichen Automaten akzeptierte Sprachfamilie, als die Menge der von regulären Grammatiken erzeugten Sprachen usw. Wegen ihrer Einfachheit und der damit verbundenen guten Eigenschaften treten reguläre Sprachen in der Informatik häufig auf. In der ersten Phase eines Compilerlaufes, der sogenannten lexikalischen Analyse, wird das Benutzerprogramm in eine Folge von Token umgewandelt; der entsprechende Programmteil des Compilers wird als Scanner oder Lexer bezeichnet. Der Lexer fasst alle Zeichen, die zu einem Schlüsselwort, einem Bezeichner, einem Operator oder einer Zahl gehören, zusammen und wandelt sie in eine interne Darstellung um. Die Menge aller Wörter, die jeweils ein Token bilden alle Schlüsselwörter, Bezeichner, Zahlendarstellungen bilden eine reguläre Sprache. Diese reguläre Sprache lässt sich mittels regulärer Ausdrücke (siehe unten) beschreiben. Es gibt Programme, sogenannte Scannergeneratoren, die aus dieser Beschreibung automatisch einen passenden Scanner erzeugen können, der dann als Teil eines Compilers genau diese reguläre Sprache in Token umwandelt; bekannte Scannergeneratoren unter Unix sind etwa lex und flex. Ein anderes Anwendungsgebiet sind Texteditoren. Fortgeschrittene Editoren erlauben nicht nur das Suchen fester Zeichenketten in einem Text, sondern ermöglichen die Angabe von Mustern, mit denen alle Zeichenketten gesucht werden können, die in der durch das Muster spezifizierten Sprache liegen. Beispiele für solche Editoren sind vi und emacs unter Unix oder auch der Norton Desktop-Editor. Etwa kann man im vi mit dem Muster [0-9][0-9]* alle ganzen Zahlen im Text auffinden. Weiters gibt es zahlreiche Programme, insbesondere unter Unix, die die Spezifikation von (Teilmengen von) regulären Sprachen zulassen. Dies beginnt bei Kommandointerpretern wie Dos oder Unix-Shells, die bei der Selektion von Dateien Ausdrücke mit Wildcards zulassen, und geht bis zu Programmen wie egrep oder awk, die beliebige reguläre Ausdrücke akzeptieren. Darüber hinaus bilden reguläre Ausdrücke ein wesentliches Element von Programmiersprachen wie Perl, die zur Analyse und Erzeugung von Textdateien (etwa von Html-Seiten) eingesetzt werden. Sucht man auf dem Server des World Wide Web Consortiums (W3C) nach den Spezifikationen der Websprachen, stößt man auf einen Formalismus, der ausgiebig von regulären Ausdrücken Gebrauch macht. In der Xml-Spezifikation treten reguläre Ausdrücke sogar auf zwei Ebenen auf: einmal objektsprachlich als Teil von Document Type Definitions (Dtds), und einmal metasprachlich zur Beschreibung der Syntax von Xml (und damit auch jener von Dtds). In den folgenden Abschnitten definieren wir die regulären Sprachen als reguläre Mengen und beschreiben verschiedene Formalismen und Notationen zur Festlegung regulärer Mengen. 6
7 1.3.1 Reguläre Mengen Reguläre Mengen sind nichts anderes als alle Sprachen, die aus einem Alphabet mittels der in Abschnitt 1.1 definierten Operationen Vereinigung, Verkettung und Kleene-Stern gebildet werden können Definition Die Menge L reg (Σ) der regulären Sprachen über Σ ist die kleinste Menge, für die gilt: (a) {}, {ε} L reg (Σ); {s} L reg (Σ) für alle s Σ; (b) Wenn A, B L reg (Σ), dann gilt auch A B, A B, A L reg (Σ), d.h., L reg (Σ) ist abgeschlossen gegenüber Vereinigung, Verkettung und Kleene-Stern. Offensichtlich ist L reg auch gegenüber dem + -Operator abgeschlossen: jeder Ausdruck X + kann ja durch X X ersetzt werden Beispiel Die Menge der Real-Zahlen in Modula ist eine reguläre Menge über dem Alphabet {0,..., 9,., E, +, -}: Laut erstem Punkt von Definition 1.10 sind die Mengen {ε}, {0},..., {9}, {.}, {E}, {+} und {-} regulär. Da die Vereinigung regulärer Mengen wieder regulär ist, ist auch digit = {0,..., 9} regulär. Die Menge {E, E+, E-} ist regulär, da sie mittels Verkettung und Vereinigung aufgebaut werden kann: {E} {E} {+} {E} {-}. Aus der Abgeschlossenheit bzgl. Plus- und Sternoperator folgt, dass auch digit + und digit regulär sind. Daraus lässt sich nun die Menge der Real-Zahlen zusammensetzen: real = digit + {.} digit ({ε} {E, E+, E-} digit + ). Eine Realzahl beginnt demnach mit einer Folge von Ziffern (mindestens einer), gefolgt von einem Punkt und weiteren optionalen Ziffern. Danach kann ein Exponentialteil folgen, der aus dem Symbol E, einem optionalen Vorzeichen und mindestens einer Ziffer bestehen muss Beispiel Wir konstruieren einige der regulären Sprachen in L reg ({a}) gemäß Satz 1.7. Im ersten Schritt erhalten wir alle Sprachen, die laut Punkt 1 der induktiven Definition von L reg reguläre Mengen sind: A 0 = {{}, {ε}, {a}}. 7
8 Im nächsten Schritt kommen alle Sprachen hinzu, die aus A 0 mittels Vereinigung, Verkettung und Stern-Operator gebildet werden können: A 1 = A 0 {{ε, a}, {aa}, {a n n 0}}. Durch Vereinigung von Elementen aus A 1 ergeben sich drei neue Mengen: {ε, aa}, {a, aa} und {ε, a, aa}. Durch Verkettung erhalten wir sechs neue Mengen, darunter etwa {ε, a} {aa} = {aa, aaa} und {aa} {a n n 0} = {a n n 2}. Der Stern-Operator liefert nur auf {aa} angewendet eine neue Sprache: {aa} = {a 2n n 0}. Insgesamt ergibt sich: A 2 = A 1 { {ε, aa}, {a, aa}, {ε, a, aa}, {aa, a 3 }, {a 3 }, {a 4 }, {a n n 1}, {a n n 2}, {a 2n n 0} }. In A 3 alleine durch die Vereinigung 19 neue Sprachen hinzu Reguläre Ausdrücke Um reguläre Sprachen spezifizieren zu können, muss eine geeignete Notation festgelegt werden. Abhängig von den historischen Wurzeln und den Anforderungen wie der Verständlichkeit für Nicht-Formalisten, der Ausdrückbarkeit im Ascii-Zeichensatz oder der einfachen algebraischen Handhabbarkeit wurden verschiedene Varianten eingeführt, die sich direkt ineinander übersetzen lassen. Tabelle 1.2 gibt eine Übersicht, wobei A für die Bezeichnung einer Untersprache, s für ein Symbol und X bzw. Y für einen Teilausdruck im jeweiligen Formalismus steht. Algebraische Notation Aufgrund der Monoid-Eigenschaften der Sprachenverkettung orientiert sich die algebraische Notation an der Addition und verwendet + für die Mengenvereinigung und für das neutrale Elemente {}. Die Elementarsprachen {ε} und {s} (für s Σ) werden ohne Mengenklammern geschrieben, und Verkettung wird durch Nebeneinanderschreiben ausgedrückt. Um Klammern zu sparen, ordnet man die höchste und der Vereinigung die niedrigste Priorität zu. Formal lässt sich die Sprache L(e), die durch einen regulären Ausdruck e in algebraischer Notation spezifiziert wird, definieren als: L(0) = {} L(ε) = {ε} L(s) = {s} L(e 1 e 2 ) = L(e 1 ) L(e 2 ) L(e 1 + e 2 ) = L(e 1 ) L(e 2 ) L(e ) = L(e) wobei s Σ ein Symbol und e, e 1, e 2 reguläre Ausdrücke sind Beispiel Die Realzahlen aus Beispiel 1.11 lassen sich darstellen als digit digit. digit (ε + (E + E + + E -) digit digit ) wobei digit eine Abkürzung für den Ausdruck ( ) ist. 8
9 reg. Menge Algebra Ebnf Syntaxdiagramm Kommentar A A A A Untersprache {} 0 Leersprache {ε} ε Leerwort-Sprache {s} s "s" s Terminalsymbole X Y XY X Y X Y Aufeinanderfolge X X Y X + Y X Y Alternativen Y X {ε} X ε + X [X ] Option X X X {X } Wiederholung 0 X + XX X {X } X Wiederholung 1 (X) (X) (X ) Gruppierung Tabelle 1.2: Verschiedene Notationen für reguläre Ausdrücke EBNF Die Syntax der Programmiersprache Modula-2 im Anhang des Buches Programming in Modula-2 von N. Wirth wird durch Regeln in erweiterter Backus-Naur Form (EBNF) beschrieben. Eine EBNF ist nichts anderes als eine kontextfreie Grammatik (siehe später in der Vorlesung) erweitert um reguläre Ausdrücke Beispiel In dem erwähnten Buch wird die Syntax der Realzahlen spezifiziert durch real = digit {digit} "." {digit} [ScaleFactor] ScaleFactor = "E" ["+" "-"] digit {digit} digit = "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" Diese Regeln lassen sich gemäß Tabelle 1.2 in reguläre Mengen übersetzen: real = digit digit {.} digit ({ε} ScaleFactor) ScaleFactor = {E} ({ε} {+} {-}) digit digit digit = {0} {1} {9} Vereinfacht man die rechten Seiten, erhält man den gleichen Ausdruck für real wie in Beispiel
10 real digit digit. ScaleFactor ScaleFactor + E digit - digit Abbildung 1.3: Syntaxdiagramme für die Realzahlen in Modula Syntaxdiagramme Zur Beschreibung der Syntax von Pascal und Modula führte N. Wirth Syntaxdiagramme ein, die nichts anderes als eine graphische Darstellung regulärer Ausdrücke in EBNF sind. Die zu einem Syntaxdiagramm gehörende Sprache erhält man, indem man den Graphen in Richtung der Pfeile durchläuft und alle angetroffen Terminalsymbole aneinander reiht. Ein Rechteck mit dem Namen eines anderen Syntaxdiagrammes entspricht dabei einem Unterdiagrammaufruf : an Stelle des Rechtecks wird das angegebene Syntaxdiagramm durchlaufen und anschließend im ursprünglichen Diagramm nach dem Rechteck fortgesetzt Beispiel Die Syntaxdiagramme in Abb. 1.3 beschreiben (wieder einmal) die Syntax der Realzahlen in Modula. Reguläre Ausdrücke unter Unix Viele Standardprogramme in Unix erlauben als Eingabe reguläre Ausdrücke. Beispiele dafür sind Editoren wie emacs, vi, ex und sed, Kommandos wie awk oder egrep, und Scannergeneratoren wie lex. Die Schreibweise der regulären Ausdrücke ist bei all diesen Kommandos ähnlich (leider aber nicht identisch 2 ). Stellvertretend betrachten wir die regulären Ausdrücke, wie sie von egrep akzeptiert werden. Das Kommando egrep reg. Ausdruck Textdatei sucht aus Textdatei alle Zeilen heraus, die eine Zeichenkette enthalten, welche in der durch reg. Ausdruck definierten regulären Sprache liegt. Tabelle 1.4 fasst die wichtigsten Ausdruckselemente zusammen. 2 Der Mathematiker und Informatiker D.E. Knuth auch bekannt als Schöpfer des Textsystems TEX, das zum Setzen dieses Skriptums verwendet wurde definiert Unix als 30 definitions of regular expressions living under one roof. 10
11 Ausdruck selektiert Beispiel s Einzelzeichen s, falls kein Spezialsymbol \s Einzelzeichen s (auch wenn Spezialsymbol). jedes beliebige Zeichen außer Zeilenende a selektiert alle Zeilen, die a enthalten a\.b selektiert alle Zeilen mit der Zeichenfolge a.b a.b selektiert alle Zeilen, die entweder aab oder abb oder acb oder... enthalten ^ Zeilenanfang ^a selektiert alle Zeilen, die mit a beginnen $ Zeilenende a$ selektiert alle Zeilen, die mit a enden [s 1 s n ] alle Zeichen in {s 1,..., s n } [ab] selektiert alle Zeilen, die a oder b enthalten [^s 1 s n ] alle Zeichen, die nicht in {s 1,..., s n } vorkommen r* null oder mehr Vorkommnisse von r r+ ein oder mehr Vorkommnisse von r r? ein oder kein Vorkommnis von r [^ab] selektiert alle Zeilen, die nicht nur aus a s und b s bestehen a.*a selektiert alle Zeilen, die zwei durch beliebig viele (auch null) Zeichen getrennte a s enthalten a.+a selektiert alle Zeilen, die zwei durch beliebig viele (aber mind. ein) Zeichen getrennte a s enthalten a.?a selektiert alle Zeilen, die zwei durch null oder ein Zeichen getrennte a s enthalten r{i} i Vorkommnisse von r a.{4}a selektiert alle Zeilen, die zwei durch genau vier Zeichen getrennte a s enthalten r{i,} i oder mehr Vorkommnisse von r a{0,} ist gleichbedeutend mit a* und a{1,} mit a+ r{i,j} i bis j Vorkommnisse von r a{0,1} ist gleichbedeutend mit a? r 1 r 2 r 1 gefolgt von r 2 ab selektiert alle Zeilen, die ein a unmittelbar gefolgt von b enthalten r 1 r 2 r 1 oder r 2 a b selektiert alle Zeilen, die a oder b enthalten (r) r (a b) ist gleichbedeutend mit [ab] Tabelle 1.4: Reguläre Ausdrücke des Kommandos egrep 11
12 1.16 Beispiel Um alle Zeilen zu erhalten, die genau eine Realzahl in Modula-Syntax (und sonst nichts) enthalten, muss egrep mit dem regulären Ausdruck ^[0-9]+\.[0-9]*(E[+-]?[0-9]+)?$ aufgerufen werden. Reguläre Definitionen Hinter dem Begriff der regulären Definition verbirgt sich nichts anderes als die Verwendung von Abkürzungen für reguläre Teilausdrücke. In den vorangegangenen Beispielen wurde bereits stillschweigend davon Gebrauch gemacht. So verwenden die meisten regulären Ausdrücke für die Realzahlen (inklusive der Syntaxdiagramme) neben real auch noch ScaleFactor und digit. Reguläre Definitionen erhöhen nicht die Ausdruckskraft regulärer Ausdrücke: sie können ja durch Ersetzung der linken durch die rechten Seiten jederzeit eliminiert werden. Ihr Nutzen liegt in der besseren Strukturierung und damit der besseren Lesbarkeit der regulären Ausdrücke. Die einzige Einschränkung bei der Verwendung regulärer Definitionen besteht darin, dass keine (direkten oder indirekten) Rekursionen entstehen dürfen. eine Definition wie digits = digit digits {ε} ist nicht zulässig, da digits in seiner eigenen Definition (der rechten Seite Der Gleichung) vorkommt. 12
Induktive Definition
Rechenregeln A B = B A A (B C) = (A B) C A (B C) = (A B) C A (B C) = A B A C (B C) A = B A C A {ε} A = A A {ε} = A (A {ε}) = A (A ) = A A A = A + A A = A + A + {ε} = A Beispiel. Real-Zahlen = {0,..., 9}
Mehr3.0 VU Formale Modellierung
3.0 VU Formale Modellierung Gernot Salzer Arbeitsbereich Theoretische Informatik und Logik Institut für Computersprachen SS 206 Inhalt 0. Überblick. Organisation 2. Was bedeutet Modellierung? 3. Aussagenlogik
MehrTheoretische Informatik und Logik
Theoretische Informatik und Logik Homepage zu dieser LVA: http://www.logic.at/lvas/wiki/185263 Bernhard Gramlich, gramlich@logic.at Marion Oswald, marion@logic.at 1 Vorlesungsteil Vorlesungtermine: Do,
MehrReguläre Ausdrücke. Michael Jäger. 4. April 2017
Reguläre Ausdrücke Michael Jäger 4. April 2017 Zeichenketten und Sprachen Ein Alphabet ist eine endliche Menge von Symbolen. Beispiele: 1. Σ 1 = {0, 1} 2. Σ 2 = {a, b, c, d, e, f, g, h, i, j, k, l, m,
MehrBeurteilung. Theoretische Informatik für Lehramt I. Christian Fermüller, Gernot Salzer,
Theoretische Informatik 1 www.logic.at/lvas/thinf1 Theoretische Informatik für Lehramt I www.logic.at/lvas/tila1 Christian Fermüller, chrisf@logic.at Gernot Salzer, salzer@logic.at 1 Beurteilung Übung
MehrSatz (Abschluß unter der Stern-Operation)
Satz (Abschluß unter der Stern-Operation) Wenn L eine reguläre Sprache ist, dann ist auch L regulär. Beweis: Es gibt einen NFA M = (Z, Σ, S, δ, S, E) mit L(M) = L. Wir bauen aus diesem NFA nun wie folgt
MehrSyntax von Programmiersprachen
"Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt Syntax von Programmiersprachen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang WS 07/08
MehrSyntax von Programmiersprachen
"Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt Syntax von Programmiersprachen Prof. Dr. Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp
MehrFragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen
Fragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen 1. Was ist eine formale Sprache? Menge von Zeichenketten, die aus den Symbolen eines beliebigen Alphabets aufgebaut sind. Zeichenkette:
MehrAlphabet, formale Sprache
n Alphabet Alphabet, formale Sprache l nichtleere endliche Menge von Zeichen ( Buchstaben, Symbole) n Wort über einem Alphabet l endliche Folge von Buchstaben, die auch leer sein kann ( ε leere Wort) l
MehrTheorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie
Theorie der Informatik 17. März 2014 6. Formale Sprachen und Grammatiken Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 6.1 Einführung
MehrGrundbegriffe der Informatik
Grundbegriffe der Informatik Einheit 4: Wörter (und vollständige Induktion) Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Oktober 2008 1/29 Überblick Wörter Wörter Das leere Wort Mehr zu
MehrSyntax von Programmiersprachen
"Grammatik, die sogar Könige zu kontrollieren weiß aus Molière, Les Femmes Savantes (1672), 2. kt Syntax von Programmiersprachen Prof. Dr. Martin Wirsing Ziele Zwei Standards zur Definition der Syntax
Mehr3.0 VU Formale Modellierung
3.0 VU Formale Modellierung Gernot Salzer 25.10.2011 1 Was Sie letzte Woche hörten 4. Endliche Automaten 4.1. Einleitung 4.2. Anwendungsbeispiele 4.3. Grundlagen formaler Sprachen 4.4. Deterministische
Mehr1. Übungsblatt 6.0 VU Theoretische Informatik und Logik
. Übungsblatt 6. VU Theoretische Informatik und Logik 25. September 23 Aufgabe Sind folgende Aussagen korrekt? Begründen Sie jeweils Ihre Antwort. a) Für jede Sprache L gilt: L < L (wobei A die Anzahl
MehrWas Sie letzte Woche hörten. 3.0 VU Formale Modellierung. Formale Sprachen. Was Sie letzte Woche hörten
Was Sie letzte Woche hörten 3. VU Formale Modellierung Gernot Salzer 25..2 4. Endliche Automaten 4.. Einleitung 4.2. Anwendungsbeispiele 4.3. Grundlagen formaler Sprachen 4.4. Deterministische endliche
MehrTheoretische 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
MehrKapitel 5: Syntaxdiagramme und Grammatikregeln
5. Syntaxdiagramme und Grammatikregeln 5-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 5: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische
MehrGrundlagen der theoretischen Informatik
Grundlagen der theoretischen Informatik Kurt Sieber Fakultät IV, Department ETI Universität Siegen SS 2013 Vorlesung vom 09.04.2013 Inhalt der Vorlesung Teil I: Automaten und formale Sprachen (Kurt Sieber)
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 1. Automaten und Sprachen 1.1 Endlicher Automat Einen endlichen Automaten stellen wir uns als Black Box vor, die sich aufgrund einer Folge von
MehrAlgorithmen und Datenstrukturen I - Exkurs Formale Sprachen -
Algorithmen und Datenstrukturen I - - Thies Pfeiffer Technische Fakultät tpfeiffe@techfak.uni-bielefeld.de Vorlesung, Universität Bielefeld, Winter 2012/2013 1 / 22 Exkurs: Formale Sprachen Im Kapitel
MehrAlgorithmen und Datenstrukturen I - Exkurs Formale Sprachen -
Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen - Thies Pfeiffer Technische Fakultät tpfeiffe@techfak.uni-bielefeld.de Vorlesung, Universität Bielefeld, Winter 2012/2013 1 / 1 Exkurs: Formale
Mehr7. Syntax: Grammatiken, EBNF
7. Syntax: Grammatiken, EBNF Teil 1 Sehr schönes Beispiel für Notwendigkeit der Theoretischen Informatik für Belange der Praktischen Informatik Vertiefung in: Einführung in die Theoretische Informatik
MehrKapitel IV Formale Sprachen und Grammatiken
Kapitel IV Formale Sprachen und Grammatiken 1. Begriffe und Notationen Sei Σ ein (endliches) Alphabet. Dann Definition 42 1 ist Σ das Monoid über Σ, d.h. die Menge aller endlichen Wörter über Σ; 2 ist
MehrTheoretische Informatik und Logik, VU 4.0 (Teil1: Berechenbarkeit, Formale Sprachen und Komplexitätstheorie)
185.278 Theoretische Informatik und Logik, VU 4.0 (Teil1: Berechenbarkeit, Formale Sprachen und Komplexitätstheorie) Marion OSWALD (marion@logic.at) unter Mitwirkung von Chris FERMÜLLER, Rudi FREUND, Alexander
Mehr(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),
MehrKapitel 4: Syntaxdiagramme und Grammatikregeln
4. Syntaxdiagramme und Grammatikregeln 4-1 Objektorientierte Programmierung (Winter 2006/2007) Kapitel 4: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
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
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
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
MehrFormale Sprachen. Grundbegriffe für formale Sprachen. Rudolf FREUND, Marian KOGLER
Formale Sprachen Grundbegriffe für formale Sprachen Rudolf FREUND, Marian KOGLER Formale Sprachen AXEL THUE (1863-1922) The further removed from usefulness or practical application the more important 1906:
MehrSprachen sind durch folgenden Aufbau gekennzeichnet:
BNF UND SYNTAXDIAGRAMME 1. Allgemeines 1.1 Aufbau von Sprachen BNF und Syntaxdiagramme werden verwendet, um die Syntax einer Sprache darzustellen und graphisch zu veranschaulichen. Mit ihnen können entweder
MehrAutomaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013
Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2013 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1 Reguläre Ausdrücke Wozu
Mehr6 F O R M A L E S P R A C H E N. 6.1 formale sprachen
6.1 formale sprachen 6 F O R M A L E S P R A C H E N Eine natürliche Sprache umfasst mehrere Aspekte, z. B. Aussprache und Stil, also z. B. Wortwahl und Satzbau. Dafür ist es auch notwendig zu wissen,
MehrFormale Sprachen und endliche Automaten
Formale Sprachen und endliche Automaten Formale Sprachen Definition: 1 (Alphabet) Ein Alphabet Σ ist eine endliche, nichtleere Menge von Zeichen oder Symbolen. Ein Wort über dem Alphabet Σ ist eine endliche
MehrGrundlagen der Theoretischen Informatik
Grundlagen der Theoretischen Informatik Sommersemester 2017 20.04.2017 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt Organisatorisches Literatur Motivation und Inhalt Kurzer
MehrKapitel 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
MehrTheoretische Grundlagen des Software Engineering
Theoretische Grundlagen des Software Engineering 5: Reguläre Ausdrücke und Grammatiken schulz@eprover.org Software Systems Engineering Reguläre Sprachen Bisher: Charakterisierung von Sprachen über Automaten
MehrEinführung in die Computerlinguistik formale Sprachen
Einführung in die Computerlinguistik formale Sprachen Dozentin: Wiebke Petersen 2. Foliensatz Wiebke Petersen Einführung CL 1 Wiebke Petersen Einführung CL 2 Wiebke Petersen Einführung CL 3 Wiebke Petersen
MehrEinfü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 2 Lösungsblatt 3. April 2 Einführung in die Theoretische Informatik
MehrFormale Sprachen und Automaten
Formale Sprachen und Automaten Kapitel 1: Grundlagen Vorlesung an der DHBW Karlsruhe Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2012 Ziel Einführung der wichtigsten
MehrDefinition 4 (Operationen auf Sprachen) Beispiel 5. Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A + = n 1 An
Definition 4 (Operationen auf Sprachen) Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A 0 = {ɛ}, A n+1 = AA n A = n 0 An A + = n 1 An Beispiel 5 {ab, b}{a, bb} = {aba, abbb,
MehrSeminar Mathematische Logik L-Strukturen und Syntax der Prädikatenlogik
Seminar Mathematische Logik L-Strukturen und Syntax der Prädikatenlogik Linda Raabe 7. März 2012 1 L-Strukturen Definition 1.1 (Struktur) Eine Struktur A ist eine nichtleere Trägermenge A zusammen mit
MehrEinführung in die Computerlinguistik formale Sprachen
Einführung in die Computerlinguistik formale Sprachen Dozentin: Wiebke Petersen 2. Foliensatz Wiebke Petersen Einführung CL 1 Wiebke Petersen Einführung CL 2 Wiebke Petersen Einführung CL 3 Wiebke Petersen
MehrEinführung in die Informatik. Programming Languages
Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme
MehrTheoretische Informatik I
Theoretische Informatik I Einheit 2.5 Grammatiken 1. Arbeitsweise 2. Klassifizierung 3. Beziehung zu Automaten Beschreibung des Aufbaus von Sprachen Mathematische Mengennotation Beschreibung durch Eigenschaften
MehrReguläre Ausdrücke. Karin Haenelt
Reguläre Ausdrücke Karin Haenelt 25.04.2010 1 Inhalt Einführung Definitionen Kleene-Theorem Schreibweisen regulärer Ausdrücke Eigenschaften regulärer Sprachen 2 Was sind reguläre Ausdrücke? Reguläre Ausdrücke
MehrFormale Methoden 2. Gaetano Geck Lehrstuhl I Logik in der Informatik WS 2014/2015
Formale Methoden 2 Gaetano Geck Lehrstuhl I Logik in der Informatik WS 2014/2015 1 Mengen 2 Relationen 3 Abbildungen 4 Algebraische Strukturen Verknüpfungen Monoide Beispiel: Restklassen Exkurs: Formale
MehrReguläre Sprachen und endliche Automaten
Reguläre Sprachen und endliche Automaten 1 Motivation: Syntaxüberprüfung Definition: Fließkommazahlen in Java A floating-point literal has the following parts: a whole-number part, a decimal point (represented
MehrEinführung in die Computerlinguistik formale Sprachen
Einführung in die Computerlinguistik formale Sprachen Dozentin: Wiebke Petersen 26.4.2010 Wiebke Petersen Einführung CL (SoSe 2010) 1 Wiebke Petersen Einführung CL (SoSe 2010) 2 Wiebke Petersen Einführung
MehrEinführung in die Computerlinguistik formale Sprachen
Einführung in die Computerlinguistik formale Sprachen Dozentin: Wiebke Petersen 29.10.2009 Wiebke Petersen Einführung CL (WiSe 09/10) 1 Wiebke Petersen Einführung CL (WiSe 09/10) 2 Wiebke Petersen Einführung
MehrReguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer,
Reguläre Sprachen Reguläre Sprachen (Typ-3-Sprachen) haben große Bedeutung in Textverarbeitung und Programmierung (z.b. lexikalische Analyse) besitzen für viele Entscheidungsprobleme effiziente Algorithmen
MehrWas bisher geschah. Modellierung von Aussagen durch Logiken. Modellierung von Daten durch Mengen
Was bisher geschah Modellierung von Aussagen durch Logiken Modellierung von Daten durch Mengen extensionale und intensionale Darstellung Mächtigkeiten endlicher Mengen, Beziehungen zwischen Mengen, =,
MehrÜbersichtsblatt Hertrampf/Bahrdt. 1 Mathematische Aussagen. Theoretische Informatik I WS2018/19
Theoretische Informatik I WS2018/19 Übersichtsblatt Hertrampf/Bahrdt Institut für Formale Methoden der Informatik Theoretische Informatik Universität Stuttgart 1 Mathematische Aussagen Um mathematische
MehrEinführung in die Programmiertechnik
Einführung in die Programmiertechnik Formale Beschreibung von Programmiersprachen Lexikalische Regeln Definition von Wörtern (Lexem, Token) Gruppierung von Zeichen Lexikalische Kategorien: Klassen ähnlicher
MehrSei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann.
Der Satz von Kleene Wir haben somit Folgendes bewiesen: Der Satz von Kleene Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden
Mehr3 Allgemeine Algebren
Grundlagen der Mathematik für Informatiker 1 3 Allgemeine Algebren Definition 3.1 Für eine Menge A nennen wir eine n-stellige Funktion ω : A n A eine n-äre algebraische Operation. Bemerkung zum Fall n
MehrFormale Grundlagen 2008W. Vorlesung im 2008S Institut für Algebra Johannes Kepler Universität Linz
Formale Grundlagen Institut für Algebra Johannes Kepler Universität Linz Vorlesung im 2008S http://www.algebra.uni-linz.ac.at/students/win/fg Inhalt Definition Sei A eine Menge und ɛ A A A eine zweistellige
MehrAutomaten und Formale Sprachen
Automaten und Formale Sprachen Prof. Dr. Dietrich Kuske FG Theoretische Informatik, TU Ilmenau Wintersemester 2011/12 WS 11/12 1 Organisatorisches zur Vorlesung Informationen, aktuelle Version der Folien
MehrGrundbegriffe der Informatik
Grundbegriffe der Informatik Kapitel 4: Wörter Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik
MehrKapitel 0: Grundbegriffe Gliederung
Gliederung 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechenbarkeitstheorie 4. Komplexitätstheorie 5. Kryptographie 0/2, Folie 1 2009 Prof. Steffen Lange - HDa/FbI - Theoretische Informatik
MehrSprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri
Sprachanalyse WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Inhalt 1. Formale Sprachen 2. Chomsky-Hierarchie 2 FORMALE SPRACHE 1. WAS IST EINE SPRACHE? 2. WIE BESCHREIBT MAN EINE SPRACHE? 3. WAS
MehrLösung zur Klausur. Grundlagen der Theoretischen Informatik im WiSe 2003/2004
Lösung zur Klausur Grundlagen der Theoretischen Informatik im WiSe 2003/2004 1. Geben Sie einen deterministischen endlichen Automaten an, der die Sprache aller Wörter über dem Alphabet {0, 1} akzeptiert,
MehrLexikalische Programmanalyse der Scanner
Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung
Mehrc) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} c) {abcabc} d) {abcbc, abc, a} c) {aa, ab, ba, bb} d) {{aa}, {ab}, {ba}, {bb}}
2 Endliche Automaten Fragen 1. Was ergibt sich bei {a, bc} {de, fg}? a) {abc, defg} b) {abcde, abcfg} c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} 2. Was ergibt sich bei {abc, a} {bc, λ}?
MehrProgrammiersprachen und Übersetzer
Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch
MehrLösungsvorschläge und Erläuterungen Klausur zur Vorlesung Grundbegriffe der Informatik 15. September 2016
Lösungsvorschläge und Erläuterungen Klausur zur Vorlesung Grundbegriffe der Informatik 15. September 2016 Klausurnummer Nachname: Vorname: Matr.-Nr.: Diese Klausur ist mein 1. Versuch 2. Versuch in GBI
MehrEinfü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 2 Lösungsblatt 2. Mai 2 Einführung in die Theoretische Informatik
MehrFormalismen für REG. Formale Grundlagen der Informatik 1 Kapitel 7 Kontextfreie Sprachen. Das Pumping Lemma. Abschlusseigenschaften
Formalismen für RE Formale rundlagen der Informatik 1 Kapitel 7 Kontextfreie Sprachen Frank Heitmann heitmann@informatik.uni-hamburg.de Satz Zu jeder regulären Sprache L gibt es einen DFA A mit L(A) =
MehrMengen. Welche dieser Mengen sind paarweise gleich, ungleich? Begründung!
Hinweis: Auf den Übungsblättern in diesem Semester wird es grundsätzlich die drei Aufgabentypen Vorbereitungsaufgabe, Tutoraufgabe und Hausaufgabe geben. Die als Vorbereitung bezeichneten Aufgaben dienen
MehrKapitel 2: Formale Sprachen Gliederung
Gliederung. Einleitung und Grundbegriffe. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie 2.. Chomsky-Grammatiken 2.2. Reguläre Sprachen Reguläre Grammatiken, ND-Automaten
MehrEinführung in die Theoretische Informatik
Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Sascha Böhme, Lars Noschinski Sommersemester 2 Lösungsblatt 2 3. Mai 2 Einführung in die Theoretische Informatik Hinweis:
MehrGegenstand der Vorlesung 1
Gegenstand der Vorlesung 1 I. Mittel zur Beschreibung/Spezifikation von Sprachen L; das sind Mengen von Zeichenreihen (Wörter) über einem Alphabet Σ. Bsp. Die Menge der (syntaktisch korrekten) Pascal-Programme
MehrZwei Bemerkungen zum Schluss
Man könnte sich fragen, ob eine Typ-3 Sprache inhärent mehrdeutig sein kann (im Sinn von Einheit 8). Die Antwort lautet: NEIN. Zwei Bemerkungen zum Schluss Denn für jede Typ-3 Sprache gibt es einen DEA,
MehrGrammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S)
Grammatiken Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V Startsymbol S V Produktionen P ( (V Σ) \ Σ ) (V Σ) Kurzschreibweise G = (V, Σ, P, S) Schreibweise für Produktion (α, β) P: α β 67 /
MehrObjektorientierte Programmierung. Kapitel 3: Syntaxdiagramme
Stefan Brass: OOP (Java), 3. 1/31 Objektorientierte Programmierung Kapitel 3: Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2014/15 http://www.informatik.uni-halle.de/ brass/oop14/
MehrHM I Tutorium 1. Lucas Kunz. 27. Oktober 2016
HM I Tutorium 1 Lucas Kunz 27. Oktober 2016 Inhaltsverzeichnis 1 Theorie 2 1.1 Logische Verknüpfungen............................ 2 1.2 Quantoren.................................... 3 1.3 Mengen und ihre
MehrAutomaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012
Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1 Einschub: Kellerautomaten
MehrFormale Sprachen, Automaten, Prozesse SS 2010 Musterlösung - Übung 1 M. Brockschmidt, F. Emmes, C. Fuhs, C. Otto, T. Ströder
Prof aa Dr J Giesl Formale Sprachen, 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
Mehr9 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.
Mehr19 R E G U L Ä R E AU S D R Ü C K E U N D R E C H T S L I N E A R E G R A M M AT I K E N
19 R E G U L Ä R E AU S D R Ü C K E U N D R E C H T S L I N E A R E G R A M M AT I K E N Am Ende von Einheit 18 über endliche Automaten haben wir gesehen, dass manche formale Sprachen zwar von kontextfreien
Mehr15 R E G U L Ä R E AU S D R Ü C K E U N D R E C H T S L I N E A R E G R A M M AT I K E N
15 R E G U L Ä R E AU S D R Ü C K E U N D R E C H T S L I N E A R E G R A M M AT I K E N Am Ende von Einheit 14 über endliche Automaten haben wir gesehen, dass manche formale Sprachen zwar von kontextfreien
MehrGrundbegriffe der Informatik
Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2010/2011 1/47 Was kann
MehrEndliche Automaten Jörg Roth 101
Endliche Automaten Jörg Roth 101 Wir wollen im Folgenden die Abschlusseigenschaften regulärer Sprachen betrachten. Fragestellung: Wenn wir reguläre Sprachen haben, welche binären und unären Operationen
MehrKapitel 1.1. Aussagenlogik: Syntax. Mathematische Logik (WS 2011/12) Kapitel 1.1: Aussagenlogik: Syntax 1/ 1
Kapitel 1.1 Aussagenlogik: Syntax Mathematische Logik (WS 2011/12) Kapitel 1.1: Aussagenlogik: Syntax 1/ 1 Übersicht 1.1.1 Die Sprache der Aussagenlogik 1.1.2 Explizite vs. implizite Definitionen 1.1.3
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 18. Januar 2018 INSTITUT FÜR THEORETISCHE 0 18.01.2018 Dorothea Wagner - Theoretische Grundlagen der Informatik INSTITUT FÜR THEORETISCHE KIT Die Forschungsuniversität
MehrTheorie 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
MehrSkript und Übungen Teil II
Vorkurs Mathematik Herbst 2009 M. Carl E. Bönecke Skript und Übungen Teil II Das erste Semester wiederholt die Schulmathematik in einer neuen axiomatischen Sprache; es ähnelt damit dem nachträglichen Erlernen
MehrAutomatentheorie und Formale Sprachen
Automatentheorie und Formale Sprachen Mengen, Alphabete, Wörter, formale Sprachen Dozentin: Wiebke Petersen 29.4.2009 Wiebke Petersen Automatentheorie und formale Sprachen SoSe 09 Mengen Definition 1.
MehrFORMALE SYSTEME. Wiederholung. Beispiel: NFA. Wiederholung: NFA. 4. Vorlesung: Nichtdeterministische Endliche Automaten. TU Dresden, 19.
Wiederholung FORMALE SYSTEME 4. Vorlesung: Nichtdeterministische Endliche Automaten Markus Krötzsch Professur für Wissensbasierte Systeme Grammatiken können Sprachen beschreiben und sie grob in Typen unterteilen
MehrIT-Sicherheitsmanagement. Teil 4: Einführung in algebraische Strukturen
IT-Sicherheitsmanagement Teil 4: Einführung in algebraische Strukturen 19.09.18 1 Literatur und Videos [4-1] http://www.iti.fh-flensburg.de/lang/krypto [4-2] Forster, Otto: Algorithmische Zahlentheorie.
Mehr6 Kontextfreie Grammatiken
6 Kontextfreie Grammatiken Reguläre Grammatiken und damit auch reguläre Ausdrücke bzw. endliche Automaten haben bezüglich ihres Sprachumfangs Grenzen. Diese Grenzen resultieren aus den inschränkungen,
MehrEinführung in die Theoretische Informatik
Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Sascha Böhme, Lars Noschinski Sommersemester 2 Lösungsblatt 23. Mai 2 Einführung in die Theoretische Informatik Hinweis:
MehrFORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch
FORMALE SYSTEME 3. Vorlesung: Endliche Automaten Markus Krötzsch TU Dresden, 17. Oktober 2016 Rückblick Markus Krötzsch, 17. Oktober 2016 Formale Systeme Folie 2 von 31 Wiederholung Mit Grammatiken können
Mehr7 Endliche Automaten. 7.1 Deterministische endliche Automaten
7 Endliche Automaten 7.1 Deterministische endliche Automaten 7.2 Nichtdeterministische endliche Automaten 7.3 Endliche Automaten mit g-übergängen Endliche Automaten 1 7.1 Deterministische endliche Automaten
MehrÜberblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Boolsche Algebra
Überblick 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 3.3 Boolsche Algebra Peer Kröger (LMU München) Einführung in die Programmierung WS 14/15 72 / 179 Beweisprinzip der vollständigen Induktion
Mehr