Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung...

81
Formale Sprachen Teil 1 Klaus Becker 2006

Transcript of Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung...

Page 1: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

Formale SprachenTeil 1

Klaus Becker

2006

Page 2: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

2

Sprachbeschreibung und -erkennung

Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken

Spracherkennung mit endlichen Automaten Anwendungen

Page 3: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

3 Teil 1

Einführung

Page 4: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

4 Email-Adresse

Vertippt! Sie wollen immer auf dem neuesten Stand sein und daher die entsprechende „Newsletter“ abonnieren. Gott sei Dank „bemerkt“ das System ihren Tippfehler.

Quelle: http://www.the-low-carb-way.com/coffee.php

Page 5: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

5 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 6: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

6 Aufbau einer Email-Adresse

Quelle: http://www.web-toolbox.net/webtoolbox/index.htm

2822

Page 7: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

7 Aufgabe

Internet Message Format

Status of this MemoThis document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

Copyright NoticeCopyright (C) The Internet Society (2001). All Rights Reserved.

AbstractThis standard specifies a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This standard supersedes the one specified in Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs.

...

Quelle: http://www.ietf.org/rfc/rfc2822.txt

Werfen Sie einen Blick in die RFC 2822. Versuchen Sie zu verstehen, wie die korrekte Form einer Email-Adresse in diesem Dokument beschrieben wird.

Page 8: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

8 Ein Blick in die RFC 2822

RFC 2822 Internet Message Format April 2001

3.4.1. Addr-spec specification

An addr-spec is a specific Internet identifier that contains a locally interpreted string followed by the at-sign character ("@", ASCII value 64) followed by an Internet domain. The locally interpreted string is either a quoted-string or a dot-atom. If the string can be represented as a dot-atom (that is, it contains no characters other than atext characters or "." surrounded by atext characters), then the dot-atom form SHOULD be used and the quoted-string form SHOULD NOT be used. Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.

addr-spec = local-part "@" domain

local-part = dot-atom / quoted-string / obs-local-part

domain = dot-atom / domain-literal / obs-domain

domain-literal = [CFWS] "[" *([FWS] dcontent) [FWS] "]" [CFWS]

dcontent = dtext / quoted-pair

dtext = NO-WS-CTL / ; Non white space controls

...

Quelle: http://www.ietf.org/rfc/rfc2822.txt Formale Präzisierung

Informelle Beschreibun

g

Page 9: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

9 Standardisierung in RFC´s

Die Requests for Comments (kurz RFC; zu deutsch Aufforderung zu Kommentaren) sind eine Reihe von technischen und organisatorischen Dokumenten des RFC-Editor zum Internet (ursprünglich ARPANET), die am 7. April 1969 begonnen wurden. Bei der ersten Veröffentlichung noch im ursprünglichen Wortsinne zur Diskussion gestellt, behalten RFC auch dann ihren Namen, wenn sie sich durch allgemeine Akzeptanz und Gebrauch zum Standard entwickelt haben.

RFC StatusJeder RFC besitzt einen Status. Hier ein paar Beispiele.• Informational – Hinweis, Idee, Nutzung.• Experimental – Zum Experimentieren• Proposed Standard – Vorschlag für Standard • Draft Standard – Begutachtung von min. 2 unabhäng. Implementierungen• Standard – Offizieller Standard STDn• Historic – Nicht mehr benutzt

Quelle: http://de.wikipedia.org/wiki/Request_for_Comments

Page 10: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

10 Zielsetzung und Vorgehensweise

Ziel ist es, Verfahren der Informatik zur präzisen Beschreibung sprachlicher Strukturen zu erarbeiten. Wir werden analog zur Darstellung in der RFC 2822 Präzisierungen für vereinfachte Email-Adressen entwickeln und die dabei benutzten Präzisierungsverfahren genauer studieren.

Page 11: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

11 Teil 2

Sprachbeschreibung mit Grammatiken

Page 12: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

12 Vereinfachte Email-Adressen

Informelle Beschreibung:

Eine vereinfachte Email-Adresse besteht aus einer Benutzerkennung, dem @-Zeichen und einer Domainangabe.

Die Benutzerkennung ist eine nicht-leere Folge von Kleinbuchstaben (hier nur a, b, c).

Die Domainangabe ist eine Folge von mindestens zwei Domainnamen, die mit einem Punkt getrennt werden. Ein Domainname ist eine nicht-leere Folge von Kleinbuchstaben (hier nur a, b, c).

Beispiele für korrekte Email-Adressen:

[email protected]@[email protected]

Beispiele für inkorrekte Email-Adressen:

abba@ca // Die Domainangabe besteht aus nur einem [email protected] // Hier fehlt die Benutzerkennung.baba@@bc.ba // Hier ist ein @-Zeichen zu viel.

Page 13: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

13 Die Sprache der Email-Adressen

Das Alphabet dieser Sprache ist die Menge der zur Bildung von Email-Adressen erlaubten Zeichen:

= {a, b, c, ., @}

Ein Wort über diesem Alphabet ist eine beliebige Folge von Zeichen aus dem Alphabet.

Beispiele für Wörter über = {a, b, c, ., @}: [email protected], @a.a, baba

Die Sprache der Email-Adressen ist die Menge der Wörter über dem Alphabet , die eine korrekte Email-Adresse darstellen.

Zur Sprache der Email-Adressen gehören u. a. folgende Wörter:

[email protected]@[email protected]

Nicht zur Sprache der Email-Adressen gehören u. a. folgende Wörter:

abba@ca // Die Domainangabe besteht aus nur einem [email protected] // Hier fehlt die Benutzerkennung.baba@@bc.ba // Hier ist ein @-Zeichen zu viel.

Die Menge der korrekt gebildeten Email-Adressen wird in der Informatik als (formale) Sprache aufgefasst.

Page 14: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

14 Formale Sprachen

Ein Alphabet ist eine nicht-leere, endliche (geordnete) Menge von Zeichen.

Alphabet für vereinfachte Email-Adressen: = {a, b, c, ., @}

Durch Hintereinanderreihung endlich vieler Zeichen aus einem vorgege-benen Alphabet erhält man ein Wort (über diesem Alphabet). Die Menge aller möglichen Wörter über einem Alphabet wird mit * bezeichnet. Zu dieser Menge gehört auch das sogenannte leere Wort ( bzw. ), das keine Zeichen enthält.

Wörter über : [email protected], [email protected], abab, @a@a@a, ..., , ...

Eine (formale) Sprache über dem Alphabet ist eine Teilmenge von *.Sprache der Email-Adressen: Menge der Wörter über , die korrekte Email-Adressen bilden. Zu dieser Sprache gehören: [email protected], [email protected], [email protected], ...Nicht zu dieser Sprache gehören: , abab, @a@a@a, ...

L = {..., [email protected], ..., [email protected], ..., [email protected], ...}

Page 15: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

15 Festlegung formaler Sprachen

Ziel ist es, die Regeln zur Bildung der Wörter einer Sprache zu präzisieren. Aus den Regeln soll man zweifelsfrei ableiten können, ob ein Wort über dem gegebenen Alphabet zur Sprache gehört oder nicht.Zu präzisierende Sprache der vereinfachten Email-Adressen:

Eine „korrekte“ vereinfachte Email-Adresse wird folgendermaßen gebildet:- Eine vereinfachte Email-Adresse besteht aus einer Benutzerkennung, dem @-Zeichen und einer Domainangabe.- Die Benutzerkennung ist eine nicht-leere Folge der Kleinbuchstaben a, b, c.- Die Domainangabe ist eine Folge von mindestens zwei Domainnamen, die mit einem Punkt getrennt werden. Ein Domainname ist eine nicht-leere Folge der Kleinbuchstaben a, b, c.

Page 16: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

16 Syntaxdiagramme

Buchstabe

a b c

NameBuchstabe

Informelle Beschreibung:

Eine vereinfachte Email-Adresse besteht aus einer Benutzerkennung, dem @-Zeichen und einer Domainangabe.

Die Benutzerkennung ist eine nicht-leere Folge von Kleinbuchstaben (hier nur a, b, c).

Die Domainangabe ist eine Folge von mindestens zwei Domainnamen, die mit einem Punkt getrennt werden. Ein Domainname ist eine nicht-leere Folge von Kleinbuchstaben (hier nur a, b, c).

Das obere Syntaxdiagramm legt fest, dass ein Buchstabe hier entweder ein a oder ein b oder ein c ist. Das untere Syntaxdiagramm beschreibt, wie ein Name aus Buchstaben zusammengesetzt wird. Jeder Weg durch diese Diagramme – beginnend im Diagramm „Name“ –ergibt einen korrekt gebildeten Namen. Bsp.: bc ; Weg: Name Buchstabe [ b ] Buchstabe [ c ]

Page 17: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

17 Syntaxdiagramme

Buchstabe

a b c

NameBuchstabe

Informelle Beschreibung:

Eine vereinfachte Email-Adresse besteht aus einer Benutzerkennung, dem @-Zeichen und einer Domainangabe.

Die Benutzerkennung ist eine nicht-leere Folge von Kleinbuchstaben (hier nur a, b, c).

Die Domainangabe ist eine Folge von mindestens zwei Domainnamen, die mit einem Punkt getrennt werden. Ein Domainname ist eine nicht-leere Folge von Kleinbuchstaben (hier nur a, b, c).

Wenn man den Pfeilen im Syntaxdiagramm folgt, so erhält man einen (dem Diagrammnamen entsprechenden) syntaktisch korrekten Ausdruck. Syntaxdiagramme können wie im Beispiel oben geschachtelt werden. Trifft man auf ein Rechteck, so muss man in das zugehörige Syntaxdiagramm springen. Trifft man auf ein Oval, so wird der zugehörige Inhalt in den zu bildenden Ausdruck übernommen.

Page 18: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

18 Aufgabe

Entwickeln Sie analog Syntaxdiagramme für eine Domainangabe und für eine Email-Adresse. Benutzen Sie dabei die bereits angegebenen Syntaxdiagramme.

DomainAngabe

Die Domainangabe ist eine Folge von mindestens zwei Domainnamen, die mit einem Punkt getrennt werden. Ein Domainname ist eine nicht-leere Folge von Kleinbuchstaben (hier nur a, b, c).

EmailAdresse

Eine vereinfachte Email-Adresse besteht aus einer Benutzerkennung, dem @-Zeichen und einer Domainangabe. Die Benutzerkennung ist eine nicht-leere Folge von Kleinbuchstaben (hier nur a, b, c).

Page 19: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

19 Lösung

DomainAngabe

Die Domainangabe ist eine Folge von mindestens zwei Domainnamen, die mit einem Punkt getrennt werden. Ein Domainname ist eine nicht-leere Folge von Kleinbuchstaben (hier nur a, b, c).

NameName .

EmailAdresse

Eine vereinfachte Email-Adresse besteht aus einer Benutzerkennung, dem @-Zeichen und einer Domainangabe. Die Benutzerkennung ist eine nicht-leere Folge von Kleinbuchstaben (hier nur a, b, c).

DomainAngabe

Name @

Page 20: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

20 Aufgabe

DomainAngabe NameName .

EmailAdresseDomainAnga

beName @

Buchstabe

a b c

NameBuchstabe

Beispiele für korrekte Email-Adressen: [email protected], [email protected], [email protected]

Beispiele für inkorrekte Email-Adressen: abba@ca, @a.a, baba@@bc.ba

Überprüfen Sie anhand der angegeben Beispiele, ob die entwickelten Syntaxdiagramme tatsächlich die Bildung von vereinfachten Email-Adressen korrekt beschreiben.

Page 21: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

21

Die Grammatik einer formalen Sprachen

Syntaxdiagramme legen die Regeln fest, mit denen die Wörter einer Sprache gebildet werden. Sie können daher als eine Art Grammatik der Sprache aufgefasst werden. Ziel ist es im Folgenden, den Grammatikbegriff der Informatik zu präzisieren und verschiedene Darstellungsformen aufzuzeigen.

DomainAngabe NameName .

EmailAdresseDomainAnga

beName @

Buchstabe

a b c

NameBuchstabe

Page 22: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

22

Bestandteile von Syntaxdiagrammen

DomainAngabe NameName .

EmailAdresseDomainAnga

beName @

Buchstabe

a b c

NameBuchstabe

Terminalsymbol Nichtterminalsymbol

Terminalsymbole sind lexikalische Einheiten, die zur Bildung von Email-Adressen benötigt werden. Sie gehören also zum Alphabet der Sprache.Nichtterminalsymbole sind zusätzliche Platzhalter, die zur Beschreibung der zulässigen Email-Adressen benutzt werden.

Page 23: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

23 Übersetzung in Produktionsregeln

DomainAngabe NameName .

EmailAdresseDomainAnga

beName @

Buchstabe

a b c

NameBuchstabe

B a

B b

B c

N B

N BN

H .N

H .NH

D NH

E N@D

Produktionsregeln

Page 24: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

24 Ableitung eines Worts

B a

B b

B c

N B

N BN

H .N

H .NH

D NH

E N@D

E N@D B@D c@D c@NH c@BH c@aH [email protected] [email protected] [email protected]

DomainAngabe NameName .

EmailAdresseDomainAnga

beName @

Buchstabe

a b c

NameBuchstabe

Eine Ableitung eines Worts mit den Produktionsregeln entspricht einem Weg durch die Syntaxdiagramme.

Ableitung

Page 25: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

25 Grammatikbegriff der Informatik

Eine Grammatik besteht aus den folgenden Komponenten: - einer endlichen nichtleeren Menge T von Terminalsymbolen,- einer endlichen nichtleeren Menge NT von Nichtterminalsymbolen,- einer endlichen Menge P von Produktionen (Regeln) und- einem Startsymbol S N. Kurz: G = (T, N, P, S)Terminalsymbole: T = {a, b, c, ., @} // Alphabet d. Sprache

Nichtterminalsymbole: NT = {E, D, H, N, B} // zusätzliche Platzhalter

B a

B b

B c

N B

N BN

H .N

H .NH

D NH

E N@D

Produktionen: P = {B a, B b, ..., E N@D} // eigentliche Regeln

Startsymbol: E // startet Ableitung

Eine Produktion (Regel) hat immer die Gestalt u v. Die linke Seite u und die rechte Seite v sind dabei Wörter über dem Alphabet V = T N.

Page 26: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

26 Worterzeugung als Ableitung

Terminalsymbole: T = {a, b, c, ., @} // Alphabet d. Sprache

Nichtterminalsymbole: NT = {E, D, H, N, B} // zusätzliche Platzhalter

B a

B b

B c

N B

N BN

H .N

H .NH

D NH

E N@D

Produktionen: P = {B a, B b, ..., E N@D} // eigentliche Regeln

Startsymbol: E // startet Ableitung

Eine Ableitung beginnt immer mit dem Startsymbol.Sie endet, wenn alle Nichtterminalsymbole ersetzt sind.Ein Ableitungsschritt besteht darin, dass ein Teilwort innerhalb eines Worts mit Hilfe einer passenden Produktion zu ersetzen. Produktionen sind demnach Ersetzungsregeln.Beachte: Es gibt oft verschiedene Ableitungen eines Wortes.E N@D B@D c@D c@NH c@BH c@aH [email protected] [email protected] [email protected]

E N@D N@NH [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]

Page 27: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

27 Sprache zur 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.

Terminalsymbole: T = {a, b, c, ., @} // Alphabet d. Sprache

Nichtterminalsymbole: T = {E, D, H, N, B} // zusätzliche Platzhalter

B a

B b

B c

N B

N BN

H .N

H .NH

D NH

E N@D

Produktionen: P = {B a, B b, ..., E N@D} // eigentliche Regeln

Startsymbol: E // startet Ableitung

L(G) = {..., [email protected], ..., [email protected], ..., [email protected], ..., [email protected], ...}

Page 28: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

28 Backus-Naur-Schreibweise

B a

B b

B c

N B

N BN

H .N

H .NH

D NH

E N@D

Oft ist es zweckmäßig, die sog. Backus-Naur-Form als Kurzschreibweise für Produktionen zu benutzen. Statt Backus-Naur-Form wird auch die Abkürzung BNF verwendet.

B a | b | c

N B | BN

H .N | .NH

D NH

E N@D

Grammatik in BNF

Grammatik in

Normalform

Page 29: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

29 Ein Vergleich mit der RFC

Die Struktur von Email-Adressen wird in der RFC 2822 in Backus-Naur-Form spezifiziert. Diese Art der Spezifikation findet man in sehr vielen professionell erstellten Sprachbeschreibungen.

E N@D

N B | BN

D NH

H .N | .NH

B a | b | c

Vereinfachte Email-

Adressen in BNF

RFC 2822 Internet Message Format April 2001

3.4.1. Addr-spec specification

addr-spec = local-part "@" domain

local-part = dot-atom / quoted-string / obs-local-part

domain = dot-atom / domain-literal / obs-domain

domain-literal = [CFWS] "[" *([FWS] dcontent) [FWS] "]" ...

dcontent = dtext / quoted-pair

dtext = NO-WS-CTL / ; Non white space controls

... Email-Adressen in

BNF

Page 30: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

30 JFlap

Zum Experimentieren mit Grammatiken benutzen wir im Folgenden das Programm „JFlap“ als Werkzeug.

JFlap erhält man hier: http://www.jflap.org

Page 31: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

31 Aufgabe

Starten Sie zunächst den Grammatik-Teil von JFlap und geben Sie die entwickelte Grammatik für vereinfachte Email-Adressen ein. Beachten Sie, dass das Startsymbol in der ersten Produktion auf der linken Seite stehen muss.

JFlap erhält man hier: http://www.jflap.org

Page 32: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

32 Aufgabe

Testen Sie die eingegebene Grammatik. Rufen Sie hierzu die Menüpunkte [Input] [Brute Force Parse] auf und geben Sie die zu untersuchende Zeichenkette ein (Achtung: Zeichenkette nicht zu lang wählen).Testen Sie auch Zeichenketten, die keine korrekte vereinfachte Email-Adresse darstellen sollen.

Page 33: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

33 Aufgabe

JFlap zeigt Ableitungen auch in einer Baumdarstellung an. Wie ist ein solches Baumdiagramm zu lesen?

Page 34: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

34 Aufgabe

Testen Sie die abgebildete „alternative Grammatik“ für vereinfachte Email-Adressen. Vergleichen Sie diese alternative Grammatik mit der bisher betrachteten.

A aBA bBA cBB aBB bBB cBB @CC aDC bDC cDD aDD bDD cDD .EE aFE bFE cFF aFF bFF cFF .EF

Was fällt auf, wenn Sie längere Wörter unter-suchen? Haben Sie eine Erklärung hierfür?

Page 35: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

35 Aufgabe

Versuchen Sie, die korrekte Darstellung von Zahlen (natürliche Zahlen wie 13 / ganze Zahlen wie –4 / Dezimalzahlen wie 3.14 / Dezimalzahlen mit Exponentenschreibweise wie -0.12 E-2) exakt zu beschreiben. Verwenden Sie hierzu Syntaxdiagramme / eine Grammatik. Testen Sie die Ergebnisse mit JFlap.

Page 36: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

36 Aufgabe

Beschreiben Sie die folgenden „Sprachen“ mit Hilfe einer Grammatik:

- Die Sprache der korrekten Zeitangaben wie z. B. 12:15

- Die Sprache der Klassenbezeichner: 5a, 5b, 6a, 6b, ..., 10a, 10b

Page 37: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

37 Aufgabe

Als der Münchner Dienstmann Alois in den Himmel kam, überreichte ihm Petrus eine Harfe und wies ihn in die himmlische Zungensprache "Frohlocken" ein. Ihre Sätze werden entsprechend der der folgenden Syntaxdiagramme gebildet.

.

ha

frohlocken hosianna singen

.

hosianna singen

l le

lu u ja

Quelle: Bundeswettbewerb Informatik 1990; siehe auch: Gasper, Leiß, Spengler, Stimm S. 177

Bilden Sie verschiedene Wörter, die zur himmlischen Zungensprache gehören.

Beschreiben Sie diese Sprache mit Hilfe einer Grammatik.

Page 38: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

38 Aufgabe

Informieren Sie sich bei Wikipedia über die erweiterte Backus-Naur-Form (EBNF). Analysieren Sie die dort abgebildete Grammatik für eine einfache Programmiersprache und bilden Sie einige Wörter dieser Sprache. Beschreiben Sie diese Programmiersprache auch mit Hilfe von Syntaxdiagrammen.

Quelle: http://de.wikipedia.org/wiki/Erweiterte_Backus-Naur-Form

(* ein einfaches Beispiel in EBNF - Wikipedia *)

Programm = 'PROGRAM' Bezeichner 'BEGIN' { Zuweisung ";" } 'END' "."

Bezeichner = Buchstabe { ( Buchstabe | Ziffer ) }

Zahl = [ "-" ] Ziffer { Ziffer }

String = '"' { AlleZeichen - '"'} '"'

Zuweisung = Bezeichner ":=" ( Zahl | Bezeichner | String )

Buchstabe = "A" | "B" | "C" | ... | "X" | "Y" | "Z" ;

Ziffer = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

AlleZeichen = ? alle sichtbaren Zeichen ?

Page 39: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

39 Teil 3

Spracherkennung mit Automaten

Page 40: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

40 Spracherkennungssysteme

Ein Spracherkennungssystem soll bei Eingabe eines beliebigen Wortes entscheiden, ob dieses Wort zur vorgegebenen Sprache gehört oder nicht.

Wort ja / nein

Page 41: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

41 Erzeugende Systeme

Bisher haben wir zur Spracherkennung Systeme benutzt, die systematisch Ableitungen mit Hilfe von Grammatikregeln erzeugen und überprüfen, ob das gegebene Wort auf diese Weise erhalten werden kann.

E N@D

D NH

H .N

H .NH

N B

N BN

B a

B b

B c

E N@D B@D a@D // Sackgasse b@D // Sackgasse c@D c@NH c@BH c@aH [email protected] // Sackgasse [email protected] // Sackgasse c@bH // Sackgasse c@cH // Sackgasse c@BNH ...

[email protected]

ja

Page 42: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

42 Aufgabe

Laden Sie die Datei „EmailDA1.jff“ in JFlap und rufen Sie die Menüpunkte [Input] [Step by State] auf. Geben Sie einige korrekt bzw. nicht korrekt gebildete vereinfachte Email-Adressen ein und lassen Sie das System diese Wörter verarbeiten. Wie stellt das System die Korrektheit fest?

Page 43: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

43 Analysierende Systeme

cba

q0 q1@

q2

cba

cba

q3

cba

.q4

cba

q5

cba

.

q6

@.

. @.

@

.@

@

@.cba

Das System analysiert das gegebene Wort Schritt für Schritt und überprüft, ob die Verarbeitung des Worts vom Anfangszustand i. e. Endzustand führt.

[email protected] :Eingabe Ausgabe: ja

Endzustand

Anfangszustand

Page 44: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

44 Endlicher Automat als Akzeptor

Ein erkennender Automat / Akzeptor besteht aus den folgenden Komponenten: - einer endlichen Menge Z von Zuständen,- einem Anfangszustand za Z,- einer Menge Ze Z von Endzuständen,- einer endlichen Menge E von Eingabezeichen und- einer Überführungsfunktion : Z x E Z. Kurz: A = (Z, za, Ze, E, )

Page 45: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

45 Endlicher Automat als Akzeptor

Zustände: Z = {q0, q1, q2, q3, q4, q5, q6}

Anfangszustand: q0

Endzustände: {q5}

Eingabezeichen: E = {a, b, c, . @}

Überführungsfunktion : Z x E Z: (q0, a) q1; : (q0, b) q1; : (q0, c) q1; : (q0, .) q6; : (q0, @) q6; : (q1, a) q1; : (q1, b) q1; : (q1, c) q1; : (q1, .) q6; : (q1, @) q2; ...

Page 46: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

46

Unter der Sprache L(A) eines Akzeptors A = (Z, za, Ze, E, A, ) versteht man die Menge aller Wörter über dem Alphabet E, die den Automaten vom Anfangszustand za in einen Endzustand aus Ze überführen.

Die Sprache eines Akzeptors

Eingabe: [email protected]

Ausgabe: ja

Page 47: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

47 Aufgabe

Entwickeln Sie einen Akzeptor für Bitfolgen:

- mit gerader Anzahl von Nullen : 0010 0001- die mindestens zwei aufeinander folgende Einsen oder Nullen enthalten, wie z. B. : 10110101

Page 48: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

48 Aufgabe

Entwickeln Sie Akzeptoren für verschiedene Zahldarstellungen:

- ganze Zahlen : -3, -2, -1, 0, 1, +1, 2, +2, ...- Dezimalzahlen : 3.14, ... - Dezimalzahlen mit Exponentenschreibweise: -0.12 E-2, ...

Page 49: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

49 Aufgabe

In den Vereinigten Staaten gibt es die League Against Sexist Speach (LASS), die sich einen Akzeptor wünscht, der erkennt, ob in einem Wort die Zeichenfolge „man“ vorkommt.

Quelle: R. Baumann, Informatik für die SII, Band 2, S. 216.

Page 50: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

50 Aufgabe

Entwickeln Sie einen Akzeptor für die himmlische Zungensprache.

.

ha

frohlocken hosianna singen

.

hosianna singen

l le

lu u ja

Page 51: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

51 Teil 4

Exkurs: Sprachbeschreibung mit regulären Ausdrücke

Page 52: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

52 Reguläre Ausdrücke

Reguläre Ausdrücke sind ein weiteres in der Informatik gebräuchliches Hilfsmittel zur Beschreibung von Sprachen.

Quelle: http://www.html-world.de/artikel/art_j14.php

Artikel: Kluge E-Mail Adressen Validation

von Jan Winkler

...

Für das Prüfen mit Regulären Ausdrücken werden wir den folgenden Ausdruck verwenden:^([a-zA-Z0-9\\-\\.\\_]+)(\\@)([a-zA-Z0-9\\-\\.]+)(\\.)([a-zA-Z]{2,4})$.Im Einzelnen beschreibt dieser den Benutzernamen, ein @, die Domain, einen Punkt und 2 (z.B. de) bis 4 (z.B. info) Zeichen für die TLD. Bei der zweiten Variante werden wir die zerteilten Stücke der Adresse auf ihre Länge prüfen:

...

Page 53: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

53 Beispiele für reguläre Ausdrücke

Beispiele für reguläre Ausdrücke:

ab*a// Menge der Wörter über {a, b}, die mit a beginnen, dann eine beliebige Anzahl (evtl. auch keine) von b´s enthalten und mit a enden. Bsp.: aa, aba, abba, abbba, ...

b*ba // Menge der Wörter über {a, b}, die mit einer beliebige Anzahl (evtl. keine) von b´s beginnen und dann ein b gefolgt von einem a enthalten. Bsp.: ba, bba, bbba, ...

a(a+b)b// Menge der Wörter über {a, b}, die mit a beginnen, dann ein a oder ein b enthalten und mit b enden. Bsp.: aab, aba

a(a+b)*b// Menge der Wörter über {a, b}, die mit a beginnen, dann eine beliebige Anzahl (evtl. keine) a´s oder b´s enthalten und mit b enden. Bsp.: ab, aab, abb, aaab, aabb, abab, abbb, ...

(aa*b)*// Menge der Wörter über {a, b}, die beliebig oft (evtl. gar nicht) die Zeichenfolge „a gefolgt von beliebig vielen a´s gefolgt von einem b“ wiederholen. Bsp.: , ab, aaab, aabaaab, ...

b*(ab*ab*ab*)*// Menge der Wörter über {a, b}, die eine durch 3 teilbare Anzahl von a´s enthalten. Bsp.: bbababbba, aababbbbababbba, ...

Page 54: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

54 Verknüpfung von Wortmengen

X und Y seien Wortmengen über dem Alphabet .

XY = {xy | xX, yY} ist die Menge aller Wörter, die sich ergeben, wenn man an ein beliebiges Wort aus X ein beliebiges Wort aus Y hängt.

X0 = {}; X1 = X; X2 = XX; X3 = X2X = XXX; ...

X* = X0 X1 X2 X3 … ist die Menge aller Wörter, die sich ergeben, wenn man beliebig viele (auch keine) Wörter aus X aneinanderhängt.

X+ = X1 X2 X3 X4 … ist die Menge aller Wörter, die sich ergeben, wenn man beliebig viele Wörter, aber mindestens ein Wort aus X aneinanderhängt.Beispiele: Sei X = {a, b}; Y = {c}.

XY = {ac, bc}

X0 = {}; X1 = X = {a, b}; X2 = XX = {aa, ab, ba, bb}

X* = X0 X1 X2 X3 … = {, a, b, aa, ab, ba, bb, ...}

X+ = X1 X2 X3 X4 … = {a, b, aa, ab, ba, bb, ...}

Page 55: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

55 Regeln für reguläre Ausdrücke

Gebeben sei das Alphabet .

ist ein regulärer Ausdruck, der die leere Menge {} bezeichnet.

ist ein regulärer Ausdruck, der die Menge {} mit dem leeren Wort bezeichnet.

Für jedes a ist a ein regulärer Ausdruck, der die Menge {a} bezeichnet.

Sind x und y reguläre Ausdrücke, die die Mengen X und Y bezeichnen, so ist auch (x+y) ein regulärer Ausdruck, der die Menge XY bezeichnet, xy ein regulärer Ausdruck, der die Menge XY bezeichnet, x* ein regulärer Ausdruck, der die Menge X* bezeichnet, x+ ein regulärer Ausdruck, der die Menge X+ bezeichnet,Beispiel: Sei = {a, b, c}.

(a+b)* = ({a}{b})0 ({a}{b})1 ({a}{b})2 …

= {, a, b, aa, ab, ba, ...}

Page 56: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

56 Aufgabe

Beschreiben Sie die folgenden mit Hilfe regulärer Ausdrücke festgelegten Wortmengen:

(0+(1+2+3+4+5+6+7+8+9)(0+1+2+3+4+5+6+7+8+9)*)

(abc+a*)

(a*b*+c)

(aa+b)*(a+bb)*

Page 57: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

57 Aufgabe

Beschreiben Sie die folgenden Wortmengen mit Hilfe regulärer Ausdrücke:

Die Menge der Wörter über {a, b}, die mit a beginnen und mit b enden.

Die Menge aller Zeichenketten über dem Alphabet {0, 1}, die mit 00 enden.

Die Menge aller Zeichenketten über dem Alphabet {a, b}, die nach jedem a genau zwei b´s haben.

Die Menge folgender Klassenbezeichner: {5a, 5b, 5c, ..., 10a, 10b, 10c}.

Die Menge zulässiger Zeitangaben; z. B. 12:00

Page 58: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

58 Aufgabe

Beachten Sie, dass es verschiedene Darstellungen regulärer Ausdrücke benutzt werden. Versuchen Sie, den unten dargestellten Ausdruck zu verstehen.

Quelle: http://www.html-world.de/artikel/art_j14.php

Artikel: Kluge E-Mail Adressen Validation

von Jan Winkler

...

Für das Prüfen mit Regulären Ausdrücken werden wir den folgenden Ausdruck verwenden:^([a-zA-Z0-9\\-\\.\\_]+)(\\@)([a-zA-Z0-9\\-\\.]+)(\\.)([a-zA-Z]{2,4})$.Im Einzelnen beschreibt dieser den Benutzernamen, ein @, die Domain, einen Punkt und 2 (z.B. de) bis 4 (z.B. info) Zeichen für die TLD. Bei der zweiten Variante werden wir die zerteilten Stücke der Adresse auf ihre Länge prüfen:

...

Page 59: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

59 Aufgabe

Beschreiben Sie die Menge der vereinfachten Email-Adressen mit Hilfe eines regulären Ausdrucks. Die Syntaxdiagramme können Ihnen bei der Konstruktion des Ausdrucks weiterhelfen.

DomainAngabe NameName .

EmailAdresseDomainAnga

beName @

Buchstabe

a b c

NameBuchstabe

Page 60: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

60 Lösung

(a+b+c)

DomainAngabe NameName .

EmailAdresseDomainAnga

beName @

Buchstabe

a b c

NameBuchstabe

(a+b+c)(a+b+c)*.(a+b+c)(a+b+c)*(.(a+b+c)(a+b+c)*)*

(a+b+c)(a+b+c)*

(a+b+c)(a+b+c)*@(a+b+c)(a+b+c)*.(a+b+c)(a+b+c)*(.(a+b+c)(a+b+c)*)*

Page 61: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

61 Teil 5

Anwendungen: Spracherkennung mit einem Parser-Generator

Page 62: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

62 Zielsetzung

Bisher wurden Verfahren zur Beschreibung und Erkennung von formalen Sprachen anhand einfacher Beispielsprachen entwickelt. Ziel ist es jetzt, formale Sprachen zu betrachten, deren Nähe zu praxisrelevanten Sprachen offensichtlich ist. Um mit solchen – auch etwas umfangreicheren – Sprachen experimentell umgehen zu können, wird im Folgenden ein geeignetes Werkzeug (ein sog. Parser-Generator) eingesetzt. Anders als JFlap, das mehr für das experimentelle Erlernen von Konzepten gedacht ist, ist der Parser-Generator ein auch in der Praxis einsetzbares Werkzeug. Als Beispielsprachen betrachten wir

- ein vereinfachtes HTML

- ein vereinfachtes XML

- eine Sprache für mathematische Rechenausdrücke

- eine einfache Programmiersprache zur Steuerung eines Roboters

Page 63: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

63 Vereinfachtes HTML

Informelle Beschreibung:

Ein vereinfachtes HTML-Dokument besteht aus einem Kopf mit Titelangabe und einem Rumpf mit Abschnitten. Es sind keine Umlaute erlaubt. Es sollen auch keine Tabellen, Links, Bilder etc. integriert werden.

Der unten abgebildete HTML-Quelltext ist in diesem Sinne ein vereinfachtes HTML-Dokument.

<html><head><title>Weiterbildungskurs Informatik</title> </head><body><p>Der Weiterbildungslehrgang Informatik in Rheinland-Pfalz ist ein Ersatzstudium der Informatik für Lehrerinnen und Lehrer, die bereits eine Lehrbefaehigung in einem naturwissenschaftlichen Fach haben.</p><p>Der Lehrgang besteht aus sechs Wochenkursen, in denen jeweils typische Themen der Informatik bearbeitet werden.</p><p>Der Lehrgang schliesst dann mit einer Pruefung zum Erwerb der Unterrichtserlaubnis fuer das Grundfach Informatik ab.</p></body></html>

Page 64: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

64 Lexik / Syntax

<html><head><title>Weiterbildungskurs Informatik</title> </head><body><p>Der Weiterbildungslehrgang ...</p><p>Der Lehrgang besteht aus ...</p><p>Der Lehrgang schliesst dann ...</p></body></html>

Formale Sprachen, die in der Praxis vorkommen, sind oft zweistufig aufgebaut. Sie basieren auf bestimmten lexikalischen Einheiten, die vorgegeben sind bzw. nach vorgegeben Regeln gebildet werden können. Aus diesen lexikalischen Einheiten werden dann die „Wörter“ der Sprache gemäß einer vorgegebenen Grammatik gebildet. Diese Grammatik beschreibt die Syntax der Sprache.

Lexikalische Einheiten:- Tags wie <html>- Zeichenketten (die üblicherweise einer natürlichen Sprache entstammen)

Syntaxregeln:- Das gesamte Dokument wird mit den Tags <html> ... </html> eingefasst.- ...

Page 65: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

65

Das Werkzeug „GOLD Parser Builder“

Der Parser-Generator „GOLD Parser Builder“ unterstützt die zweistufige Beschreibung einer formalen Sprache. Wir zeigen seine Benutzung am Beispiel des vereinfachten HTML (siehe oben).

Siehe: www.devincook.com/goldparser

Page 66: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

66 Lexikalische Einheiten

Die lexikalischen Einheiten werden beim „GOLD Parser Builder“ mit Hilfe von regulären Ausdrücken festgelegt. Diese bilden dann die Terminalsymbole bei der Festlegung der Grammatik.

! Terminalsymbole

Ahtml = '<'html'>'Ehtml = '<''/'html '>' Ahead = '<'head '>' Ehead = '<''/'head '>' Atitle = '<'title '>' Etitle = '<''/'title '>' Abody = '<'body '>' Ebody = '<''/'body '>' Ap = '<'p '>' Ep = '<''/'p'>‚Wort = {Alphanumeric}+Satzzeichen = '.' | '!' | '?' | ',' | ';' | ':' | '-'

MyHtml.grm

Page 67: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

67 Syntaktische Regeln

Die Syntax der Sprache wird mit Hilfe einer Grammatik in BNF-Notation beschrieben. Beachte: Nichtterminalsymbole werden im GOLD Parser Builder mit spitzen Klammern dargestellt – also zufälligerweise genauso wie HTML-Tags.

"Start Symbol" = <HtmlDokument>

! Produktionen

<HtmlDokument> ::= Ahtml <Kopf> <Rumpf> Ehtml<Kopf> ::= Ahead <Titel> Ehead<Titel> ::= Atitle <Text> Etitle<Rumpf> ::= Abody <Absaetze> Ebody<Absaetze> ::= <Absatz><Absaetze> ::= <Absatz> <Absaetze><Absatz> ::= Ap <Text> Ep<Text> ::= <Texteinheit><Text> ::= <Texteinheit> <Text><Texteinheit> ::= Wort | Satzzeichen MyHtml.gr

m

Page 68: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

68 Aufgabe: HTML

Testen Sie das Werkzeug „GOLD Parser Builder“. Laden Sie die Grammatik „MyHtml1.grm“, lassen Sie das Werkzeug den entsprechenden Parser generieren und testen sie ihn.

Gehen Sie in einem zweiten Schritt hin und erweitern Sie den Sprachumfang um ...

Einfach: Überschriften: <h1>...</h1>

Schwieriger: vereinfachte Tabellen

Schwieriger: vereinfachte Verweise: <a href="IFB">IFB</a>

...

Page 69: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

69 Aufgabe: HTML

Machen Sie sich anhand der Grafik klar, dass man das gesamte vereinfachte HTML mit einem endlichen Automaten erkennen kann.

<html>

<head>

<title>

...Text..

.

</title>

</head>

<body>

<p>

...Text..

.

</p>

</body>

</html>

<p>

Page 70: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

70 Aufgabe: Parser Builder

Schauen Sie ein wenig „hinter die Kulissen“ des Werkzeugs „GOLD Parser Builder“. ...

Machen Sie sich klar, dass der Parser Builder einen endlichen Automaten (DFA) zur lexikalischen Analyse benutzt und einen weiteren komplizierteren Automat zur syntaktischen Analyse (siehe LALR States).

Page 71: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

71 Vereinfachte Rechenausdrücke

Informelle Beschreibung:

Wir betrachten nur Rechenausdrücke, die vollständig geklammert sind. Jede Rechenoperation muss umklammert werden. – wie z. B. bei (12+3). Eine Rechenoperation bezieht sich auf Zahlen oder Rechenterme – wie z. B. bei ((13 – 7) * 4). Rechenausdrücke können beliebig komplex verschachtelt werden – wie z. B. bei (((45 – 6) * (67 / 5)) – (6 * 5)). Die unten abgebildeten Ausdrücke sind in diesem Sinne vereinfachte Rechenausdrücke.(12 + 3)

((13 - 7) * 4)

(((45 – 6) * (67 / 5)) – (6 * 5))

...

Page 72: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

72 Aufgabe: Rechenausdrücke

Entwickeln Sie eine Grammatik für die Sprache der vereinfachten Rechenausdrücke und testen Sie sie mit dem Werkzeug „GOLD Parser Builder“. Zur Festlegung der Terminalsymbole können Sie die unten gezeigten Vereinbarungen benutzen.

! Terminalsymbole

Zahl = {Digit}+ ! Achtung: Wir erlauben so auch Zahlen mit führenden Nullen, z. B. 007.Kauf = '('Kzu = ') 'Plus = '+'Minus = '-'Mal = '*'Durch = '/'

Page 73: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

73 Aufgabe: Rechenausdrücke

Erweitern Sie die Grammatik so, dass auch Variablen in den Rechenausdrücken vorkommen können.

Page 74: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

74 Aufgabe: Rechenausdrücke

Kann man die Sprache der vereinfachten Rechenausdrücke mit einem endlichen Automaten erkennen?

(12 + 3)

((13 - 7) * 4)

(((45 – 6) * (67 / 5)) – (6 * 5))

...

Page 75: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

75 Programmiersprache für Karol

Ziel ist es, für eine einfache Programmiersprache einen Interpreter und einen Compiler zu entwickeln. Die hier betrachtete Programmiersprache orientiert sich an der Sprache zur Steuerung des Roboters Karol.

hinlegenschrittwiederhole solange NichtIstZiegel wiederhole solange NichtIstWand schritt *wiederhole linksDrehen*wiederhole

1

Page 76: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

76 Die Programmiersprache

Zur Vereinfachung der Darstellung verwenden wir abkürzende Bezeichner für die Anweisungen der Programmiersprache.

hinlegenschrittwiederhole solange NichtIstZiegel wiederhole solange NichtIstWand schritt *wiederhole linksDrehen*wiederhole

hswh nz wh nw s *wh l*wh

Page 77: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

77 Die Programmiersprache MyKa

Elementare Anweisungen:h „Ziegel hinlegen“a „Ziegel aufheben“s „Schritt vorwärts“l „links drehen“r „rechts drehen“

hswh nz wh nw s *wh l*whElementare Bedingungen:

nz „nicht auf Ziegel“nw „nicht vor Wand“

Kontrollanweisung:wh ... ... „wiederhole solange ...“ *wh

Ein MyKa-Programm setzt sich – wie im Beispiel gezeigt – aus elementaren und Kontrollanweisungen zusammen. Bei der Darstellung von MyKa-Programmen dürfen mehrere Anweisungen in eine Zeile geschrieben werden, ...

Page 78: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

78 Aufgabe: MyKa

Entwickeln Sie eine Grammatik für die Programmiersprache „MyKa“ und testen Sie diese Grammatik mit Hilfe des GOLD Parser Builder.

Page 79: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

79 Vereinfachtes XML

Informelle Beschreibung:

Ein vereinfachtes XML-Dokument besteht aus ineinandergeschachtelten Elementen. Ein Element besteht aus einem Anfangstag, einem Bezeichner oder einer Elementliste und einem passenden Endtag. Ein Bezeichner besteht aus beliebigen alphanumerischen Zeichen.

Der unten abgebildete XML-Quelltext ist in diesem Sinne ein vereinfachtes XML-Dokument.<structure>

<type>grammar</type><production>

<left>S</left><right>a</right>

</production><production>

<left>S</left><right>A</right>

</production><production>

<left>A</left><right>a</right>

</production></structure>

Page 80: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

80 Aufgabe: XML

Testen Sie folgenden Grammatik-Vorschlag für die Sprache der vereinfachten XML-Ausdrücke. Hier stimmt etwas nicht. Finden Sie den Fehler.

Sehr schwierig: Geben Sie eine korrekte Grammatik an.

! Terminalsymbole

ATag = '<' {Letter}+ '>'ETag = '<' '/' {Letter}+ '>‚Text = {Alphanumeric}+

"Start Symbol" = <Element>

! Produktionen

<Element> ::= ATag Text Etag<ElementListe> ::= <Element> <ElementListe> ::= <Element> <ElementListe><Element> ::= ATag <ElementListe> ETag

Page 81: Formale Sprachen Teil 1 Klaus Becker 2006. 2 Sprachbeschreibung und -erkennung Sprachbeschreibung mit Grammatiken, Syntaxdiagrammen, regulären Ausdrücken.

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

...