Formale Sprachen Klaus Becker 2017.

Slides:



Advertisements
Ähnliche Präsentationen
Vorlesung Compilertechnik Sommersemester 2008
Advertisements

8. Formale Sprachen und Grammatiken
Imperative Programmierung
Grammatiken, Definitionen
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Grammatiken beschreiben Sprachen L µ *, indem.
Assertivitätstest Wie assertiv bist du?
Sequenzdiagramm.
Konzeption und Realisierung eines Text- Analysesystems zur Automatisierung der Bewerberauswahl von diesem Datenformat jede beliebige Anwendung adaptieren.
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
FH-Hof Grammatiken Richard Göbel. FH-Hof Begriffe Eine Grammatik definiert die Struktur (Syntax) einer Zeichenkette Eine Grammatik definiert nicht die.
Parser für CH3-Sprachen
Formale Sprachen – Mächtigkeit von Maschinenmodellen
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (02 – Endliche Automaten) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (12 – Kellerautomaten, PDA) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Benutzen von Internetseiten
M a r c – o l i v e r p a h l Informatik II – Kapitel 18 Übersetzung Zusammenfassung des Kapitel 18 Küchlin, Weber, Vorversion Einführung in die Informatik,
Prof. Dr. rer.nat. Ralph Großmann Fakultät Informatik / Mathematik Sommersemester 2012 Internet-Technologien XML-basierte Techniken Teil Metasprache der.
Prolog Grundkurs WS 98/99 Christof Rumpf
Reguläre Sprachen Karin Haenelt.
© Karin Haenelt 2006, Äquivalenzen Reg.Ausdrücke, Reg.Sprachen, EA ( ) 1 Reguläre Sprachen Karin Haenelt.
Beispiele für Ausdrucksalgebren
Grammatik als Deduktionssystem
Formale Sprachen Klaus Becker 2010.
Christian Schindelhauer
Christian Schindelhauer
§9 Der affine Raum – Teil 2: Geraden
§9 Der affine Raum – Teil 2: Geraden
§8 Gruppen und Körper (8.1) Definition: Eine Gruppe G ist eine Menge zusammen mit einer Verknüpfung, die jedem Paar (a,b) von Elementen aus G ein weiteres.
Wie macht man ein Sudoku? Transformations-Methode:
Formale Sprachen Grundbegriffe für formale Sprachen
§10 Vektorraum. Definition und Beispiele
Formale Sprachen und Automaten
Formale Sprachen Teil 1 Klaus Becker 2006.
Formale Sprachen Grammatiken und die Chomsky-Hierarchie
Formale Sprachen Klaus Becker 2013.
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.
Spracherkennung mit Automaten
Beispiele: KFG 2.Teil Beispiel 1: Sei G eine Grammatik mit den folgenden Regeln: S  Ac | Bd A  aAb | ab B  aBbb | abb Definieren Sie.
Noam CHOMSKY, Sheila GREIBACH
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 3: Potenzreihen und kontextfreie Sprachen (Vgl. Buch von A. Salomaa)
Christian Schindelhauer Wintersemester 2006/07 2. Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
Informatik Formale Sprachen 1.2 Grammatiken formaler Sprachen
Informatik Formale Sprachen 1.1 Aufbau von Sprachen
Mensch – Maschine - Kommunikation
Der Hund jagt die Katze. Theoretische Informatik Satz S P O
Berechenbarkeit Klaus Becker Berechenbarkeit.
Institut für Softwarewissenschaft – Universität WienP.Brezany 1 Beispiele (Frist: ) Beispiel 1: Sei  = {a, b} ein Alphabet und Q = {q 0, q 1 } eine.
7. Formale Sprachen und Grammatiken
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
Kapitel 4:Die Chomsky Hierarchie
Programmierungssprache PERL
Grammatik als Deduktionssystem Theorie, Grammatik, Grammatiktheorie Grammatik Sprache Hypothese Sprachtheorie Theorie Erklärung Theoretisches Konstrukt.
Information - syntaktisch
Pool Informatik, Sj 11/12 GZG FN W.Seyboldt 1 Pool Informatik 5 GZG FN Sj. 11/12 Kopieren, Daten, Programme.
in Zusammenarbeit mit Ute Eberlein,
Graphen.
§8 Gruppen und Körper (8.1) Definition: Eine Gruppe G ist eine Menge zusammen mit einer Verknüpfung, die jedem Paar (a,b) von Elementen aus G ein weiteres.
Syntaxdiagramme.
Gliederung 0. Motivation und Einordnung 1. Endliche Automaten
Formale Sprachen.
Spracherkennung mit Automaten
Laufzeitverhalten beim Sortieren
Icons Wozu und woher.
Prof. J. Walter Bitte römische Zahlen im Geschichtsunterricht!
REKURSION + ITERATION.
 Präsentation transkript:

Formale Sprachen Klaus Becker 2017

Formale Sprachen

Einführung und Präzisierung Teil 1 Einführung und Präzisierung

Sprachen in der Informatik Sprachen werden in der Informatik vielfach benutzt. So muss Information stets in geeigneten Sprachen dargestellt werden, bevor sie in Form von Daten automatisiert verarbeitet werden kann. Die Verarbeitung der Daten selbst wird mit speziellen Sprachen beschrieben. Darstellen Deuten PGM P2 5 8 15 15 15 8 15 15 15 8 8 8 15 8 8 8 8 8 12 12 12 12 12 12 5 12 5 12 P2 5 8 15 0 0 7 0 0 0 7 7 7 0 7 7 7 7 7 3 3 3 3 3 3 10 3 10 3 PGM Verarbeiten def invertieren(daten): ... return d Python

Zeichensysteme Jede Sprache benutzt Zeichen bzw. Symbole zur Darstellung von Information.

Syntax, Semantik, Pragmatik Kommunikation mit Zeichensystemen kann ganz schön kompliziert sein. Verschiedene Aspekte von Sprache kommen dabei ins Spiel. Haste ne Uhr dabei? Was? Haste ne Uhr dabei? Ja! Haste ne Uhr dabei? Halb zwei! Die Syntax einer Sprache (eines Zeichensystems) beschreibt die Regeln, nach denen die Sprachkonstrukte (Zeichen des Zeichensystems) gebildet werden. Die Semantik einer Sprache (eines Zeichensystems) beschreibt die Bedeutung der Sprachkonstrukte (Zeichen des Zeichensystems). Die Pragmatik einer Sprache (eines Zeichensystems) beschäftigt sich mit der Verwendung und Bedeutung von Sprachkonstrukten in konkreten Situationen.

Fokussierung auf die Syntax Wir werden uns hier mit der Syntax von Sprachen beschäftigen. Wir betrachten dabei ganz einfache Sprachen, die sowohl aus der Informatik als auch aus dem Alltag stammen. Darstellen Deuten P2 5 8 15 15 15 8 15 15 15 8 8 8 15 8 8 8 8 8 12 12 12 12 12 12 5 12 5 12 P2 5 8 15 0 0 7 0 0 0 7 7 7 0 7 7 7 7 7 3 3 3 3 3 3 10 3 10 3 Verarbeiten def invertieren(daten): ... return d Syntax: muss präzise festgelegt werden Semantik: muss präzise festgelegt werden Pragmatik: spielt keine Rolle

Ein Präzisierungsansatz Eine formale Sprache ist eine Menge von Zeichenketten (mit Zeichen aus einem vorgegebenen Zeichenvorrat). Beispiel: Die Sprache der römische Zahlen Beispiel: Sprache der chem. Verbindungen XV XXIX MIC MXCIX MMMDCCLXXXIV MLL ZXXI IXC MURX … H2O C2H4O2 NaCl TiMo K0M1N2 0BOCK … Welche Symbole darf man in römischen Zahlen benutzen? Welche der gezeigten Symbolfolgen stellt eine römische Zahl dar? Welche Symbole darf man in chemischen Verbindungen benutzen? Welche der gezeigten Symbolfolgen stellt eine chemische Verbindung dar?

Fachkonzept - formale Sprache Ein Alphabet ist eine nicht-leere endliche (geordnete Menge) von Symbolen. Alphabet der römischen Zahlen:  = {I, V, X, L, C, D, M} Ein Wort über einem Alphabet ist e. Hinter-einanderreihung endlich vieler Symbole aus einem vorgegebenen Alphabet. Wörter über dem Alphabet der römischen Zahlen: MMX, LXX, XXL, LILLI, ... Bei der Bildung von Wörtern über einem Alphabet Σ lässt man auch zu, dass überhaupt keine Symbole hintereinandergereiht werden. Man nennt dieses besondere Wort leeres Wort und bezeichnet es üblicherweise mit ε oder λ. Leeres Wort: λ Die Menge aller Wörter über einem Alphabet Σ wird mit Σ* bezeichnet. Mit Σ+ bezeichnet man die Menge aller Wörter über Σ ohne das leere Wort. Menge aller Wörter über dem Alphabet  = {I, V, X, L, C, D, M}: * = {λ, I, II, III, IIII, ..., IX, ..., IIXIXX, ...} Eine (formale) Sprache über einem Alphabet Σ ist eine bestimmte Teilmenge der Menge Σ* aller möglichen Wörter über Σ. Sprache der römischen Zahlen: L = {I, II, III, IV, V, VI, VII, VIII, IX, X, ...}

Fachkonzept - formale Sprache Ein Alphabet ist eine nicht-leere endliche (geordnete Menge) von Symbolen. Du hast sicher schon bemerkt, dass die Präzisierung der Begriffe hier mit den Mitteln der Mathematik erfolgt. Mit Hilfe des Mengen- und Folgenkonzepts aus der Mathematik werden die Begriffe "Alphabet", "Wort" und "Sprache" exakt definiert. Die Begriffe "Alphabet", "Wort" und "Sprache" erhalten hierdurch eine spezielle Bedeutung, die sich durchaus an die Bedeutung der Begriffe im Alltag anlehnt, aber nicht genau mit der Bedeutung im Alltag übereinstimmt. So wird der Begriff "Alphabet" in einem allgemeineren Sinn verwendet. Beachte auch, dass mit dem Begriff "(formale) Sprache" nur syntaktische Aspekte erfasst werden. Es kommt hier lediglich auf die Aneinanderreihung von Symbolen an, die Bedeutung von Symbolfolgen spielt dabei zunächst einmal keinerlei Rolle. Ein Wort über einem Alphabet ist e. Hinter-einanderreihung endlich vieler Symbole aus einem vorgegebenen Alphabet. Bei der Bildung von Wörtern über einem Alphabet Σ lässt man auch zu, dass überhaupt keine Symbole hintereinandergereiht werden. Man nennt dieses besondere Wort leeres Wort und bezeichnet es üblicherweise mit ε oder λ. Die Menge aller Wörter über einem Alphabet Σ wird mit Σ* bezeichnet. Mit Σ+ bezeichnet man die Menge aller Wörter über Σ ohne das leere Wort. Eine (formale) Sprache über einem Alphabet Σ ist eine bestimmte Teilmenge der Menge Σ* aller möglichen Wörter über Σ.

Beispiel - Schach Die Sprache FEN (Forsyth-Edwards-Notation) wird benutzt, um Schach-Spielzustände zu beschreiben. Viele Schachprogramme nutzen diese Sprache, wenn Spielzustände abgespeichert werden. So wird etwa der Schach-Spielzustand in der folgenden Abbildung wie folgt in der Sprache FEN beschrieben: rnbqkb1r/pp1p1ppp/2p2n2/8/2P1p3/2N2NP1/PP1PPP1P/R1BQKB1R w KQkq - 0 5 Aufgabe: Wir betrachten der Einfachheit halber nur den ersten Teil eines solchen "FEN-Wortes", der die aktuelle Spielbrettbelegung beschreibt: rnbqkb1r/pp1p1ppp/2p2n2/8/2P1p3/2N2NP1/PP1PPP1P/R1BQKB1R (a) Welches Alphabet Σ liegt der Sprache L der reduzierten FEN-Wörter zur Beschreibung von Spielbrettbelegung zu Grunde? (b) Gib Beispiele für Wörter über Σ an, die zu L bzw. nicht zu L gehören. (c) Beschreibe in Worten die Syntaxregeln, die reduzierten FEN-Wörtern zu Grunde liegen.

Beispiel - Pixelgrafik PGM (Portable Graymap) kann als Sprache zur Beschreibung von Graustufenbildern aufgefasst werden. Das nebenstehende Bild wird wie folgt in der Sprache PGM beschrieben: P2 4 2 7 0 1 2 3 4 5 6 7 Aufgabe: (a) Welches Alphabet Σ liegt der Sprache PGM zu Grunde? Gib Beispiele für Wörter über Σ an, die zu PGM bzw. nicht zu PGM gehören. (b) Verdeutliche am Beispiel PGM, was man unter Syntax und Sematik einer Sprache versteht.

Beispiel - ipigisi In Ipogesien hört man im Mathematikunterricht der 1. Klasse ständig Wörter der folgenden Art: ipigisi isipigisisi ipisigisisi isisipigisisisi isipisigisisisi ipisisigisisisi ... Aufgabe: Nachdem Ipo das Wort "isipisisigisisisisisi" sagt, gibt es ein Proteste. Warum wohl?

Beispiel - ipigisi Alphabet: Σ = {i, p, g, s}. "isi-Folgen": i, isi, isisi, .... Folge von i-Symbolen, bei der jeweils benachbarte i-Symbole durch ein s getrennt sind. "ipigisi-Folgen": ipigi, ipigisi, isipigisi, isipigisi, ... Struktur: isi-Folge p isi-Folge g isi-Folge. Sprache der beliebigen ipigisi-Ausdrücke: L1 = {ipigi, isipigi, ipisigi, ipigisi, isipisigi, ...} alle Wörter über dem Alphabet Σ = {i, p, g, s}, die eine ipigisi-Folge bilden. Sprache der mathematisch korrekten ipigisi-Ausdrücke: L2 = {ipigisi, isipigisisi, ipisigisisi, isisipigisisisi, isipisigisisisi, ipisisigisisisi, ...} alle Wörter über dem Alphabet Σ = {i, p, g, s}, die eine ipigisi-Folge bilden und bei denen die Summe der i-Symbole vor und nach dem g-Symbol gleich sind.

gleiche Syntax, unterschiedliche Semantik Syntax und Semantik Symbole und Symbolkombinationen werden oft so gewählt, dass sie eine bestimmte Bedeutung suggerieren. Das Beispiel zeigt aber, dass die Bedeutung den syntaktischen Einheiten nicht innewohnt, sondern unabhängig hiervon festgelegt werden muss. Einheit Bedeutung ipigisi 1+1=2 isipigisisi 2+1=3 ipisigisisi 1+2=3 isisipigisisisi 3+1=4 isipisigisisisi 2+2=4 ipisisigisisisi 1+3=4 ... Einheit Bedeutung ipigisi 1 ist gleich 1 subtrahiert von 2 isipigisisi 2 ist gleich 1 subtrahiert von 3 ipisigisisi 1 ist gleich 2 subtrahiert von 3 isisipigisisisi 3 ist gleich 1 subtrahiert von 4 isipisigisisisi 2 ist gleich 2 subtrhiert von 4 ipisisigisisisi 1 ist gleich 3 subtrahiert von 4 ... gleiche Syntax, unterschiedliche Semantik

Ausblick Die Beschreibung einer Sprache mit Hilfe einer Wortmenge ist zwar präzise, aber nicht konstruktiv. Es wird hier nicht festgelegt, wie die Wörter der Sprache erzeugt werden können. Im Folgenden werden Verfahren beschrieben, die es erlauben, alle Wörter einer formalen Sprache konstruktiv zu erzeugen.

Sprachbeschreibung mit Syntaxdiagrammen Teil 2 Sprachbeschreibung mit Syntaxdiagrammen

Beispiel – Turtle-Programme Turtle-Grafik geht von der Vorstellung aus, die Bewegung einer Schildkröte (engl. turtle) auf einer Zeichenfläche mit Hilfe von Anweisungen zu steuern. Die Schildkröte ist mit einem Stift versehen und hinterlässt bei ihren Bewegungen eine Spur auf der Zeichenfläche. Online-Interpreter: http://www.calormen.com/jslogo/ fd 100 rt 90 fd 100 rt 90 fd 100 rt 90 fd 100 rt 90

Turtle-Programme fd 100 rt 90 fd 100 fd 100rt 90fd 100 Welche der folgenden Turtle-Programme sind korrekt gebildet? Was leisten sie? fd 100 rt 90 fd 100 fd 100rt 90fd 100 fd100 rt90 fd100 fd -100 rt -90 fd -100 fd 100.5 rt 90.0 fd 100.5 fd 50 repeat 4 [fd 100 rt 90] lt 180 fd 50 lt 180 repeat 10 [repeat 4 [fd 20 rt 90] rt 90 fd 20 lt 90] Aufgabe: Teste mit dem Turtle-Interpreter.

Korrekte Turtle-Programme Unter der Sprache der Turtle-Programme soll die Menge aller korrekt gebildeten Anweisungsfolgen verstanden werden. fd 100 rt 90 fd 100 fd 100rt 90fd 100 Gehören diese Symbolfolgen zur Sprache der Turtle-Programme? fd100 rt90 fd100 fd -100 rt -90 fd -100 fd 100.5 rt 90.0 fd 100.5 Ziel ist es, die Sprache der Turtle-Programme präzise zu beschreiben.

Präzisierung der Sprache der Turtle-P. Der Aufbau eines Turtle-Programms kann mit Hilfe von Syntaxdiagrammen präzise festgelegt werden. Hier ein erster Versuch: Ziffer: Natzahl: Leer: Turtleanw: WS: Zahl: Anwfolge: Turtleprogr:

Präzisierung der Sprache der Turtle-P. Ziffer: Jeder "Weg" durch diese Diagramme liefert ein korrekt gebildetes Turtle-Programm: Natzahl: Turtleprogr -> Anwfolge -> TAnw WS TAnw -> 'fd' WS Zahl WS TAnw -> 'fd' Leer Zahl WS TAnw -> 'fd' ' ' Zahl WS TAnw -> 'fd' ' ' Natzahl WS TAnw -> 'fd' ' ' Ziffer Ziffer WS TAnw -> 'fd' ' ' '5' Ziffer WS TAnw -> 'fd' ' ' '5' '0' WS TAnw -> 'fd' ' ' '5' '0' ' ' TAnw -> 'fd' ' ' '5' '0' ' ' 'ht' Turtleanw: Zahl: Leer: Anwfolge: WS: Turtleprogr:

Übungen fd 100 rt 90 fd 100 fd 100rt 90fd 100 fd100 rt90 fd100 Aufgabe: Welche der folgenden Turtle-Programme sind nach den bisher erstellten Syntaxdiagrammen korrekt gebildet? fd 100 rt 90 fd 100 fd 100rt 90fd 100 fd100 rt90 fd100 fd -100 rt -90 fd -100 fd 100.5 rt 90.0 fd 100.5 Aufgabe: Ändere die Syntaxdiagramme so ab, dass auch Dezimalzahlen als Parameter erfasst werden. Aufgabe: Ändere die Syntaxdiagramme so ab, dass nach einer Anweisung mit Parameter (wie z.B. fd 100) keine Leerzeichen folgen müssen, wenn noch weitere Anweisungen folgen.

Übungen fd 50 repeat 4 [fd 100 rt 90] lt 180 fd 50 lt 180 Aufgabe: Entwickle die oben gezeigten Syntaxdiagramme so weiter, dass auch Wiederholeanweisungen mit erfasst werden. fd 50 repeat 4 [fd 100 rt 90] lt 180 fd 50 lt 180 repeat 10 [repeat 4 [fd 20 rt 90] rt 90 fd 20 lt 90]

Fachkonzept - Syntaxdiagramm Syntaxdiagramme dienen dazu, die Syntax einer Sprache präzise zu beschreiben. Syntaxdiagramme bestehen aus Terminalsymbolen, Nichtterminalsymbolen und Verbindungspfeilen. Ziffer: Nichtterminalsymbol Terminalsymbol Terminalsymbole sind Symbole des Alphabets der Sprache, die in Diagrammen durch abgerundete Rahmen zu erkennen sind. Im Beispiel: 0, 1, ..., 9, ., □, fd, bk, lt, rt, st, ht Natzahl: Nichtterminalsymbole sind Hilfssymbole, die in Diagrammen durch rechteckige Rahmen zu erkennen sind. Nichtterminalsymbole stehen jeweils für eigene Diagramme. Zahl: Im Beispiel: Ziffer, Natzahl, Zahl, …

Fachkonzept - Syntaxdiagramm Mit Hilfe von Syntaxdiagrammen lassen sich Wörter über dem Alphabet der Terminalsymbole herleiten. Eine Herleitung besteht dabei aus einer Folge von Umformungen eines Ausdrucks entlang der Wege durch die Syntaxdiagramme mit dem Ziel, die Nichtterminalsymbole letztlich alle durch Terminalsymbole zu ersetzen. Leer: Turtleanw: WS: Turtleprogr -> Anwfolge -> TAnw WS TAnw -> 'fd' WS Zahl WS TAnw -> 'fd' Leer Zahl WS TAnw -> 'fd' ' ' Zahl WS TAnw -> 'fd' ' ' Natzahl WS TAnw -> 'fd' ' ' Ziffer Ziffer WS TAnw -> 'fd' ' ' '5' Ziffer WS TAnw -> 'fd' ' ' '5' '0' WS TAnw -> 'fd' ' ' '5' '0' ' ' TAnw -> 'fd' ' ' '5' '0' ' ' 'ht' Anwfolge: Turtleprogr:

Konstruktionsmuster A: A: A: A: Sequenz Alternative Iteration Rekursion A: A: A: A:

Eine Sprache für Syntaxdiagramme Ziffer ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' Natzahl ::= Ziffer+ Zahl ::= '-'? NatZahl … Ziffer: Natzahl: Zahl:

Eine Sprache für Syntaxdiagramme … Leer ::= ' ' WS ::= Leer+ Turtleanw ::= 'fd' WS Zahl | 'bk' WS Zahl | 'lt' WS Zahl | 'rt' WS Zahl | 'st' | 'ht' Anwfolge ::= (Turtleanw WS)* TurtleAnw Turtleprogr ::= Anwfolge Leer: Turtleanw: WS: Anwfolge: Turtleprogr:

Eine Sprache für Syntaxdiagramme Aufgabe: Probiere das selbst mit dem Railroad Diagram Generator aus. Siehe: http://bottlecaps.de/rr/ui

Übungen Aufgabe: Die Sprache der (Standard)Zahlen Zahlen sind Wörter über dem Alphabet {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ., +, -}. Beispiele für Wörter, die zur Sprache gehören: 12, 4.5, 0.23, 1.0, 0.000, +5, -3.1, -1000 Beispiele für Wörter, die nicht zur Sprache gehören: 3..1, 2.2.1, 4., .5, 03.3, +-0, Beschreibe die Sprache der Zahlen mit Syntaxdiagrammen. Aufgabe: Die Sprache der inf-schule-Kapitelnummern Auf inf-schule kann man auch direkt eine Kapitelnummer eingeben: http://www.inf-schule.de/?seite=8.1.3 Welche Kapitelnummern sind hier erlaubt? Kapitelnummern sind Wörter über dem Alphabet {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, .}. Beispiele für Wörter, die zur Sprache gehören: 3, 3.1, 1.1.2.1, 4.2.12 Beispiele für Wörter, die nicht zur Sprache gehören: .4, 3..5, 1.0.3, 2.02.2, 0 Beschreibe die Sprache der inf-schule-Kapitelnummern mit Syntaxdiagrammen.

Übungen Aufgabe: Die Sprache der vereinfachten E-Mail-Adressen Wir betrachten hier vereinfachte E-Mail-Adressen, in denen nur die Symbole b, @ und . vorkommen dürfen. Beispiel: bb@b.bbb Folgende Regeln sollen zur Bildung solcher E-Mail-Adressen beachtet werden: Eine vereinfachte E-Mail-Adresse besteht aus einem User-Namen gefolgt vom @-Symbol und einer Domain-Angabe. Der User-Name soll nur aus b´s bestehen. Die Domainangabe soll aus Subdomains aufgebaut sein, die jeweils mit einem Punkt getrennt werden. Eine Subdomain besteht nur aus b´s. (a) Warum ist die textuelle Beschreibung der Regeln zur Bildung vereinfachter E-Mail-Adressen noch zu ungenau? Erläutere anhand von Beispielen. (b) Präzisiere die Sprache der vereinfachten E-Mail-Adressen mit Syntaxdiagrammen. Beachte, dass dabei auch Festlegungen getroffen werden müssen, die in der textuellen Regelbeschreibung noch zu ungenau sind.

Übungen Quelle: Biber-Wettbewerb 2009

Übungen Aufgabe: (Hinweise siehe I: 8.1.2.3) Da beim letzten Biber-Song-Contest zu viele Kandidaten die Regeln der Bunny-Banana-Sprache nicht beachtet haben, hat sich die Jury entschlossen, die Regeln nochmal präzise darzustellen. Ein Team von Biber-Informatikern ist beauftragt worden, die Bunny-Banana-Sprache mit Syntaxdiagrammen zu beschreiben.

Sprachbeschreibung mit Grammatiken Teil 3 Sprachbeschreibung mit Grammatiken

Email-Adresse Vertippt! Du willst immer auf dem neuesten Stand sein und daher die entsprechende „Newsletter“ abonnieren. Gott sei Dank „bemerkt“ das System den Tippfehler. Quelle: http://www.abc.net.au/tv/connect/newsletter.htm

Gültige Email-Adressen Mit speziellen Programmen (sog. Validierern) kann man überprüfen, ob eine Email-Adresse korrekt gebildet ist. Nur – was heißt hier korrekt? Quelle: http://www.web-toolbox.net/webtoolbox/index.htm

Aufbau einer Email-Adresse RFC 822 Quelle: http://www.web-toolbox.net/ webtoolbox/index.htm

Ein Blick in die RFC 822 Formale Präzisierung Quelle: http://tools.ietf.org/html/rfc822#section-6.1 Formale Präzisierung

Zielsetzung und Vorgehensweise Es gibt eine Vielzahl an Möglichkeiten, wie E-Mail-Adressen aufgabaut sein können. Beispiele - auch ungewöhnliche - findest du auf den Seiten von Wikipedia. Wir werden uns hier nicht mit all diesen Adressformaten beschäftigen. Ziel dieses Abschnittes ist es, ein Verfahren zur präzisen Festlegung des Aufbaus von E-Mail-Adressen einzuführen. Für diesen Zweck reicht es, ein sehr einfaches E-Mail-Adressformat zu betrachten.

Stark vereinfachte E-Mail-Adressen Wir betrachten hier vereinfachte E-Mail-Adressen, in denen nur die Symbole b, @ und . vorkommen dürfen. Beispiel: bb@b.bbb.bb Welche der folgenden Zeicheketten stellen vereinfachte E-Mail-Adressen dar? b@b.bb @b.b.bb bbb@bb bb.b@b.bb Eine vereinfachte E-Mail-Adresse besteht aus einem User-Namen gefolgt vom @-Symbol und einer Domain-Angabe. Der User-Name soll nur aus b´s bestehen. Die Domainangabe soll aus Subdomains mit einer Topleveldomain aufgebaut sein, die jeweils mit einem Punkt getrennt werden. Eine Subdomain und eine Topleveldomain besteht nur aus b´s. Informelle Beschreibung Schwierigkeit: Informelle Beschreibungen sind nicht ganz exakt und werden manchmal unterschiedlich interpretiert.

Präzisierung mit Syntaxdiagrammen Wir betrachten hier vereinfachte E-Mail-Adressen, in denen nur die Symbole b, @ und . vorkommen dürfen. Beispiel: bb@b.bbb.bb Emailadresse: User: Domain: Eine vereinfachte E-Mail-Adresse besteht aus einem User-Namen gefolgt vom @-Symbol und einer Domain-Angabe. Der User-Name soll nur aus b´s bestehen. Die Domainangabe soll aus Subdomains mit einer Topleveldomain aufgebaut sein, die jeweils mit einem Punkt getrennt werden. Eine Subdomain und eine Topleveldomain besteht nur aus b´s. Subdomains: Topleveldomain: Name: Buchstabe: Informelle Beschreibung Formale Beschreibung

Präzisierung mit Syntaxdiagrammen Emailadresse -> User @ Domain -> Name @ Domain -> Buchstabe Buchstabe @ Domain -> b Buchstabe @ Domain -> b b @ Domain -> b b @ Subdomains Topleveldomain -> b b @ Name . Name . Topleveldomain -> b b @ Buchstabe . Name . Topleveldomain -> b b @ b . Name . Topleveldomain -> b b @ b . Buchstabe Buchstabe Buchstabe . Topleveldomain -> b b @ b . b Buchstabe Buchstabe . Topleveldomain -> b b @ b . b b Buchstabe . Topleveldomain -> b b @ b . b b b . Topleveldomain -> b b @ b . b b b . Name -> b b @ b . b b b . Buchstabe Buchstabe -> b b @ b . b b b . b -> b b @ b . b b b . b b Emailadresse: User: Domain: Subdomains: Topleveldomain: Name: Ableitung eines Wortes Buchstabe: Schwierigkeit: Syntaxdiagramme eignen sich nicht so gut für eine automatisierte Verarbeitung (hier: Erzeugung von Ableitungen). Formale Beschreibung

Textuelle Darstellung von Syntaxdiagr. Emailadresse ::= User '@' Domain Emailadresse: User ::= Name User: Domain ::= Subdomains Topleveldomain Domain: Subdomains ::= (Name '.')+ Subdomains: Topleveldomain ::= Name Topleveldomain: Name ::= Buchstabe+ Name: Buchstabe ::= 'b' Buchstabe: Textuelle Darstellung Syntaxdiagramme Du kannst das selbst mit dem Railroad Diagram Generator ausprobieren.

Textuelle Darstellung von Syntaxdiagr. Emailadresse ::= User '@' Domain Emailadresse -> User '@' Domain User ::= Name User -> Name Domain ::= Subdomains Topleveldomain Domain -> Subdomains Topleveldomain Subdomains ::= (Name '.')+ Subdomains -> Name . Subdomains -> Name . Subdomains Topleveldomain ::= Name Topleveldomain -> Name Name ::= Buchstabe+ Name -> Buchstabe Name -> Buchstabe Name Buchstabe ::= 'b' Buchstabe -> b Textuelle Darstellung vereinfachte Darstellung

Ableitung mit Ersetzungsregeln Emailadresse -> # (1) User @ Domain -> # (2) Name @ Domain -> # (8) Buchstabe Name @ Domain -> # (9) b Name @ Domain -> # (7) b Buchstabe @ Domain -> # (9) b b @ Domain -> # (3) b b @ Subdomains Topleveldomain -> # (5) b b @ Name . Subdomains . Topleveldomain -> # (7) b b @ Buchstabe . Subdomains . Topleveldomain -> # (9) b b @ b . Subdomains . Topleveldomain -> # (4) b b @ b . Name . Topleveldomain -> # (8) b b @ b . Buchstabe Name . Topleveldomain -> # (9) b b @ b . b Name . Topleveldomain -> # (8) b b @ b . b Buchstabe Name . Topleveldomain -> # (9) b b @ b . b b Name . Topleveldomain -> # (7) b b @ b . b b b . Topleveldomain -> # (6) b b @ b . b b b . Name # (8) b b @ b . b b b . Buchstabe Name # (9) b b @ b . b b b . b Name # (7) b b @ b . b b b . b Buchstabe # (9) b b @ b . b b b . b b Emailadresse -> User '@' Domain 1 User -> Name 2 Domain -> Subdomains Topleveldomain 3 Subdomains -> Name . Subdomains -> Name . Subdomains 4 5 Topleveldomain -> Name 6 Name -> Buchstabe Name -> Buchstabe Name 7 8 Buchstabe -> b 9 Ableitung Ersetzungsregeln

Ersetzungsregeln in abgekürzter Form Emailadresse -> User @ Domain User -> Name Domain -> Subdomains Topleveldomain Subdomains -> Name . Subdomains -> Name . Subdomains Topleveldomain -> Name Name -> Buchstabe Name -> Buchstabe Name Buchstabe -> b E -> U@D U -> N D -> ST S -> N. S -> N.S T -> N N -> B N -> BN B -> b Ersetzungsregeln Ersetzungsregeln in abgekürzter Form

Ableitung mit Ersetzungsregeln Aufgabe: Entwickle mit Hilfe der Ersetzungsregeln (in abkürzender Schreibweise) eine Ableitung der Adresse bb@b.bbb.bb. In jedem Ersetzungsschritt darf nur eine Regel angewandt werden. E -> U@D U -> N D -> ST S -> N. S -> N.S T -> N N -> B N -> BN B -> b E -> # mit der Regel E -> U@D U@D -> # mit der Regel U -> N N@D -> # mit der Regel N -> BN bb@b.bbb.bb Ersetzungsregeln Ableitung eines Wortes

Fachkonzept - Grammatik Eine Grammatik besteht aus den folgenden Komponenten: einer endlichen nichtleeren Menge T von Terminalsymbolen (Alphabet der betreffenden Sprache) einer endlichen nichtleeren Menge N von Nichtterminalsymbolen (Hilfsymbole) einer endlichen Menge P von Produktionen (Ersetzungsregeln) einem Startsymbol S aus N (zum Starten einer Ableitung) Man schreibt auch kurz: G = (T, N, P, S). E -> U@D U -> N D -> ST S -> N. S -> N.S T -> N N -> B N -> BN B -> b Produktionen Terminalsymbole T = {b, @, .} Nichtterminalsymbole N = {E, U, D, S} Produktionen P = {E -> U@D, ..., B -> b} Startsymbol S: E

Fachkonzept - Grammatik Eine Produktion hat die Gestalt u -> v. Die linke Seite u und die rechte Seite v sind dabei Wörter über dem Alphabet V = T ∪ N sämtlicher Symbole. Die linke Seite u muss mindestens ein Nichtterminalsymbol aus N enthalten. E -> U@D U -> N D -> ST S -> N. S -> N.S T -> N N -> B N -> BN B -> b E -> bU@D U -> bU U -> λ D -> bS S -> bS S -> .bS .bS -> .bT T -> bT T -> λ Produktionen Produktionen T = {b, @, .} N = {E, U, D, S} Beachte: Eine Produktion kann das leere Wort λ als rechte Seite haben. Auf der linken Seite einer Produktion kann auch ein komplexeres Wort stehen, das mindestens ein Nichtterminalsymbol enthält.

Worterzeugung mit Ableitungen Eine Ableitung beginnt immer mit dem Startsymbol. Sie endet, wenn alle Nichtterminalsymbole ersetzt sind. Ein Ableitungsschritt besteht darin, ein Teilwort innerhalb eines Worts mit Hilfe einer passenden Produktion zu ersetzen. Produktionen sind demnach Ersetzungsregeln. E -> U@D U -> N D -> ST S -> N. S -> N.S T -> bb N -> B N -> BN B -> b E -> # mit der Regel E -> U@D U@D -> # mit der Regel U -> N N@D -> # mit der Regel N -> bN BN@D -> # mit der Regel N -> B BB@D -> # mit der Regel B -> b bB@D -> # mit der Regel B -> b bb@D -> # mit der Regel D -> ST bb@ST -> # mit der Regel S -> N.S bb@N.ST -> # mit der Regel S -> N. bb@N.N.T -> # mit der Regel N -> B bb@B.N.T -> # mit der Regel B -> b bb@b.N.T -> # mit der Regel N -> BN bb@b.BN.T -> # mit der Regel N -> BN bb@b.BBN.T -> # mit der Regel N -> B bb@b.BBB.T -> # mit der Regel B -> b bb@b.bBB.T -> # mit der Regel B -> b bb@b.bbB.T -> # mit der Regel B -> b … bb@b.bbb.bb Produktionen Ableitung

Sprachfestlegung mit einer Grammatik Eine Grammatik G = (T, N, P, S) erzeugt eine Sprache L(G) über dem Alphabet T. L(G) ist dabei die Menge der Wörter über T, die vom Startsymbol S mit Hilfe der Produktionen aus P abgeleitet werden können. Man nennt L(G) die von G erzeugte Sprache. E -> U@D U -> N D -> ST S -> N. S -> N.S T -> N N -> B N -> BN B -> b Grammatik G1  = T = {b, @, .} E -> bU@D U -> bU U -> λ D -> bS S -> bS S -> .bS .bS -> .bT T -> bT T -> λ Grammatik G2 L(G1) = {…, bb@b.bbb.bb, …} Menge der stark vereinfachten E-Mail-Adressen L(G2) = {…, bb@b.bbb.bb, …} Menge der stark vereinfachten E-Mail-Adressen Beachte, dass verschiedene Grammatiken dieselbe Sprache erzeugen können.

Überprüfung eines Wortes Experimente mit JFlap Eingabe der Grammatik Überprüfung eines Wortes

Experimente mit JFlap Ableitung eines Wortes Ableitung eines Wortes

Übungen Aufgabe Teste mit JFlap die folgenden Grammatiken. Mache dir mit Hilfe von Tests auch die Besonderheiten der Regelsysteme klar. Findest du weitere Ersetzungsregeln, die dieselben E-Mail-Adressen erzeugen wie die Ersetzungsregeln oben? Teste deine Vorschläge mit JFlap. E -> U@D U -> N D -> ST S -> N. S -> N.S T -> N N -> B N -> BN B -> b E -> bU U -> bU U -> @S S -> bB B -> bB B -> .S B -> .T T -> bT T -> b E -> bU@D U -> bU U -> λ D -> bS S -> bS S -> .bS .bS -> .bT T -> bT T -> λ

Übungen Aufgabe Binärzahlen sind Zahlen, die im Dualsystem / Zweiersystem dargestellt sind und daher nur die Symbole 0 und 1 zur Zahldarstellung benutzen. Die folgende Zahlenreihe beschreibt, wie man im Dualsystem / Zweiersystem zählt: 0, 1, 10, 11, 100, 101, 110, 111, 1000, ... Binärzahlen sind Wörter über dem Alphabet Σ = {0, 1}. Die Sprache der Binärzahlen LBin besteht aus sämtlichen Wörtern über Σ = {0, 1}, die eine Binärzahl darstellen: LBin = {0, 1, 10, 11, 100, 101, 110, 111, 1000, ...} Entwickle eine (mehrere) Grammatik(en) zur Erzeugung der Sprache LBin.

Übungen 57 Aufgabe: Die Sprache der inf-schule-Kapitelnummern Auf inf-schule kann man auch direkt eine Kapitelnummer eingeben: http://www.inf-schule.de/?seite=8.1.3 Welche Kapitelnummern sind hier erlaubt? Kapitelnummern sind Wörter über dem Alphabet {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, .}. Beispiele für Wörter, die zur Sprache gehören: 3, 3.1, 1.1.2.1, 4.2.12 Beispiele für Wörter, die nicht zur Sprache gehören: .4, 3..5, 1.0.3, 2.02.2, 0 Entwickle eine Grammatik zur Erzeugung der Sprache der inf-schule-Kapitelnummern. Es reicht, wenn du nur die Ziffern 0, 1 und 2 betrachtest.

Übungen Aufgabe Entwickle eine Grammatik zur Erzeugung der Sprache L1 = {ipigi, isipigi, ipisigi, ipigisi, isipisigi, ...} alle Wörter über dem Alphabet Σ = {i, p, g, s}, die eine ipigisi-Folge bilden. (b) Entwickle eine Grammatik zur Erzeugung der Sprache L2 = {ipigisi, isipigisisi, ipisigisisi, isisipigisisisi, isipisigisisisi, ipisisigisisisi, ...} alle Wörter über dem Alphabet Σ = {i, p, g, s}, die eine ipigisi-Folge bilden und bei denen die Summe der i-Symbole vor und nach dem g-Symbol gleich sind.

Kurzschreibweise für Produktionen floatnumber: floatnumber ::= pointfloat | exponentfloat pointfloat ::= intpart? fraction | intpart "." exponentfloat ::= (intpart | pointfloat) exponent intpart ::= digit+ fraction ::= "." digit+ exponent ::= ("e" | "E") ["+" | "-"] digit+ digit ::= "0"..."9" pointfloat: exponentfloat: In der Praxis werden Produktionen oft in einer Kurzschreibweise (EBNF) beschrieben. Mit geeigneten Werkzeugen (z.B. dem Railroad Diagram Generator) lassen sich aus dieser Schreibweise Syntaxdiagramme automatisiert erzeugen. digit: intpart: fraction: exponent: Aufgabe: Probiere das selbst aus.

Kurzschreibweise für Produktionen Die (erweiterte) Backus-Naur-Form (kurz BNF bzw. EBNF) ist eine Kurzschreibweise für Produktionen. Es gibt eine Reihe verschiedener Schreibweisen für Regeln in (E)BNF. Die am häufigsten benutzten Schreibweisen werden im Folgenden anhand einfacher Beispiele vorgestellt. vorzeichen -> + vorzeichen -> - vorzeichen -> + | - Alternative zahl -> ziffer zahl -> ziffer zahl zahl = ziffer {ziffer} zahl = ziffer ziffer* zahl = ziffer+ Iteration zahlmitvorzeichen -> zahl zahlmitvorzeichen -> + zahl zahlmitvorzeichen -> - zahl zahlmitvorzeichen = [vorzeichen] zahl zahlmitvorzeichen = vorzeichen? zahl optionale Teile

Grammatiken für Alltagssprachen Ein Satz besteht aus einer Nominalphrase und einer Verbalphrase. Eine Nominalphrase muss immer aus einem Nomen bestehen, welchem unter Umständen ein Artikel vorangestellt ist. Ferner kann dem Nomen eine Präpositionalphrase nachgestellt sein. Eine Verbalphrase besteht aus einem Verb, dem eine Nominal- oder Präpositionalphrase nachgestellt sein kann. Eine Präpositionalphrase besteht aus einer Präposition und einer Nominalphrase. Es gibt folgende Nomen: … Es gibt folgende Verben: … Es gibt folgende Artikel: … Es gibt folgende Präpositionen: … <S> -> <NP><VP> <NP> -> <N> <NP> -> <A><N> <NP> -> <N><PP> <VP> -> <V> <VP> -> <V><NP> <VP> -> <VP><PP> <PP> -> <P><NP> <N> -> Katze <N> -> Maus ... <V> -> fängt <A> -> der <A> -> die <A> -> das <A> -> ein <A> -> eine <P> -> mit <P> -> in Grammatik

Grammatiken für Alltagssprachen Die Beschreibung, Erkennung und Übersetzung natürlicher Sprachen ist sehr schwierig. Der Beschreibungsansatz über Grammatiken (im Sinne der Informatik) hat bisher nicht zum Erfolg geführt. Heute benutzt man eher statistische Methoden, um natürliche Sprachen zu erfassen und automatisiert zu verarbeiten. <S> -> <NP><VP> <NP> -> <N> <NP> -> <A><N> <NP> -> <N><PP> <VP> -> <V> <VP> -> <V><NP> <VP> -> <VP><PP> <PP> -> <P><NP> <N> -> Katze <N> -> Maus ... <V> -> fängt <A> -> der <A> -> die <A> -> das <A> -> ein <A> -> eine <P> -> mit <P> -> in <S> -> <NP><VP> -> <A><N><VP> -> die <N><VP> -> die Katze <VP> -> ... die Katze fängt die Maus Grammatik

Sprachbeschreibung mit regulären Ausdrücken Teil 4 Sprachbeschreibung mit regulären Ausdrücken

Mustersuche in OpenOffice Es kommt des öfteren vor, dass man bestimmte Zeichenketten in einem langen Text suchen möchte. Textverarbeitungsprogramme stellen in der Regel spezielle Suchfunktionen für diesen Zweck bereit. Das Textverarbeitungsprogramm OpenOffice erlaubt nicht nur einfache Suchmuster wie z.B. "RFC", sondern auch komplexere Suchmuster wie z.B. "RFC...", wobei die Punkte hier für Ziffern von 0 bis 9 stehen sollen. Ein mögliches Suchergebnis wäre z.B. "RFC0822". Die Beschreibung der Suchmuster erfolgt mit Hilfe regulärer Ausdrücke. Die Abbildung zeigt, wie man ein Suchmuster in OpenOffice mit einem regulären Ausdruck festlegt.

Aufgabe Besorge dir die RFC 5322 und teste die oben gezeigten Suchoperationen. Benutze die folgenden regulären Ausdrücke als Suchmuster und lasse sie von OpenOpffice beim Text RFC 5322 auswerten. Beschreibe jeweils, wonach gesucht wird. 0+ 00+ 00* [0-9] [1-9](\.) ([1-9](\.))+ ([1-9ABC](\.))+ [1-9](\.)?[1-9] (From:)|(To:) Denke dir selbst weitere Suchmuster aus, um die Bedeutung der Metazeichen zu erschließen. Du kannst auch die Hilfe von OpenOffice zu Rate ziehen.

Aufgabe Entwickle einen regulären Ausdruck, mit dem man E-Mail-Adressen als Suchergebnis geliefert bekommt. Beginne mit den vereinfachten Adressen der Gestalt bb@b.bbb.bb (siehe Folie 43). Schreibe Beispiele und gegenbeispiele für solche Adressen in ein OpenOffice-Textdokument und teste so den entwickelten regulären Ausdruck. Erweitere jetzt zu realeren E-Mail-Adressen. Entwickle so Schritt für Schritt einen regulären Ausdruck für solche Adressen. Benutze ggf. die Informationen auf den folgenden Folien.

Regulärer Ausdruck (Praxisversion) Zeichen und Zeichenmengen regulärer Ausdruck a \+ [hsv] [\[x\+y\]] [a-z] [a-z0-9] [^0-9] beschriebene Wortmenge {a} {+} {h, s, v} {[, x, +, y, ]} {a, b, ..., y, z} {a, b, ..., y, z, 0, 1, ..., 8, 9} Z - {0, 1, ..., 8, 9}; Menge Z aller Zeichen ohne 0, ..., 9 Konkatenation regulärer Ausdruck K2 [a-z][0-9] 1[0-9]1 beschriebene Wortmenge {K2} {a0, ..., a9, b0, ..., b9, ..., z0, ..., z9} {101, 111, 121, 131, 141, 151, 161, 171, 181, 191}

Regulärer Ausdruck (Praxisversion) Iteration regulärer Ausdruck a* a+ [0-9]+ 1[01]*1 beschriebene Wortmenge {λ, a, aa, aaa, aaaa, ...} {a, aa, aaa, aaaa, ...} {0, ..., 9, 00, ..., 99, 000, ..., 999, ...} {11, 101, 111, 1001, 1011, 1101, 1111, 10001, ...} Option regulärer Ausdruck b? ab?c [\+\-]?[0-9]+ beschriebene Wortmenge {λ, b} {ac, abc} {0, +0, -0, 1, +1, -1, ...}

Regulärer Ausdruck (Praxisversion) Alternative regulärer Ausdruck a|b [a-c]|[0-2] beschriebene Wortmenge {a, b} {a, b, c, 0, 1, 2} Bindungsstärke und Gruppierung regulärer Ausdruck ab+ (ab)+ ab|c a(b|c) beschriebene Wortmenge {ab, abb, abbbb, ...} {ab, abab, ababab, ...} {ab, c} {ab, ac}

Regulärer Ausdruck (Praxisversion) Weitere Möglichkeiten zur Bildung regulärer Ausdrücke findet man in Nachschlagewerken, z.B. in der OpenOffice-Hilfe. Beispiel: ^[:digit:]{3}$ ^ besagt, dass die Übereinstimmung am Absatzanfang stehen muss, [:digit:] entspricht einer beliebigen Dezimalziffer, {3} besagt, dass genau 3 Entsprechungen für "digit" existieren müssen, $ besagt, dass die Übereinstimmung am Absatzende auftreten muss. Quelle: OpenOffice-Hilfe

Experimente mit e. Online-Werkzeug Reguläre Ausdrücke lassen sich auch gut mit dem Online-Werkzeug Regex Pal testen (siehe http://www.regexpal.com/).

Übungen Aufgaben: Entwickle reguläre Ausdrücke für folgende Mustersuchsituationen: Datumsangaben (wie z.B. 1.1.2017 oder 04.04.2018) Telefonnummern (wie 06232-2341) Überschriften in HTML-Quelltexten (wie z.B. <h2>Reguläre Ausdrücke</h2>) Gleitkommazahlen (wie z.B. 13.4 oder 3.1e4 oder 5.0E-2)

Reguläre Ausdrücke in Python import re def suchen(regAusdruck, textdatei): f = open(textdatei, 'r', encoding = 'iso-8859-1') rfctext = f.read() f.close() regAusdruckObj = re.compile(regAusdruck) return regAusdruckObj.findall(rfctext) # Test print(suchen("(?:[1-9ABC]\.)+", "rfc5322.txt")) Die Operation findall erzeugt eine Liste mit den zum regulären Ausdruck passenden Zeichenketten. >>> ['1.', '1.1.', '1.2.', '1.2.1.', '1.2.2.', '1.2.3.', '2.', '2.1.', '2.1.1.',...] Bem: ?: bewirkt in einer Klammerung (…), dass keine Gruppe erzeugt wird, auf die man später zugreifen kann.

Reguläre Ausdrücke in Python import re def suchen(regAusdruck, textdatei): f = open(textdatei, 'r', encoding = 'iso-8859-1') rfctext = f.read() f.close() regAusdruckObj = re.compile(regAusdruck) for match in regAusdruckObj.finditer(rfctext): print(match.group()) # Test suchen("(?:[1-9ABC]\.)+", "rfc5322.txt") Die Anweisung re.finditer(regAusdruck, rfctext) erzeugt einen Iterator, der über alle gefundenen, nicht überlappenden Übereinstimmungen iteriert. >>> '1.' '1.1.' '1.2.' '1.2.1.' '1.2.2.' '1.2.3.' ...

Regulärer Ausdruck (Theorieversion) Beispiele regulärer Ausdruck Ø λ 1 10 0+1 1* 01* 0*1* 0*+1* 0+1(0+1)* beschriebene Wortmenge {} {λ} {0} {1} {10} {0, 1} {λ, 1, 11, 111, 1111, ...} {0, 01, 011, 0111, 01111, ...} {λ, 0, 00, ..., 1, 01, 001, ..., 11, 011, 0011, ... } {λ 0, 00, 000, ..., 1, 11, 111, ...} {0, 1, 10, 11, 100, 101, 110, 111, ...}

Fachkonzept - regulärer Ausdruck Reguläre Ausdrücke über dem Alphabet Σ und die Wortmengen, die sie beschreiben, werden wie folgt festgelegt: Ø ist ein regulärer Ausdruck. Er beschreibt die leere Wortmenge {}. λ ist ein regulärer Ausdruck. Er beschreibt die Wortmenge {λ}, in der nur das leere Wort vorkommt. Für jedes a aus Σ ist a ein regulärer Ausdruck. Der reguläre Ausdruck a beschreibt die Wortmenge {a}.

Fachkonzept - regulärer Ausdruck Reguläre Ausdrücke über dem Alphabet Σ und die Wortmengen, die sie beschreiben, werden wie folgt festgelegt: Wenn α und β reguläre Ausdrücke sind, dann ist auch die Konkatenation αβ ein regulärer Ausdruck. Wenn α die Wortmenge A und β die Wortmenge B beschreibt, dann beschreibt die Konkatenation αβ die Menge {ab | a aus A und b aus B} aller Wörter, die mit einem Wort aus A beginnen und mit einem Wort aus B enden. Wenn α und β reguläre Ausdrücke sind, dann ist auch die Alternative α+β ein regulärer Ausdruck. Wenn α die Wortmenge A und β die Wortmenge B beschreibt, dann beschreibt die Alternative α+β die Menge {w | w aus A oder w aus B} aller Wörter, die in A oder in B vorkommen. Wenn α ein regulärer Ausdruck ist, dann ist auch die Iteration α* ein regulärer Ausdruck. Wenn α die Wortmenge A beschreibt, dann beschreibt die Iteration α* die Menge A* aller Wörter, die durch endlich-maliges Aneinanderfügen von Wörtern aus A entstehen.

Übungen Aufgabe: Erkläre jeweils, welche Wortmengen hier beschrieben werden: (halli)*hallo Too*r (5+6+7+8+9+10)(a+b+c+d) ((0+1)(0+1+2+3+4+5+6+7+8+9)+2(0+1+2+3)):(0+1+2+3+4+5)(0+1+2+3+4+5+6+7+8+9) Aufgabe: Beschreibe die Menge der vereinfachten E-Mail-Adressen mit einem regulären Ausdruck. Aufgabe: Auf inf-schule kann man auch direkt eine Kapitelnummer eingeben: http://www.inf-schule.de/?seite=8.1.3 Entwickle einen regulären Ausdruck, mit dem man den korrekten Aufbau einer Kapitelnummer überprüfen kann.

Literaturhinweise F. Gasper, I. Leiß, M. Spengler, H. Stimm: Technische und theoretische Informatik. Bsv 1992. E. Modrow: Automaten, Schaltwerke, Sprachen. Dümmlers Verlag 1988. R. Baumann: Informatik für die Sekundarstufe II, Band 2. Klett-Verlag 1993. Informatik heute, Band 2. Schroedel-Verlag 1988. U. Schöning: Theoretische Informatik – kurzgefasst. Spektrum Akademischer Verlag 2001. J. E. Hopcroft / J. D. Ullman: Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie. Addison-Wesley 1988. S. H. Rodger, T. W. Finley: JFLAP. Jones and Bartlett Publishers 2006. ... Die Darstellung hier orientiert sich an den Materialien auf den Webseiten: http://www.inf-schule.de