Reguläre Ausdrücke. Prof.Dr.Christian Wagenknecht mit Beiträgen von Herrn Dr.Michael Hielscher



Ähnliche Dokumente
Programmiersprachen und Übersetzer

Grundbegriffe der Informatik

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Formale Sprachen und Grammatiken

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Theoretische Informatik I

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

1 Mathematische Grundlagen

Theorie der Informatik

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Grammatiken. Einführung

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

Mathematische Grundlagen der Informatik 2

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Grundlagen der Theoretischen Informatik, SoSe 2008

Einführung in die Algebra

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

Zeichen bei Zahlen entschlüsseln

2.11 Kontextfreie Grammatiken und Parsebäume

Datenbanken Kapitel 2

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

Primzahlen und RSA-Verschlüsselung

Vorlesung Theoretische Informatik

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Einführung in. Logische Schaltungen

Antrag für ein Schlichtungs-Verfahren

1 topologisches Sortieren

Leichte-Sprache-Bilder

Informatik IC2. Balazs Simon

Informationsblatt Induktionsbeweis

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Data Mining: Einige Grundlagen aus der Stochastik

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4 Aufzählungen und Listen erstellen

Theoretische Grundlagen der Informatik

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

syntax.tex Eine Übersicht

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Alle Schlüssel-Karten (blaue Rückseite) werden den Schlüssel-Farben nach sortiert und in vier getrennte Stapel mit der Bildseite nach oben gelegt.

proles-login. Inhalt [Dokument: L / v1.0 vom ]

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Theoretische Informatik SS 04 Übung 1

IT-Basics 2. DI Gerhard Fließ

Informatik A ( Frank Hoffmann)

Professionelle Seminare im Bereich MS-Office

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Grundbegriffe der Informatik

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Eine Logikschaltung zur Addition zweier Zahlen

Falten regelmäßiger Vielecke

Lineare Gleichungssysteme

Rundung und Casting von Zahlen

SANDBOXIE konfigurieren

Was meinen die Leute eigentlich mit: Grexit?

3.2 Spiegelungen an zwei Spiegeln

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Erstellen von x-y-diagrammen in OpenOffice.calc

Wie Sie beliebig viele PINs, die nur aus Ziffern bestehen dürfen, mit einem beliebigen Kennwort verschlüsseln: Schritt 1

Geld wechseln kann als Visualisierung des Zehnerübergangs dienen. Die Zwischengrössen (CHF 2.-, 5.-, 20.-, 50.-) weglassen.

Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt?

GEONET Anleitung für Web-Autoren

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Einfache kryptographische Verfahren

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Registrierung am Elterninformationssysytem: ClaXss Infoline

Satzhilfen Publisher Seite Einrichten

Windows XP Jugendschutz einrichten. Monika Pross Molberger PC-Kurse

Beweisbar sichere Verschlüsselung

OP-LOG

DRK Ortsverein Henstedt-Ulzburg e.v. DRK Möbelbörse. Benutzerhandbuch. Version 1.2

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Kommunikations-Management

BEDIENUNG ABADISCOVER

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Übung Theoretische Grundlagen

Wie Sie mit Mastern arbeiten

Anleitung über den Umgang mit Schildern

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003

Hinweise zum Übungsblatt Formatierung von Text:

Der große VideoClip- Wettbewerb von Media Markt.

Doku zur Gebäudebrüter Datenbank

Text-Zahlen-Formatieren

Die Excel Schnittstelle - Pro Pack

Repetitionsaufgaben Wurzelgleichungen

Berechnungen in Access Teil I

PRAXISBUTLER ANPASSUNG DER VORLAGEN

Binärdarstellung von Fliesskommazahlen

Jede Zahl muss dabei einzeln umgerechnet werden. Beginnen wir also ganz am Anfang mit der Zahl,192.

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Übungen zu C++ Kapitel 1

Bauteilattribute als Sachdaten anzeigen

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

Wie löst man Mathematikaufgaben?

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Transkript:

Reguläre Ausdrücke Prof.Dr.Christian Wagenknecht mit Beiträgen von Herrn Dr.Michael Hielscher Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 1/44

Definition reguläre Ausdrücke für reguläre Sprachen Definition regulärer Sprachen mit... Chomsky-Typ-3-Grammatiken DEA NEA NEA ε Reguläre Ausdrücke...... stellen eine weitere Beschreibungsmöglichkeit regulärer Sprachen dar.... sind sehr kompakt und von daher in der Praxis sehr verbreitet. Was sind reguläre Ausdrücke? Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 2/44

Definition Reguläre Mengen Reguläre Mengen Def. reguläre Ausdrücke erfordert Begriff reguläre Menge Ziel: nur ganz wenige Basismengen und insgesamt nur drei Mengenoperationen verwenden Durch wiederholte und kombinierte Anwendung beliebige reguläre Menge erzeugen Es können nur reguläre Mengen entstehen. Die einzigen Basismengen sind: Die leere Menge, die also kein einziges Wort enthält, nicht einmal das leere Wort. {ε} Die Menge, die nur das leere Wort ε enthält. {a} Alle Einermengen, die nur jeweils genau ein einzeichiges Wort, das aus dem zugehörigen Alphabetzeichen besteht, enthalten. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 3/44

Definition Reguläre Mengen Reguläre Mengen Die so definierten Basismengen sind reguläre Mengen. Durch Anwendung der folgenden Operationen (und nur durch diese) entstehen weitere reguläre Mengen: Vereinigung: A B = {w w A oder w B} Konkatenation: A B = {w = w 1 w 2 w 1 A, w 2 B} Kleene-Stern: A = A 0 A 1... A i... Auf die jeweils erzeugten Resultatmengen dürfen diese Operationen erneut angewandt werden, so dass wiederum reguläre Mengen über dem zugrunde liegenden Alphabet entstehen. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 4/44

Definition Reguläre Mengen Reguläre Mengen Die Klasse aller auf diese Weise erzeugten Mengen nennt man reguläre Mengen (und nur diese). Die binäre Operation Verkettung (Konkatenation) wurde zunächst für Zeichen eingeführt und später auf Wörter und schließlich auf Mengen (Sprachen) ausgeweitet. M 1 M 2 = {w = w 1 w 2 w 1 M 1 und w 2 M 2 }, d.h. jedes Wort aus M 2 wird an jedes Wort aus M 1 angehangen. Das Operationszeichen wird vereinbarungsgemäß gerne weggelassen. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 5/44

Definition Reguläre Mengen Operatoren Beispiel Man unterscheide Konkatenation und Vereinigung für zwei Mengen: {a} {b} = {a}{b} = {ab} aber {a} {b} = {a, b} Der Kleene a -Stern wurde im Zusammenhang mit dem Begriff der Wortmenge eingeführt. {a, b} = {ε, a, b, ab, ba, aa, bb, aaa, aab, aba,...} a sprich: klini Stephan Cole Kleene (1909-1994) Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 6/44

Definition Reguläre Mengen Reguläre Sprachen Mit Hilfe von regulären Mengen kann man reguläre Sprachen definieren. Beispiel: ((({a}(({a} {b}) ))({b}{b}))(({a} {b}) )) Beschreibt die Menge aller Wörter über {a, b}, die mit a beginnen und zwei bs unmittelbar nebeneinander enthalten. Das kürzestes Wort, das auf dieses Muster (Pattern) passt, ist abb. Aber die Schreibweise ist sehr unübersichtlich, da sehr viele Klammern anfallen. Wenn wir die geschweiften Klammern weglassen würden, wäre der Ausdruck schon deutlich kürzer. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 7/44

Definition Reguläre Mengen Reguläre Sprachen Mit Hilfe von regulären Mengen kann man reguläre Sprachen definieren. Beispiel: ((({a}(({a} {b}) ))({b}{b}))(({a} {b}) )) Beschreibt die Menge aller Wörter über {a, b}, die mit a beginnen und zwei bs unmittelbar nebeneinander enthalten. Das kürzestes Wort, das auf dieses Muster (Pattern) passt, ist abb. Aber die Schreibweise ist sehr unübersichtlich, da sehr viele Klammern anfallen. Wenn wir die geschweiften Klammern weglassen würden, wäre der Ausdruck schon deutlich kürzer. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 7/44

Definition Reguläre Mengen Reguläre Sprachen Mit Hilfe von regulären Mengen kann man reguläre Sprachen definieren. Beispiel: ((({a}(({a} {b}) ))({b}{b}))(({a} {b}) )) Beschreibt die Menge aller Wörter über {a, b}, die mit a beginnen und zwei bs unmittelbar nebeneinander enthalten. Das kürzestes Wort, das auf dieses Muster (Pattern) passt, ist abb. Aber die Schreibweise ist sehr unübersichtlich, da sehr viele Klammern anfallen. Wenn wir die geschweiften Klammern weglassen würden, wäre der Ausdruck schon deutlich kürzer. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 7/44

Definition Regulärer Ausdruck Reguläre Ausdruck Einermengen werden durch reguläre Ausdrücke (engl.: regular expression, kurz: RegExp oder Regex) beschrieben. Diese haben eine spezielle Symbolik. Die Mengenoperationen werden durch passende Operationen mit regulären Ausdrücken ersetzt. Symbole für reguläre Ausdrücke: Fettdruck (gelegentlich auch Unterstreichungen oder Farbe) (((a (a + b) ) (b b)) (a + b) ) Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 8/44

Definition Regulärer Ausdruck Definition Reguläre Ausdrücke über Σ sind wie folgt induktiv definiert. 1, ε und a, für jedes a Σ, sind reguläre Ausdrücke über Σ und bezeichnen die Mengen, {ε} bzw. {a}. 2 Seien u und v reguläre Ausdrücke über Σ und L(u) bzw. L(v) die zugehörigen Sprachen. Dann sind auch (u + v) = L(u) L(v), (u v) = L(u) L(v) und (u ) = L(u) sowie (v ) = L(v) reguläre Ausdrücke über Σ. 3 Nur die mit diesen Regeln erzeugten Ausdrücke sind reguläre Ausdrücke über Σ. x + = xx und x n = } x.{{.. x} werden zur Abkürzung gerne benutzt. n mal Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 9/44

Klammersparregeln komplexe reguläre Ausdrücke Klammersparregeln Bei komplexeren regulären Ausdrücken fallen sehr viele runde Klammern an, um die Auswertungsreihenfolge der entsprechenden Operationen festzulegen. Es bestehen folgende Proritäten (absteigend sortiert):,, +. Da Vereinigung und Konkatenation assoziative Operationen sind, dürfen die betreffenden Klammern einfach weggelassen werden. a(a + b) bb(a + b) Gut lesbar; sehr kompakt. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 10/44

Äquivalente reguläre Ausdrücke Umformungsregeln Äquivalente reguläre Ausdrücke Wie bei Automaten gibt es mehr als einen regulären Ausdruck zur Definition einer bestimmten Sprache. Ähnlich wie bei äquivalenten Termumformungen dürfen folgende Gleichheiten benutzt werden. u, v und w seien reguläre Ausdrücke. 1 u = u = mit Erinnerung an die Multiplikation mit 0. 2 εu = uε = u mit Erinnerung an die Multiplikation mit 1. 3 = ε = ε 4 u + v = v + u Erinnerung an die Kommutativität der Addition. 5 u + = u Erinnerung an die Addition von 0. 6 u + u = u verstößt gegen die Analogie. 7 (u ) = u 8 u(v + w) = uv + uw mit Erinnerung an die Distributivität. 9 (uv) u = u(vu) 10 (u + v) = (u + v ) Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 11/44

Äquivalente reguläre Ausdrücke Umformungsregeln Übung Geben Sie einen regulären Ausdruck für {10, 11} an. (10+11) Gegeben sind L 1 = {10, 1} und L 2 = {011, 11}. Geben Sie einen regulären Ausdruck für L 1 L 2 an. = {10011, 1011, 111} = 1(00+0+ε)11 Geben Sie einen regulären Ausdruck an, der die Sprache L = {w {a, b} w beginnt oder endet mit a} beschreibt? Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 12/44

Äquivalente reguläre Ausdrücke Umformungsregeln Übung Geben Sie einen regulären Ausdruck für {10, 11} an. (10+11) Gegeben sind L 1 = {10, 1} und L 2 = {011, 11}. Geben Sie einen regulären Ausdruck für L 1 L 2 an. = {10011, 1011, 111} = 1(00+0+ε)11 Geben Sie einen regulären Ausdruck an, der die Sprache L = {w {a, b} w beginnt oder endet mit a} beschreibt? Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 12/44

Äquivalente reguläre Ausdrücke Umformungsregeln Übung Geben Sie einen regulären Ausdruck für {10, 11} an. (10+11) Gegeben sind L 1 = {10, 1} und L 2 = {011, 11}. Geben Sie einen regulären Ausdruck für L 1 L 2 an. = {10011, 1011, 111} = 1(00+0+ε)11 Geben Sie einen regulären Ausdruck an, der die Sprache L = {w {a, b} w beginnt oder endet mit a} beschreibt? Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 12/44

Äquivalente reguläre Ausdrücke Umformungsregeln Übung Geben Sie einen regulären Ausdruck für {10, 11} an. (10+11) Gegeben sind L 1 = {10, 1} und L 2 = {011, 11}. Geben Sie einen regulären Ausdruck für L 1 L 2 an. = {10011, 1011, 111} = 1(00+0+ε)11 Geben Sie einen regulären Ausdruck an, der die Sprache L = {w {a, b} w beginnt oder endet mit a} beschreibt? Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 12/44

Äquivalente reguläre Ausdrücke Umformungsregeln Übung Geben Sie einen regulären Ausdruck für {10, 11} an. (10+11) Gegeben sind L 1 = {10, 1} und L 2 = {011, 11}. Geben Sie einen regulären Ausdruck für L 1 L 2 an. = {10011, 1011, 111} = 1(00+0+ε)11 Geben Sie einen regulären Ausdruck an, der die Sprache L = {w {a, b} w beginnt oder endet mit a} beschreibt? Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 12/44

Äquivalente reguläre Ausdrücke Umformungsregeln Übung Geben Sie einen regulären Ausdruck für {10, 11} an. (10+11) Gegeben sind L 1 = {10, 1} und L 2 = {011, 11}. Geben Sie einen regulären Ausdruck für L 1 L 2 an. = {10011, 1011, 111} = 1(00+0+ε)11 Geben Sie einen regulären Ausdruck an, der die Sprache L = {w {a, b} w beginnt oder endet mit a} beschreibt? Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 12/44

Äquivalente reguläre Ausdrücke Umformungsregeln Übung Geben Sie einen regulären Ausdruck an für die Sprache aller Wörter über {a, b, c}, die die Zeichenkette bc nicht enthalten. Schwierig zu findende Lösung: c (b + ac ) Einen DEA kann man leicht angeben: Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 13/44

Äquivalente reguläre Ausdrücke Umformungsregeln Übung Geben Sie einen regulären Ausdruck an für die Sprache aller Wörter über {a, b, c}, die die Zeichenkette bc nicht enthalten. Schwierig zu findende Lösung: c (b + ac ) Einen DEA kann man leicht angeben: Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 13/44

Äquivalente reguläre Ausdrücke Umformungsregeln Übung Geben Sie einen regulären Ausdruck an für die Sprache aller Wörter über {a, b, c}, die die Zeichenkette bc nicht enthalten. Schwierig zu findende Lösung: c (b + ac ) Einen DEA kann man leicht angeben: Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 13/44

Äquivalente reguläre Ausdrücke Umformungsregeln Übung Geben Sie einen regulären Ausdruck an für die Sprache aller Wörter über {a, b, c}, die die Zeichenkette bc nicht enthalten. Schwierig zu findende Lösung: c (b + ac ) Einen DEA kann man leicht angeben: a,c b a,b,c b Start q0 q1 c q2 a Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 13/44

Äquivalente reguläre Ausdrücke Umformungsregeln Übung Nächster Schritt: DEA in regexp exportieren (AutoEdit) Entstandenen Ausdruck mit c (b + ac ) vergleichen (RegExpEdit): Beide Ausdrücke definieren die gleiche Sprache. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 14/44

Äquivalente reguläre Ausdrücke Umformungsregeln Übung Nächster Schritt: DEA in regexp exportieren (AutoEdit) Entstandenen Ausdruck mit c (b + ac ) vergleichen (RegExpEdit): Beide Ausdrücke definieren die gleiche Sprache. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 14/44

RegExp und Endliche Automaten Äquivalenz RegExp und Endliche Automaten Wir wollen nun zeigen, dass reguläre Ausdrücke genau die gleiche Sprachklasse definieren, wie endliche Automaten, nämlich reguläre Sprachen. Etwas formaler regelt dies der folgende Satz von Kleene. Satz Eine Sprache L wird von einem DEA M genau dann akzeptiert, wenn L durch einen regulären Ausdruck R über dem zu M gehörenden Eingabealphabet beschrieben werden kann. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 15/44

RegExp und Endliche Automaten Äquivalenz Beweis Der Beweis erfolgt durch - Konstruktion von M aus R (1. Teil) und durch - Konstruktion von R aus M (2. Teil), wobei für beide Teile L(M) = L(R) = L gelten muss. Wir machen uns L NEAε L DEA zunutze. Es ist viel einfacher, einen zu R äquivalenten NEA ε zu konstruieren als einen dementsprechenden DEA. Ein solcher NEA ε besitzt genau einen Endzustand. Dies ist keine Einschränkung gegenüber der allgemeinen NEA-Definition, was wir im Folgenden zeigen werden. Satz Zu jedem NEA ε M gibt es einen äquivalenten NEA ε M mit genau einem Endzustand q f. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 16/44

RegExp und Endliche Automaten Äquivalenz Beweis Man konstruiert M aus M, indem man für alle Endzustände q i von M spontane Übergänge δ (q i, ε) q f in M ergänzt. Es gilt E = {q f }. Beispiel: Start q0 0 q1 +, - 1,2,3,4,5,6,7,8,9 q2 1,2,3,4,5,6,7,8,9 q3 0,1,2,3,4,5,6,7,8,9 Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 17/44

RegExp und Endliche Automaten Äquivalenz Beweis Man konstruiert M aus M, indem man für alle Endzustände q i von M spontane Übergänge δ (q i, ε) q f in M ergänzt. Es gilt E = {q f }. Beispiel: Start q0 0 q1 ε +, - 1,2,3,4,5,6,7,8,9 qf ε q2 1,2,3,4,5,6,7,8,9 q3 0,1,2,3,4,5,6,7,8,9 Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 17/44

RegExp und Endliche Automaten Äquivalenz Beweis Teil 1: RegExp NEA ε Der reguläre Ausdruck beschreibt die leere Menge. Es gibt einen Anfangs- und einen Endzustand, aber es findet kein einziger Übergang statt. Da das Alphabet nach Definition nicht leer sein darf, verwenden wir im Folg. das Zeichen a. M = ({s, f }, {a}, δ, s, {f }), L(M) = Start s f s soll an Startzustand und f soll an Finalzustand erinnern. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 18/44

RegExp und Endliche Automaten Äquivalenz Beweis Teil 1: RegExp NEA ε Für den regulären Ausdruck ε entsteht ein Automat, der nur das leere Wort akzeptiert. Start s ε f M = ({s, f }, {a}, δ, s, {f }), L(M) = {ε} Für alle Alphabetzeichen a ergibt sich jeweils der zu a gehörende NEA. Start s a f M = ({s, f }, {a}, δ, s, {f }), L(M) = {a} Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 19/44

RegExp und Endliche Automaten Äquivalenz Beweis Teil 1: RegExp NEA ε Um den zu a+b gehörenden NEA zu erzeugen, brauchen wir zwei neue Zustände s (Anfangszustand) und f (Endzustand des zu konstruierenden NEA ε ). Es erfolgen spontane Übergänge von s zu den Anfangszuständen s a und s b bzw. von den Endzuständen f a und f b der parallelgeschalteten Automaten zu f. s a a f a ε ε Start s f ε ε s b b f b M = ({s, s a, s b, f a, f b, f }, {a, b}, δ, s, {f }), L(M) = {a, b} Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 20/44

RegExp und Endliche Automaten Äquivalenz Beweis Teil 1: RegExp NEA ε Nun konstruieren wir einen NEA für a. ε s a a f a ε ε Start s ε f M = ({s, s a, f a, f }, {a}, δ, s, {f }), L(M) = {ε, a, aa, aaa,...} Ein NEA für a b = a b ergibt sich durch Verkettung der zugehörigen Automaten. Start s ε s a a fa ε s b b fb ε f M = ({s a, f a, s b, f b }, {a, b}, δ, s a, {f b }), L(M) = {ab} Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 21/44

RegExp und Endliche Automaten Äquivalenz Beweis Teil 1: RegExp NEA ε Mit der Angabe dieses allgemein gültigen Verfahrens zur Konstruktion eines äquivalenten NEA ε M aus einem gegebenen regulären Ausdruck R ist der erste Teil des Beweises beendet. Für komplexe reguläre Ausdrücke ergeben sich umfangreiche zusammengesetzte NEAs. Beispiel: a (b+c) Demo mit RegExp Edit ε ε ε s b b fb ε Start s ε s a a fa f ε ε s c c fc ε Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 22/44

RegExp und Endliche Automaten Äquivalenz Beweis Teil 2: DEA RegExp Nun beweisen wir Teil 2, indem wir aus einem gegebenen DEA M = ({q 1, q 2,..., q n }, Σ, δ, q 1, E) einen äquivalenten regulären Ausdruck R konstruieren. Wir benennen die Zustände eines Automaten um, wenn diese nicht q 1,..., q n heißen sollten. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 23/44

RegExp und Endliche Automaten Äquivalenz Beweis Teil 2: DEA RegExp Wir definieren Mengen R k (i, j) = {w Σ ˆδ(q i, w) = q j, wobei für alle eingenommenen Zwischenzustände q z gilt: z k} induktiv über k = 0, 1,..., n 1, mit i, j = 1, 2,..., n. R k (i, j) enthält alle Wörter aus Σ, die M aus q i in q j überführen. Dabei dürfen nur Zwischenzustände eingenommen werden, deren Indices nicht größer als k sind. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 24/44

RegExp und Endliche Automaten Äquivalenz Beweis Teil 2: DEA RegExp k = 0 bedeutet, dass es keine solchen Zwischenzustände gibt. q i a q j ohne Zwischenzustände a q i i=j Abbildung: Zwei Möglichkeiten für R 0 (i, j) {a δ(q i, a) = q j }, wenn i j; R 0 (i, j) = {a δ(q i, a) = q j } {ε}, wenn i = j. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 25/44

RegExp und Endliche Automaten Äquivalenz Beweis Teil 2: DEA RegExp Wenn es einen Pfad von q i nach q j gibt, an dem keine Zwischenzustände q r mit r > k beteiligt sind, dann gibt es für den Zustand q k genau zwei Fälle. 1. Fall: q k liegt nicht auf dem Pfad. Dann liegt das Wort entlang des Pfades in R k 1 (i, j). 2. Fall: Der Pfad führt (mind.) einmal durch q k, für k = 1, 2,..., n. q i q k q j in R (i,k) k 1 in R (k,j) k 1 in R (k,k) k 1 R k (i, j) = R k 1 (i, j) R k 1 (i, k) R k 1 (k, k) R k 1 (k, j) Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 26/44

RegExp und Endliche Automaten Äquivalenz Beweis Teil 2: DEA RegExp Der die Sprache beschreibende reguläre Ausdruck ist R = R n (1, i). i, mit q i E Er ergibt sich aus der Summe (Vereinigung) aller regulären Ausdrücke R n (1, i) mit q i E. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 27/44

RegExp und Endliche Automaten Transformation eines DEA in einen äquivalenten RegExp Beispiel 7.6, S. 113 Geg.: DEA M = ({q 1, q 2}, {0, 1}, δ, q 1, {q 2}) mit 1 0,1 Ges.: R = R 2(1, 2) Start q 1 0 q 2 R 2 (1, 2) = R 1 (1, 2) R 1 (1, 2) R 1 (2, 2) R 1 (2, 2) R 1 (1, 2) = R 0 (1, 2) R 0 (1, 1) R 0 (1, 1) R 0 (1, 2) R 0 (1, 2) = {0, 1} R 0 (1, 1) = {ε} R 1 (1, 2) = {0, 1} {ε} {ε} {0, 1} = {0, 1} R 1 (2, 2) = R 0 (2, 2) R 0 (2, 1) R 0 (1, 1) R 0 (1, 2) R 0 (2, 2) = {ε, 1} R 0 (2, 1) = {0} R 1 (2, 2) = {ε, 1} {0} {ε} {0, 1} = {ε, 1, 00, 01} R 2 (1, 2) = {0, 1} {0, 1} {ε, 1, 00, 01} {ε, 1, 00, 01} = 0 + 1 + (0 + 1) (ε + 1 + 00 + 01) (ε + 1 + 00 + 01) Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 28/44

RegExp und Endliche Automaten Äquivalenz Beschreibungsmittel für reguläre Sprachen Reguläre Ausdrücke ermöglichen sehr kompakte Beschreibungen regulärer Sprachen. NEA ε NEA rg RegExp DEA In der Praxis findet die Verarbeitung solcher Ausdrücke durch Transformation in jeweils zugehörige DEA s im Hintergrund statt. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 29/44

Reguläre Ausdrücke in der Praxis Verwendung Reguläre Ausdrücke in der Praxis Wo werden RegExp eingesetzt? Auf der Kommandozeile werden RegExp für Suchpattern verwendet. In Editoren wie vi, emacs, Visual Studio,... In der Anwendungs- und Web-Programmierung zur Manipulation von Zeichenketten. Sie sind in Skriptsprachen, wie JavaScript, Perl, Tcl, awk oder Python, wie auch in höheren Programmiersprache, wie z.b. Java, C# oder Delphi integriert. Tutorial Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 30/44

Reguläre Ausdrücke in der Praxis Verwendung Reguläre Ausdrücke in der Praxis Wo werden RegExp eingesetzt? Auf der Kommandozeile werden RegExp für Suchpattern verwendet. In Editoren wie vi, emacs, Visual Studio,... In der Anwendungs- und Web-Programmierung zur Manipulation von Zeichenketten. Sie sind in Skriptsprachen, wie JavaScript, Perl, Tcl, awk oder Python, wie auch in höheren Programmiersprache, wie z.b. Java, C# oder Delphi integriert. Tutorial Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 30/44

Reguläre Ausdrücke in der Praxis Verwendung Reguläre Ausdrücke in der Praxis In allen diesen Anwendungsfeldern werden reguläre Ausdrücke zur Definition von Mustern benutzt, nach denen ein bestimmter Text durchsucht wird. Man nennt dies pattern matching. In der Praxis gibt es eine ganze Reihe zusätzlicher Metazeichen, wie [, ], (, ), {, },,?, +, *, ^, $, \ und., die in einer solchen Praxis-relevanten Syntax regulärer Ausdrücke verwendet werden können. Leider unterliegt diese Syntaxdefinition keiner Standardisierung, sodass die einzelnen Implementierungen (in verschiedenen Programmiersprachen) teilweise stark differieren. Wir beschränken uns daher auf einen typischen Kern. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 31/44

Reguläre Ausdrücke in der Praxis Metazeichen Metazeichen Metazeichen Bedeutung.... steht für ein beliebiges Zeichen (außer \n und \r - siehe weiter unten). a*... steht für 0 bis beliebig viele Vorkommen von a. a+... steht für 1 bis beliebig viele Vorkommen von a. a?... steht für ein optionales Zeichen. Im Beispiel darf a auftreten oder ab auch nicht. (gleichbedeutend mit a{0,1}) {m,n}... steht für m bis n Vorkommen des Zeichens oder Metazeichens. {n}... steht für n Vorkommen des Zeichens oder Metazeichens. (ab)... Klammern erlauben Teilausdrücke zu einer Einheit zusammenzufassen um anschließend Operationen wie +, * oder für den gesamten Teilausdruck anzuwenden. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 32/44

Reguläre Ausdrücke in der Praxis Metazeichen Metazeichen Metazeichen A B [ABC] [a-za-z] [ˆA] Bedeutung... steht für ein Zeichen A ODER B (kann auch auf komplexe geklammerte Teilausdrücke angewendet werden z.b.: (a b) [0-9]+). Eckige Klammern beschreiben eine Auswahl (Zeichenklasse). Dieses Beispiel steht also für genau ein Zeichen A,B oder C. (die Reihenfolge in einer Zeichklasse spielt dabei keine Rolle) Der Bindestrich innerhalb eckiger Klammern bestimmt einen Bereich. Daher steht dieses Beispiel für genau ein Zeichen von a bis z oder A bis Z. Das Dach (ˆ) negiert die Auswahl. Daher wird hier ein beliebiges Zeichen außer A beschrieben. Wird gern verwendet um verbotene Zeichen in einem Ausdruck zu beschreiben. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 33/44

Reguläre Ausdrücke in der Praxis Metazeichen Metazeichen Zusätzlich wurden einige Macrozeichen für spezielle Tastaturzeichen definiert, die ansonsten schwer eingegeben werden können (etwa in einer Zeichenkette): Metazeichen Bedeutung \n ein Zeilenumbruch \r ein Wagenrücklauf (unter Windows steht \r\n für einen Zeilenumbruch) \t ein Tabulatorzeichen \s ein einzelnes Leerzeichen \d der reguläre Teilausdruck [0 9] \w ein Buchstabe, eine Ziffer oder der Unterstrich [a za Z 0 9] Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 34/44

Reguläre Ausdrücke in der Praxis Metazeichen Metazeichen Achtung: Ein markanter Unterschied ist die Verwendung des Metazeichens +, wie in a+ für aa*. Da die Eingabe a + in Programmtexten so nicht möglich ist, schreibt man a+. Dies ist zwar vernünftig, hat aber zur Folge, dass die ursprüngliche Bedeutung des Zeichens + als oder, wie wir es aus der Definition kennen, nun durch ein anderes Symbol beschrieben werden muss. Hierfür hat man mit ein Symbol gewählt, welches wir in der BNF zur Grammatiknotation für alternative Regeln verwenden. Anstatt (α+β) müssen wir also (α β) schreiben. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 35/44

Reguläre Ausdrücke in der Praxis Metazeichen Metazeichen Im Folgenden geben wir einige Beispiele für syntaktisch korrekte reguläre Ausdrücke und die damit jeweils beschriebene Sprache an.... trifft 3 beliebige Zeichen (außer \r und \n).{1,5} trifft 1,2,3,4 oder 5 beliebige Zeichen (außer \r und \n) [0-9]+ trifft eine beliebig(mindestens ein Zeichen) lange Ziffernfolge wie etwa: 058237435 oder aber auch 0 a*b trifft beliebig viele a (oder keins) gefolgt von genau einem b (a*) (b*) trifft beliebig viele a ODER beliebig viele b oder auch das leere Wort! [1-9][0-9]* trifft eine beliebig lange Ziffernfolge aber ohne vorangestellte Nullen. [\r\t\n\s] trifft ein typisches Whitespace [1-5]0 trifft genau die Ziffernfolgen 10, 20, 30, 40 oder 50. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 36/44

Reguläre Ausdrücke in der Praxis Metazeichen Escape Möchte man das Tastaturzeichen? mit einem regulären Ausdruck beschreiben, muss das Symbol \ (Backslash) vor das Metazeichen gesetzt werden, um dessen Bedeutung (Option) aufzuheben: also \?. Wollen wir beispielsweise den arithmetischen Ausdruck (234 + 23) 4 mit einem regulären Ausdruck erkennen, so eignet sich der folgende dafür: \([0-9]+\+[0-9]+\)\*[0-9] Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 37/44

Reguläre Ausdrücke in der Praxis Anwendungsbeispiele Eingabevalidierung Ein typisches Anwendungsbeispiel ist die Eingabevalidierung bei graphischen Bedienoberflächen sowohl in Webanwendungen als auch in Desktopanwendungen. Beispiel: Meldet man sich etwa bei Wikipedia an, wird eine gültige Emailadresse gefordert. Die Webanwendung muss also überprüfen ob eine gültige Emailadresse eingegeben wurde oder nicht. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 38/44

Reguläre Ausdrücke in der Praxis Anwendungsbeispiele Anwendungsbeispiele Für diese Überprüfung könnten wir einen regulären Ausdruck verwenden. Dieser ist zwar komplex und schwierig leserbar jedoch sehr kompakt und leistungsfähig: [a-za-z0-9\. %\+\-]+@[a-za-z0-9\.\-]+\.[a-za-z]{2,4} Dabei steht der erste Teil bis zum Zeichen @ für eine Folge von Zeichen die in URL s im Allgemeinen erlaubt sind. Nach dem @ folgen mögliche Subdomains, der Domainname und eine zwei- bis vierstellige Landeskennung, wie.de. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 39/44

Reguläre Ausdrücke in der Praxis Anwendungsbeispiele XML Schemas Bei den Sprachübersetzern haben wir XML und die Verwendung von XML Schemas angesprochen. Auch hier steht die Validierung von Daten im Mittelpunkt, nämlich von XML-Daten. Mit Hilfe von regulären Ausdrücken können ganz bestimmte Einschränkungen für Attribute definiert werden. Beispiel: Postleitzahl als neuer Datentyp im XML-Schema <xsd:simpletype name="plz"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[a-z]{1,2}\-[0-9]{5}"/> </xsd:restriction> </xsd:simpletype> Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 40/44

Reguläre Ausdrücke in der Praxis Anwendungsbeispiele XML Schemas Beispiel 2: Ein Datentyp Passwort soll definiert werden. Ein Passwort ist (hier) eine Zeichenkette der Mindestlänge 5, die mindestens einen Buchstaben und mindestens eine Ziffer enthält. <xsd:simpletype name="passwort"> <xsd:restriction base="xsd:string"> <xsd:pattern value="...+"/> <xsd:pattern value=".*[0-9].*"/> <xsd:pattern value=".*[a-za-z].*"/> </xsd:restriction> </xsd:simpletype> Nur wenn alle pattern das Eingabewort matchen, ist die Eingabe zulässig (logisches UND). Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 41/44

Reguläre Ausdrücke in der Praxis Anwendung in Scannergeneratoren Anwendung in Scannergeneratoren Erinnern wir uns an unseren Zeichenroboter ZR und unser Ziel einen Übersetzer für diese Sprache herzustellen. Bei Sprachübersetzern hatten wir die Aufgabenteilung von Scanner und Parser besprochen. Die regulären Teilgrammatiken einer Sprache wurden dabei zum Scanner zusammengefasst. Dadurch entstand die reduzierte Grammatik G für ZR, in der die vom Scanner behandelten Bausteine als Terminale erscheinen. Nachdem wir uns mit endlichen Automaten beschäftigt haben, ist auch klar, dass ein Scanner eine Komposition diverser DEAs ist. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 42/44

Reguläre Ausdrücke in der Praxis Anwendung in Scannergeneratoren Anwendung in Scannergeneratoren Wir können kleine Teilgrammatiken, wie etwa für Zahl und Farbwert, mit Hilfe regulärer Ausdrücke definieren. [1-9][0-9] blau rot gruen gelb schwarz AtoCC bietet mit VCC ein Werkzeug zur automatisierten Herstellung von Compilern an. Ein Bestandteil ist das Erzeugen von Scannern als zusammengesetzte DEAs. Wir werden uns zunächst auf diesen Teil beschränken und einen entwickelten Scanner auf beliebige Eingabetexte anwenden (Scanner-Simulation). Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 43/44

Reguläre Ausdrücke in der Praxis Anwendung in Scannergeneratoren Anwendung in Scannergeneratoren Scanner sind zusammengefügte DEAs. Zum Einstieg in den jeweiligen DEA-Strang ist es notwendig, dass sich die Initialzeichen unterscheiden. Aber dies ist häufig nicht möglich. Beispiel: begin als Schlüsselwort und begi oder begina als Variablennamen führt zu Überlappungen. Gemeinsame Token-Präfixe, d.h. sich von links her teilweise überlappende Lexeme, werden nach folgenden Prinzipien verarbeitet: 1 Das längste passende Anfangsteilwort bestimmt die Tokenklasse. Dabei spielt es keine Rolle, an welcher Stelle die betrachtete Tokenklasse definiert wurde. 2 Passt ein und dasselbe Lexem zu mehreren Tokenklassen, so wird die (von oben nach unten) zuerst definierte genommen. Prof.Dr.Chr. Wagenknecht Formale Sprachen und Automaten 44/44