Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.
-
Upload
lorelei-moring -
Category
Documents
-
view
149 -
download
9
Transcript of Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.
![Page 1: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/1.jpg)
Formale Sprachen
Klaus Becker
2013
![Page 2: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/2.jpg)
2 Formale Sprachen
![Page 3: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/3.jpg)
3 Teil 1
Einführung und Präzisierung
![Page 4: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/4.jpg)
4 Zeichensysteme
Jede Sprache benutzt Zeichen bzw. Symbole zur Darstellung von Information.
![Page 5: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/5.jpg)
5 Syntax, Semantik, Pragmatik
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.
Kommunikation mit Zeichensystemen kann ganz schön kompliziert sein. Verschiedene Aspekte von Sprache kommen dabei ins Spiel.
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.
![Page 6: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/6.jpg)
6 Sprachen in der Informatik
Information muss mit geeignen Sprachen dargestellt werden, bevor sie in Form von Daten automatisiert verarbeitet werden kann. Die Verarbeitung der Daten selbst wird mit speziellen Sprachen beschrieben. Alle diese Sprachen sind formale Sprachen, die präzise festgelegt sind.
P25 81515 15 8 15 1515 8 8 8 15 8 8 8 8 812 12 12 12 1212 5 12 5 1212 12 12 12 1212 5 12 5 1212 12 12 12 12
P25 815 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 3 3 3 3 3 3 10 3 10 3 3 3 3 3 3
def invertieren(daten): ... return d
Darstellen Deuten
Verarbeiten
PGM
Python
PGM
![Page 7: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/7.jpg)
7 Fokussierung auf die Syntax
Wir werden uns im Folgenden auf die Syntax von Sprachen konzentrieren. Ziel ist es, die Syntax von Sprachen möglichst präzise zu beschreiben. Zur Einführung betrachten wir zunächst einfache Sprachen aus dem Alltag.
P25 81515 15 8 15 1515 8 8 8 15 8 8 8 8 812 12 12 12 1212 5 12 5 1212 12 12 12 1212 5 12 5 1212 12 12 12 12
P25 815 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 3 3 3 3 3 3 10 3 10 3 3 3 3 3 3
def invertieren(daten): ... return d
Darstellen Deuten
Verarbeiten
Syntax: muss präzise festgelegt werden
Semantik: muss präzise festgelegt werden
Pragmatik: spielt keine Rolle
![Page 8: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/8.jpg)
8 Beispiele aus dem Alltag
Beispiel:
Die Sprache der römische Zahlen
XVXXIXMICMXCIXMMMDCCLXXXIVMLLZXXIIXCMURX…
Beispiel:
Die Sprache der chemischen Verbindungen
H2O
C2H4O2
NaCl
TiMo
K0M1N2
0BOCK
…
Welche der gezeigten Symbolfolgen stellt eine römische Zahl dar?
Welche der gezeigten Symbolfolgen stellt eine chemische Verbindung dar?
![Page 9: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/9.jpg)
9 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 λ.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 Σ.
Sprache der römischen Zahlen:
L = {I, II, III, IV, V, VI, VII, VIII, IX, X, ...}
Menge aller Wörter über dem Alphabet = {I, V, X, L, C, D, M}:
* = {λ, I, II, III, IIII, ..., IX, ..., IIXIXX, ...}
Leeres Wort: λ
![Page 10: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/10.jpg)
10 Fachkonzept - formale Sprache
Ein Alphabet ist eine nicht-leere endliche (geordnete Menge) von Symbolen.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 Σ.
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.
![Page 11: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/11.jpg)
11 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.
![Page 12: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/12.jpg)
12 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.
![Page 13: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/13.jpg)
13 Beispiel - ipigisi
ipigisi
isipigisisi
ipisigisisi
isisipigisisisi
isipisigisisisi
ipisisigisisisi
...
In Ipogesien hört man im Mathematikunterricht der 1. Klasse ständig Wörter der folgenden Art:
Aufgabe:
Nachdem Ipo das Wort "isipisisigisisisisisi" sagt, gibt es ein Proteste. Warum wohl?
![Page 14: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/14.jpg)
14 Beispiel - ipigisi
Alphabet: Σ = {i, p, g, s}.
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.
"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.
![Page 15: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/15.jpg)
15 Syntax und Semantik
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
...
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.
gleiche Syntax, unterschiedliche Semantik
![Page 16: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/16.jpg)
16 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.
![Page 17: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/17.jpg)
17 Teil 2
Sprachbeschreibung mit Syntaxdiagrammen
![Page 18: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/18.jpg)
18 Beispiel – Logo-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.
Die Schildkröte ist hier mit einem grünen Dreieck dargestellt. Das abgebildete Quadrat zeichnet sie mit den folgenden Anweisungen.
fd 100 rt 90 fd 100 rt 90 fd 100 rt 90 fd 100 rt 90
Unter der Sprache der Turtle-Programme soll die Menge aller korrekt gebildeten Anweisungsfolgen verstanden werden, die von einem Turtle-Interpreter ausgeführt werden können.
fd 100rt 90fd 100
fd100 rt90 fd100
Gehören diese Symbolfolgen zur Sprache der Turtle-Programme?
![Page 19: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/19.jpg)
19
Präzisierung der Sprache der Turtle-P.
Der Aufbau eines Turtle-Programms kann mit Hilfe von Syntaxdiagrammen präzise festgelegt werden. Wir betrachten vorerst nur recht einfache Turtle-Programme, bei denen keine Wiederholungen und Fallunterscheidungen vorgesehen sind.
Ziffer: Natzahl:
Dezbruch:
Zahl:
Leer:
WS:
Turtleanw:
Anwfolge:
Turtleprogr:
![Page 20: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/20.jpg)
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' WS ->
'fd' ' ' '5' '0' ' ' 'ht' ' ' ->
20
Präzisierung der Sprache der Turtle-P.
Jeder "Weg" durch diese Diagramme liefert ein korrekt gebildetes Turtle-Programm:
Ziffer:
Natzahl:
Dezbruch:
Zahl:
Leer:
WS:
Turtleanw:
Anwfolge:
Turtleprogr:
![Page 21: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/21.jpg)
21 Übungen
Aufgabe:
Entscheide mit Hilfe der Syntaxdiagramme, ob die Zeichenfolgen zur Sprache der Turtle-Programme gehören.
fd 100rt 90fd 100
fd100 rt90 fd100
Aufgabe:
Ändere die Syntaxdiagramme so ab, dass nach einer ht-Anweisung am Ende einer Anweisungsfolge kein Leerzeichen mehr stehen muss.
![Page 22: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/22.jpg)
22 Übungen
Aufgabe:
Wir erweitern jetzt die Sprache der Turtle-Programme. Es soll jetzt auch möglich sein, Wiederholungen mit einer festen Anzahl von Wiederholungsdurchgängen zu bilden.
(a) Teste zunächst mit dem Logo-Interpreter, was solche Wiederholeanweisungen bewirken.
(b) Teste anschließend, wie Tutle-Programme mit Wiederholeanweisungen aufgebaut sein können.
(c) 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]
![Page 23: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/23.jpg)
23 Beispiel – Rechenausdrücke
Rechenausdrücke kommen in Programmiersprachen zur Beschreibung von Berechnungen vor. So enthält die Python-Anweisung x = x + y den Rechenausdruck (bzw. Term) x + y zur Berechnung des Wertes, der der Variablen x zugewiesen werden soll.
x+y
(x-y)*(y-x)
2*(x+4)
…
Unter der Sprache der Rechenausdrücke soll die Menge aller korrekt gebildeten Anweisungsfolgen verstanden werden.
+-x
x++
Gehören diese Symbolfolgen zur Sprache der Rechenausdrücke?
Alphabet: {0, 1, ..., 9, x, y, z, +, -, *, /, (, )}
Sprache: {0, 1, …, x, y, z, 0+0, …, x+y, …, …}
![Page 24: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/24.jpg)
24 Fachkonzept - Syntaxdiagramm
Syntaxdiagramme dienen dazu, die Syntax einer Sprache präzise zu beschreiben. Syntaxdiagramme bestehen aus Terminalsymbolen, Nichtterminalsymbolen und Verbindungspfeilen.Terminalsymbole sind Symbole des Alphabets der Sprache, die in Diagrammen durch abgerundete Rahmen zu erkennen sind.Im Beispiel:
0, 1, ..., 9, x, y, z, +, -, *, /, (, )
Nichtterminalsymbole sind Hilfssymbole, die in Diagrammen durch rechteckige Rahmen zu erkennen sind. Nichtterminalsymbole stehen jeweils für eigene Diagramme.Im Beispiel:
Ausdruck, Summand, Faktor, Variable, Zahl, Ziffer
Terminalsymbol
Ziffer:
Zahl:
Faktor:
Summand:
Variable:Ausdruck:
Nichtterminalsymbol
![Page 25: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/25.jpg)
25 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. ausdruck ->summand ->faktor * faktor ->( ausdruck ) * faktor ->( summand + summand ) * faktor ->( faktor + summand ) * faktor ->( variable + summand ) * faktor ->( x + summand ) * faktor ->( x + faktor ) * faktor ->( x + variable ) * faktor ->( x + y ) * faktor ->( x + y ) * ( ausdruck ) ->( x + y ) * ( summand - summand ) ->( x + y ) * ( faktor - summand ) ->( x + y ) * ( variable - summand ) ->( x + y ) * ( x - summand ) ->( x + y ) * ( x - faktor ) ->( x + y ) * ( x - variable ) ->( x + y ) * ( x - y ) Terminalsymbol
Ziffer:
Zahl:
Faktor:
Summand:
Variable:Ausdruck:
Nichtterminalsymbol
![Page 26: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/26.jpg)
26
Konstruktionsmuster:
Sequenz
Alternative
Iteration
Rekursion
Fachkonzept - Syntaxdiagramm
Ziffer:
Zahl:
Faktor:
Summand:
Variable:Ausdruck:
A:
A:
A:
A:
![Page 27: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/27.jpg)
27 Übungen
Aufgabe:
Untersuche, ob diese Symbolfolgen korrekt gebildete Rechenausdrücke sind:
x-y-2
x-(y-2)
+-x
x++
![Page 28: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/28.jpg)
28 Übungen
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.
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.
![Page 29: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/29.jpg)
29 Übungen
Quelle: Biber-Wettbewerb 2009
![Page 30: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/30.jpg)
30 Ü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.
![Page 31: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/31.jpg)
31 Teil 3
Sprachbeschreibung mit Grammatiken
![Page 32: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/32.jpg)
32 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/rn/newsletters/music/default.htm
![Page 33: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/33.jpg)
33 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
![Page 34: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/34.jpg)
34 Aufbau einer Email-Adresse
Quelle: http://www.web-toolbox.net/webtoolbox/index.htm
RFC 822
![Page 35: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/35.jpg)
35 Ein Blick in die RFC 822
Quelle: http://tools.ietf.org/html/rfc822#section-6.1
Formale Präzisierung
![Page 36: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/36.jpg)
36 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.
![Page 37: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/37.jpg)
37 Stark vereinfachte E-Mail-Adressen
Wir betrachten hier vereinfachte E-Mail-Adressen, in denen nur die Symbole b, @ und . vorkommen dürfen.
Beispiel: [email protected]
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.
Während die Subdomains aus beliebig vielen b´s besteht, soll die Topleveldomain aus genau zwei b´s bestehen.
Welche der folgenden Zeicheketten stellen vereinfachte E-Mail-Adressen dar?
@b.b.bb
bbb@bb
Informelle BeschreibungSchwierigkeit:Informelle Beschreibungen sind nicht ganz exakt und werden manchmal unterschiedlich interpretiert.
![Page 38: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/38.jpg)
38
Präzisierung mit Syntaxdiagrammen
Wir betrachten hier vereinfachte E-Mail-Adressen, in denen nur die Symbole b, @ und . vorkommen dürfen.
Beispiel: [email protected]
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.
Während die Subdomains aus beliebig vielen b´s besteht, soll die Topleveldomain aus genau zwei b´s bestehen.
Informelle Beschreibung
Emailadresse:
User:
Domain:
Subdomains:
Topleveldomain:
Name:
Buchstabe:
Formale Beschreibung
![Page 39: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/39.jpg)
39
Präzisierung mit Syntaxdiagrammen
Ableitung eines Wortes
Formale Beschreibung
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 . b b
Schwierigkeit:Syntaxdiagramme eignen sich nicht so gut für eine automatisierte Verarbeitung (hier: Erzeugung von Ableitungen).
Emailadresse:
User:
Domain:
Subdomains:
Topleveldomain:
Name:
Buchstabe:
![Page 40: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/40.jpg)
40
Textuelle Darstellung von Syntaxdiagr.
Du kannst das selbst mit dem Railroad Diagram Generator ausprobieren.
Emailadresse:
User:
Domain:
Subdomains:
Topleveldomain:
Name:
Buchstabe:
Emailadresse ::= User '@' Domain
User ::= Name
Topleveldomain ::= 'b' 'b'
Name ::= Buchstabe+
Buchstabe ::= 'b'
Domain ::= Subdomains Topleveldomain
Subdomains ::= (Name '.')+
SyntaxdiagrammeTextuelle Darstellung
![Page 41: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/41.jpg)
41
Textuelle Darstellung von Syntaxdiagr.
Emailadresse ::= User '@' Domain
User ::= Name
Topleveldomain ::= 'b' 'b'
Name ::= Buchstabe+
Buchstabe ::= 'b'
Domain ::= Subdomains Topleveldomain
Subdomains ::= (Name '.')+
Textuelle Darstellung
Emailadresse -> User '@' Domain
User -> Name
Topleveldomain -> b b
Name -> Buchstabe Name -> Buchstabe Name
Buchstabe -> b
Domain -> Subdomains Topleveldomain
Subdomains -> Name . Subdomains -> Name . Subdomains
vereinfachte Darstellung
![Page 42: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/42.jpg)
42 Ableitung mit Ersetzungsregeln
Ableitung
Emailadresse -> User '@' Domain
User -> Name
Topleveldomain -> b b
Name -> Buchstabe Name -> Buchstabe Name
Buchstabe -> b
Domain -> Subdomains Topleveldomain
Subdomains -> Name . Subdomains -> Name . Subdomains
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 . b b
1
2
3
45
6
78
9
![Page 43: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/43.jpg)
43
Ersetzungsregeln in abgekürzter Form
Emailadresse -> User @ DomainUser -> NameDomain -> Subdomains TopleveldomainSubdomains -> Name .Subdomains -> Name . SubdomainsTopleveldomain -> b bName -> BuchstabeName -> Buchstabe NameBuchstabe -> b
E -> U@DU -> ND -> STS -> N.S -> N.ST -> bbN -> BN -> BNB -> b
Ersetzungsregeln Ersetzungsregeln in abgekürzter Form
![Page 44: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/44.jpg)
44 Ableitung mit Ersetzungsregeln
E -> # mit der Regel E -> U@D
U@D -> # mit der Regel U -> bU
bU@D -> # mit der Regel U -> bU
E -> U@DU -> ND -> STS -> N.S -> N.ST -> bbN -> BN -> BNB -> b
Ersetzungsregeln
Ableitung eines Wortes
Aufgabe: Entwickle mit Hilfe der Ersetzungsregeln (in abkürzender Schreibweise) eine Ableitung der Adresse [email protected]. In jedem Ersetzungsschritt darf nur eine Regel angewandt werden.
![Page 45: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/45.jpg)
45 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@DU -> ND -> STS -> N.S -> N.ST -> bbN -> BN -> BNB -> b
T = {b, @, .} Terminalsymbole
N = {E, U, D, S}
P = {E -> U@D, ..., B -> b}
S: E
Nichtterminalsymbole
Produktionen
Startsymbol
Grammatik
E -> bU@DU -> bUU -> λ D -> bSS -> bSS -> .bS.bS -> .bb
Grammatik
![Page 46: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/46.jpg)
46 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@DU -> ND -> STS -> N.S -> N.ST -> bbN -> BN -> BNB -> b
T = {b, @, .} Terminalsymbole
N = {E, U, D, S}
P = {E -> U@D, ...}
S: E
Nichtterminalsymbole
Produktionen
Startsymbol
Produktionen
E -> bU@DU -> bUU -> λ D -> bSS -> bSS -> .bS.bS -> .bb
Produktionen
![Page 47: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/47.jpg)
47 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 -> # mit der Regel E -> U@DU@D -> # mit der Regel U -> NN@D -> # mit der Regel N -> bNBN@D -> # mit der Regel N -> BBB@D -> # mit der Regel B -> bbB@D -> # mit der Regel B -> bbb@D -> # mit der Regel D -> STbb@ST -> # mit der Regel S -> [email protected] -> # mit der Regel S -> [email protected] -> # mit der Regel N -> [email protected] -> # mit der Regel B -> [email protected] -> # mit der Regel N -> [email protected] -> # mit der Regel N -> [email protected] -> # mit der Regel N -> [email protected] -> # mit der Regel B -> [email protected] -> # mit der Regel B -> [email protected] -> # mit der Regel B -> [email protected] -> # mit der Regel T -> [email protected]
Ableitung
E -> U@DU -> ND -> STS -> N.S -> N.ST -> bbN -> BN -> BNB -> b
Produktionen
![Page 48: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/48.jpg)
48
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. = T = {b, @, .}
L(G1) = {…, [email protected], …}
E -> bU@DU -> bUU -> λ D -> bSS -> bSS -> .bS.bS -> .bb
Grammatik G2
E -> U@DU -> ND -> STS -> N.S -> N.ST -> bbN -> BN -> BNB -> b
Grammatik G1
L(G2) = {…, [email protected], …}
Beachte, dass verschiedene Grammatiken dieselbe Sprache erzeugen können.
Menge der stark vereinfachten E-Mail-Adressen
Menge der stark vereinfachten E-Mail-Adressen
![Page 49: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/49.jpg)
49 Experimente mit JFlapEingabe der
Grammatik
Ableitung eines WortesAbleitung eines Wortes
![Page 50: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/50.jpg)
50 Ü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@DU -> ND -> STS -> N.S -> N.ST -> bbN -> BN -> BNB -> b
E -> bUU -> bUU -> @SS -> bBB -> bBB -> .SB -> .TT -> bZZ -> b
E -> bU@DU -> bUU -> λ D -> bSS -> bSS -> .bS.bS -> .bb
![Page 51: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/51.jpg)
51 Ü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.
![Page 52: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/52.jpg)
52 Übungen
AufgabeDie Stadt Karlsruhe vergibt ihre Autokennzeichen nach einem fest vorgegebenen Schema:
Beachte, dass die Nummer eines Autokennzeichens in Deutschland niemals mit der Ziffer 0beginnt. Somit ist beispielsweise eine Nummer "032" nicht möglicht!Im folgenden betrachten wir zunächst nur die Elemente 1 und 3 aller Autokennzeichen, die mit KA beginnen. Das abgebildete Kennzeichen hat beispielsweise die Form „KARG626“.
Bewohner des direkten Stadtgebietes bekommen ein Kennzeichen, wie es hier abgebildet ist. Es besteht aus dem Landessymbol (4.), der Zeichenfolge KA für die Stadt Karlsruhe (1.), genau zwei beliebigen Buchstaben und einer dreistellige Zahl als Registrierungsnummer (3.). Ferner sieht man noch die TÜV-Plakette (5.) und das Stadtsiegel (2.) mit dem jeweiligenLandeswappen des Bundeslandes.
(a) Entwickle eine Grammatik für die Kennzeichen der Stadt Karlsruhe.
![Page 53: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/53.jpg)
53 Übungen
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 2 betrachtest.
![Page 54: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/54.jpg)
54 Übungen
Aufgabe
(a)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.
![Page 55: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/55.jpg)
55 Kurzschreibweise für Produktionen
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.
floatnumber ::= pointfloat | exponentfloatpointfloat ::= [intpart] fraction | intpart "."exponentfloat ::= (intpart | pointfloat) exponentintpart ::= digit+fraction ::= "." digit+exponent ::= ("e" | "E") ["+" | "-"] digit+digit ::= "0"..."9"
Aufgabe:Probiere das selbst aus.
floatnumber:
exponent:
pointfloat:
exponentfloat:
intpart:
fraction:
digit:
![Page 56: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/56.jpg)
56 Kurzschreibweise für Produktionen
vorzeichen -> + | -
Alternative
vorzeichen -> +vorzeichen -> -
zahl = ziffer {ziffer}zahl -> zifferzahl -> ziffer zahl
zahl = ziffer ziffer*
zahl = ziffer+
zahlmitvorzeichen = [vorzeichen] zahlzahlmitvorzeichen -> zahlzahlmitvorzeichen -> + zahlzahlmitvorzeichen -> - zahl
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.
Iteration
optionale Teile
zahlmitvorzeichen = vorzeichen? zahl
![Page 57: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/57.jpg)
57 Grammatiken für Alltagssprachen
<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
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: …
![Page 58: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/58.jpg)
58 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> -><A><N><VP> ->die <N><VP> ->die Katze <VP> ->...die Katze fängt die Maus
<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
![Page 59: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/59.jpg)
59 Teil 4
Sprachbeschreibung mit regulären Ausdrücken
![Page 60: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/60.jpg)
60 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.
![Page 61: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/61.jpg)
61 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
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.
![Page 62: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/62.jpg)
62 Aufgabe
Entwickle einen regulären Ausdruck, mit dem man alle in der RFC 5322 vorkommenden E-Mail-Adressen als Suchergebnis geliefert bekommt.
![Page 63: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/63.jpg)
63 Fachkonzept - regulärer Ausdruck
Beispiele
regulärer Ausdruck
Ø
λ
0
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, ...}
![Page 64: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/64.jpg)
64 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.
λ ist ein regulärer Ausdruck.
Er beschreibt die leere Wortmenge {}.
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}.
![Page 65: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/65.jpg)
65 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.
![Page 66: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/66.jpg)
66 Ü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.
![Page 67: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/67.jpg)
67 Reguläre Ausdrücke in Python
import re
def suchen(regAusdruck, textdatei): f = open(textdatei, 'r') rfctext = f.read() for match in re.finditer(regAusdruck, rfctext): print(repr(match.group()))
# Test
suchen("([1-9ABC]\.)+", "rfc5322.txt")
>>> '1.''1.1.''1.2.''1.2.1.''1.2.2.''1.2.3.'...>>>
![Page 68: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/68.jpg)
68 Reguläre Ausdrücke in Python
import re
def suchen(regAusdruck, textdatei): f = open(textdatei, 'r') rfctext = f.read() return re.findall(regAusdruck, rfctext)
# Test
print(suchen("(?:[1-9ABC]\.)+", "rfc5322.txt"))
>>> >>> ['1.', '1.1.', '1.2.', '1.2.1.', '1.2.2.', '1.2.3.', '2.', '2.1.', '2.1.1.',...]>>>
![Page 69: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/69.jpg)
69 Übungen
Aufgaben:
Besorge dir die RFC 5322 und teste die oben gezeigten Suchoperationen. Benutze die folgenden regulären Ausdrücke als Suchmuster und lasse sie von Python beim Text RFC 5322 auswerten. Beschreibe jeweils, wonach gesucht wird.
0
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.
![Page 70: Formale Sprachen Klaus Becker 2013. 2 Formale Sprachen.](https://reader035.fdokument.com/reader035/viewer/2022081418/55204d7f49795902118d05b1/html5/thumbnails/70.jpg)
70 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