79
Formale Sprachen und Formale Sprachen und Automaten Automaten Klaus Becker 2004

Formale Sprachen und Automaten Klaus Becker 2004

Embed Size (px)

Citation preview

Page 1: Formale Sprachen und Automaten Klaus Becker 2004

Formale Sprachen und Formale Sprachen und AutomatenAutomaten

Klaus Becker2004

Page 2: Formale Sprachen und Automaten Klaus Becker 2004

2

KB

Form

ale

Sp

rach

en

Formale SprachenFormale Sprachen

! Terminalsymbole

ATagZustand = '<' z '>' ETagZustand = '<' '/' z '>' ATagZustandsmenge = '<' z m '>' ETagZustandsmenge = '<' '/' z m '>' Bezeichner = {Alphanumeric}+

! Produktionen

"Start Symbol" = <Zustandsmenge>

<Zustand> ::= ATagZustand Bezeichner ETagZustand<Zustaende> ::= <Zustand> <Zustaende> ::= <Zustand> <Zustaende><Zustandsmenge> ::= ATagZustandsmenge <Zustaende>

ETagZustandsmenge

Page 3: Formale Sprachen und Automaten Klaus Becker 2004

3

KB

Form

ale

Sp

rach

enTeil 1 Teil 1

Sprachbeschreibung und Spracherkennung

Page 4: Formale Sprachen und Automaten Klaus Becker 2004

4

KB

Form

ale

Sp

rach

en

Exkurs: XMLExkurs: XML

<?xml version="1.0"?><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high</zustand> </zustandsmenge> <anfangszustand> <zustand>off</zustand> </anfangszustand> <ueberfuehrungsfunktion> <delta>off,Schalter,low</delta> <delta>low,Schalter,high</delta> <delta>high,Schalter,off</delta> </ueberfuehrungsfunktion> <ausgabefunktion> <lambda>off,Schalter,AnAus</lambda> <lambda>low,Schalter,AnAn</lambda> <lambda>high,Schalter,AusAus</lambda> </ausgabefunktion> </automat>

Page 5: Formale Sprachen und Automaten Klaus Becker 2004

5

KB

Form

ale

Sp

rach

en

Was ist XML?Was ist XML?

<?xml version="1.0"?><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high</zustand> </zustandsmenge> ...</automat>

„XML (Abk. für extended markup language) ist eine Metasprache zur Beschreibung von Auszeichnungssprachen für allgemeine Dokumente.“ (Duden Informatik)

„XML (Abk. für extended markup language) ist eine Metasprache zur Beschreibung von Auszeichnungssprachen für allgemeine Dokumente.“ (Duden Informatik)

Mit Hilfe von XML kann man Informationen strukturiert darstellen. Des weiteren kann man die Struktur (und die Formatierung) von Dokumenten festlegen, d. h. man kann die Sprache festlegen, in der die Dokumente verfasst werden müssen.

Page 6: Formale Sprachen und Automaten Klaus Becker 2004

6

KB

Form

ale

Sp

rach

en

Darstellung von XML-DokumentenDarstellung von XML-Dokumenten

<?xml version="1.0"?><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high</zustand> </zustandsmenge> <anfangszustand> <zustand>off</zustand> </anfangszustand> <ueberfuehrungsfunktion> <delta>off,Schalter,low</delta> <delta>low,Schalter,high</delta> <delta>high,Schalter,off</delta> </ueberfuehrungsfunktion> <ausgabefunktion> <lambda>off,Schalter,AnAus</lambda> <lambda>low,Schalter,AnAn</lambda> <lambda>high,Schalter,AusAus</lambda> </ausgabefunktion> </automat>

Browser-Ansicht

XML-Dokument

Page 7: Formale Sprachen und Automaten Klaus Becker 2004

7

KB

Form

ale

Sp

rach

en

Ein fehlerhaftes DokumentEin fehlerhaftes Dokument

<?xml version="1.0"?><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high<zustand> </zustandsmenge> <anfangszustand> <zustand>off</zustand> </anfangszustand> ...</automat>

Der Browser erkennt, wenn ein allgemeiner Syntaxfehler vorliegt (hier: kein passendes Ende-Tag gefunden).

Page 8: Formale Sprachen und Automaten Klaus Becker 2004

8

KB

Form

ale

Sp

rach

en

Noch ein fehlerhaftes DokumentNoch ein fehlerhaftes Dokument

<?xml version="1.0"?><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high</zustand> </zustandsmenge> <!-- kein Anfangszustand --> <ueberfuehrungsfunktion> <delta>off,Schalter,low</delta> <delta>low,Schalter,high</delta> <delta>high,Schalter,off</delta> </ueberfuehrungsfunktion> ...</automat>

Der Browser erkennt aber nicht, wenn ein spezieller Syntaxfehler vorliegt (hier: betrifft die vom Benutzer vorgesehene Struktur des Dokuments).

Page 9: Formale Sprachen und Automaten Klaus Becker 2004

9

KB

Form

ale

Sp

rach

en

Festlegung der DokumentenstrukturFestlegung der Dokumentenstruktur

<?xml version="1.0"?><!DOCTYPE automat [ <!ELEMENT automat (zustandsmenge?, anfangszustand, eingabemenge?, ausgabemenge?, ueberfuehrungsfunktion, ausgabefunktion)> <!ATTLIST automat name CDATA #REQUIRED> <!ELEMENT zustandsmenge (zustand)+> <!ELEMENT anfangszustand (zustand)> <!ELEMENT zustand (#PCDATA)> <!ELEMENT eingabemenge (eingabe)+> <!ELEMENT eingabe (#PCDATA)> <!ELEMENT ausgabemenge (ausgabe)+> <!ELEMENT ausgabe (#PCDATA)> <!ELEMENT ueberfuehrungsfunktion (delta)*> <!ELEMENT delta (#PCDATA)> <!ELEMENT ausgabefunktion (lambda)*> <!ELEMENT lambda (#PCDATA)> ]><automat name="Klimaanlage2">...</automat>

Page 10: Formale Sprachen und Automaten Klaus Becker 2004

10

KB

Form

ale

Sp

rach

en

Dokument mit festgelegtem TypDokument mit festgelegtem Typ

<?xml version="1.0"?><!DOCTYPE automat [ <!ELEMENT automat (zustandsmenge?, anfangszustand, eingabemenge?, ausgabemenge?, ueberfuehrungsfunktion, ausgabefunktion)> <!ATTLIST automat name CDATA #REQUIRED> <!ELEMENT zustandsmenge (zustand)+> <!ELEMENT anfangszustand (zustand)> <!ELEMENT zustand (#PCDATA)> <!ELEMENT eingabemenge (eingabe)+> <!ELEMENT eingabe (#PCDATA)> <!ELEMENT ausgabemenge (ausgabe)+> <!ELEMENT ausgabe (#PCDATA)> <!ELEMENT ueberfuehrungsfunktion (delta)*> <!ELEMENT delta (#PCDATA)> <!ELEMENT ausgabefunktion (lambda)*> <!ELEMENT lambda (#PCDATA)> ]><automat name="Klimaanlage2">...</automat>

Page 11: Formale Sprachen und Automaten Klaus Becker 2004

11

KB

Form

ale

Sp

rach

en

Aktivierung des ParserAktivierung des Parser

<HTML>

<HEAD> <TITLE>Automatenbeschreibungstest</TITLE> <SCRIPT LANGUAGE="JavaScript" FOR="window" EVENT="ONLOAD"> Document = Test.XMLDocument; message = "parseError.errorCode: „ + Document.parseError.errorCode + "\nl„ + "parseError.filepos: „ + Document.parseError.filepos + "\nl„ + "parseError.line: „ + Document.parseError.line + "\nl„ + "parseError.linepos: „ + Document.parseError.linepos + "\nl„ + "parseError.reason: „ + Document.parseError.reason + "\nl„ + "parseError.srcText: „ + Document.parseError.srcText; alert (message); </SCRIPT></HEAD>

<BODY><XML ID="Test" SRC="Klimaanlage2.XML"></XML><H2>DTD Automatentest</H2></BODY>

</HTML>

nach J. Müller: XML, Teil 4. In: LOG IN 122/123 (2003)

Page 12: Formale Sprachen und Automaten Klaus Becker 2004

12

KB

Form

ale

Sp

rach

en

<HTML>

<HEAD> <TITLE>Automatenbeschreibungstest</TITLE> <SCRIPT LANGUAGE="JavaScript" FOR="window" EVENT="ONLOAD"> Document = Test.XMLDocument; message = "parseError.errorCode: „ + Document.parseError.errorCode + "\nl„ + "parseError.filepos: „ + Document.parseError.filepos + "\nl„ + "parseError.line: „ + Document.parseError.line + "\nl„ + "parseError.linepos: „ + Document.parseError.linepos + "\nl„ + "parseError.reason: „ + Document.parseError.reason + "\nl„ + "parseError.srcText: „ + Document.parseError.srcText; alert (message); </SCRIPT></HEAD>

<BODY><XML ID="Test" SRC="Klimaanlage2.XML"></XML><H2>DTD Automatentest</H2></BODY>

</HTML>

<HTML>

<HEAD> <TITLE>Automatenbeschreibungstest</TITLE> <SCRIPT LANGUAGE="JavaScript" FOR="window" EVENT="ONLOAD"> Document = Test.XMLDocument; message = "parseError.errorCode: „ + Document.parseError.errorCode + "\nl„ + "parseError.filepos: „ + Document.parseError.filepos + "\nl„ + "parseError.line: „ + Document.parseError.line + "\nl„ + "parseError.linepos: „ + Document.parseError.linepos + "\nl„ + "parseError.reason: „ + Document.parseError.reason + "\nl„ + "parseError.srcText: „ + Document.parseError.srcText; alert (message); </SCRIPT></HEAD>

<BODY><XML ID="Test" SRC="Klimaanlage2.XML"></XML><H2>DTD Automatentest</H2></BODY>

</HTML>

Korrekte AutomatenbeschreibungKorrekte Automatenbeschreibung<?xml version="1.0"?><!DOCTYPE automat [ ... ]><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high</zustand> </zustandsmenge> <anfangszustand> <zustand>off</zustand> </anfangszustand> ...</automat>

<?xml version="1.0"?><!DOCTYPE automat [ ... ]><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high</zustand> </zustandsmenge> <anfangszustand> <zustand>off</zustand> </anfangszustand> ...</automat>

Der Parser überprüft die Dokumentenstruktur.

Page 13: Formale Sprachen und Automaten Klaus Becker 2004

13

KB

Form

ale

Sp

rach

en

<HTML>

<HEAD> <TITLE>Automatenbeschreibungstest</TITLE> <SCRIPT LANGUAGE="JavaScript" FOR="window" EVENT="ONLOAD"> Document = Test.XMLDocument; message = "parseError.errorCode: „ + Document.parseError.errorCode + "\nl„ + "parseError.filepos: „ + Document.parseError.filepos + "\nl„ + "parseError.line: „ + Document.parseError.line + "\nl„ + "parseError.linepos: „ + Document.parseError.linepos + "\nl„ + "parseError.reason: „ + Document.parseError.reason + "\nl„ + "parseError.srcText: „ + Document.parseError.srcText; alert (message); </SCRIPT></HEAD>

<BODY><XML ID="Test" SRC="Klimaanlage4.XML"></XML><H2>DTD Automatentest</H2></BODY>

</HTML>

<HTML>

<HEAD> <TITLE>Automatenbeschreibungstest</TITLE> <SCRIPT LANGUAGE="JavaScript" FOR="window" EVENT="ONLOAD"> Document = Test.XMLDocument; message = "parseError.errorCode: „ + Document.parseError.errorCode + "\nl„ + "parseError.filepos: „ + Document.parseError.filepos + "\nl„ + "parseError.line: „ + Document.parseError.line + "\nl„ + "parseError.linepos: „ + Document.parseError.linepos + "\nl„ + "parseError.reason: „ + Document.parseError.reason + "\nl„ + "parseError.srcText: „ + Document.parseError.srcText; alert (message); </SCRIPT></HEAD>

<BODY><XML ID="Test" SRC="Klimaanlage4.XML"></XML><H2>DTD Automatentest</H2></BODY>

</HTML>

Fehlerhafte AutomatenbeschreibungFehlerhafte Automatenbeschreibung<?xml version="1.0"?><!DOCTYPE automat [ ... ]><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high</zustand> </zustandsmenge> <!-- kein Anfangszustand --> ...</automat>

<?xml version="1.0"?><!DOCTYPE automat [ ... ]><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high</zustand> </zustandsmenge> <!-- kein Anfangszustand --> ...</automat>

Der Parser erkennt einen Syntaxfehler.

Page 14: Formale Sprachen und Automaten Klaus Becker 2004

14

KB

Form

ale

Sp

rach

en

ÜbersichtÜbersicht

Aus: M. Näf: Einführung in XML, DTD und XSL. www.internet-kompetenz.ch/xml/

Page 15: Formale Sprachen und Automaten Klaus Becker 2004

15

KB

Form

ale

Sp

rach

en

ZielsetzungZielsetzung

Ziel ist es, Verfahren zur präzisen Festlegung von Sprachen (wie der Automatenbeschreibungssprache) zu entwickeln.

Ziel ist es, Verfahren zur präzisen Festlegung von Sprachen (wie der Automatenbeschreibungssprache) zu entwickeln.

<?xml version="1.0"?><!DOCTYPE automat [ <!ELEMENT automat (zustandsmenge?, anfangszustand, eingabemenge?, ausgabemenge?, ueberfuehrungsfunktion, ausgabefunktion)> <!ATTLIST automat name CDATA #REQUIRED> <!ELEMENT zustandsmenge (zustand)+> <!ELEMENT anfangszustand (zustand)> <!ELEMENT zustand (#PCDATA)> <!ELEMENT eingabemenge (eingabe)+> ... ]><automat name="Klimaanlage2">...</automat>

Page 16: Formale Sprachen und Automaten Klaus Becker 2004

16

KB

Form

ale

Sp

rach

en

ZielsetzungZielsetzung

Ziel ist es, Systeme zu entwickeln, mit deren Hilfe man entscheiden kann, ob eine „sprachliche Beschreibung“ (wie eine Automatenbeschreibung) korrekt oder fehlerhaft ist.

Ziel ist es, Systeme zu entwickeln, mit deren Hilfe man entscheiden kann, ob eine „sprachliche Beschreibung“ (wie eine Automatenbeschreibung) korrekt oder fehlerhaft ist.

<?xml version="1.0"?><!DOCTYPE automat [ ... ]><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high</zustand> </zustandsmenge> <!-- kein Anfangszustand --> ...</automat>

<?xml version="1.0"?><!DOCTYPE automat [ ... ]><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high</zustand> </zustandsmenge> <!-- kein Anfangszustand --> ...</automat>

Page 17: Formale Sprachen und Automaten Klaus Becker 2004

17

KB

Form

ale

Sp

rach

enTeil 2 Teil 2

Sprachbeschreibung mit Grammatiken

Page 18: Formale Sprachen und Automaten Klaus Becker 2004

18

KB

Form

ale

Sp

rach

en

Die Sprache der ZustandsmengenDie Sprache der Zustandsmengen

<zm><z>z0</z><z>z1</z><z>z2</z><z>z21</z><z>z3</z></zm>

Das präzise Festlegen einer Sprache soll zunächst anhand einer übersichtlichen, vereinfachten Teilsprache der XML-Automatenbeschreibungssprache entwickelt werden. Wir betrachten hierzu die Beschreibung von Zustandsmengen, die in verkürzter Form dargestellt werden.

Das präzise Festlegen einer Sprache soll zunächst anhand einer übersichtlichen, vereinfachten Teilsprache der XML-Automatenbeschreibungssprache entwickelt werden. Wir betrachten hierzu die Beschreibung von Zustandsmengen, die in verkürzter Form dargestellt werden.

Page 19: Formale Sprachen und Automaten Klaus Becker 2004

19

KB

Form

ale

Sp

rach

en

Informelle BeschreibungInformelle Beschreibung

<zm><z>z0</z><z>z1</z><z>z2</z><z>z21</z><z>z3</z></zm>

Regeln:Regeln:

/1/ Eine Zustandsmengenbeschreibung wird durch die Tags <zm> und </zm> eingeschlossen.

/2/ Sie enthält beliebig viele, aber mindestens einen Zustand.

/3/ Jeder Zustand wird durch die Tags <z> und </z> eingeschlossen.

...

Page 20: Formale Sprachen und Automaten Klaus Becker 2004

20

KB

Form

ale

Sp

rach

en

Das Alphabet einer SpracheDas Alphabet einer Sprache

<zm><z>z0</z><z>z1</z><z>z2</z><z>z21</z><z>z3</z></zm>

= {<, >, /, a, ..., z, A, ..., Z, 0, ..., 9}

Das Alphabet der Zustandsmengen-Sprache:Das Alphabet der Zustandsmengen-Sprache:

Jede Sprache benutzt bestimmte Zeichen, um Wörter bzw. Sätze zu bilden. Die Menge der zulässigen Zeichen wird Alphabet genannt. Ein Alphabet ist somit eine endliche (geordnete) Menge von Zeichen.

Jede Sprache benutzt bestimmte Zeichen, um Wörter bzw. Sätze zu bilden. Die Menge der zulässigen Zeichen wird Alphabet genannt. Ein Alphabet ist somit eine endliche (geordnete) Menge von Zeichen.

Zustandsmengenbeschreibung:Zustandsmengenbeschreibung:

Page 21: Formale Sprachen und Automaten Klaus Becker 2004

21

KB

Form

ale

Sp

rach

en

Wörter über einem AlphabetWörter über einem Alphabet

<zm><z>z0</z><z>z1</z><z>z2</z><z>z21</z><z>z3</z></zm>

= {<, >, /, a, ..., z, A, ..., Z, 0, ..., 9}

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

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

Das Alphabet der Zustandsmengen-Sprache:Das Alphabet der Zustandsmengen-Sprache:

Wörter über diesem Alphabet:Wörter über diesem Alphabet:

<zm><z>rotgelb</z></zm>

<a><z3

Page 22: Formale Sprachen und Automaten Klaus Becker 2004

22

KB

Form

ale

Sp

rach

en

Formale SprachenFormale Sprachen

<zm><z>z0</z><z>z1</z><z>z2</z><z>z21</z><z>z3</z></zm>

Eine (formale) Sprache über einem Alphabet ist eine Teilmenge von *. Eine (formale) Sprache über einem Alphabet ist eine Teilmenge von *.

Wörter, die zur Zustandsmengen-Sprache gehören:Wörter, die zur Zustandsmengen-Sprache gehören:

<zm><z>rotgelb</z></zm>

<a><z3

<zm><z>rotgelb<z><zm>

Wörter, die nicht zur Zustandsmengen-Sprache gehören:Wörter, die nicht zur Zustandsmengen-Sprache gehören:

Problem: Festlegung aller Wörter, die zur Sprache gehörenProblem: Festlegung aller Wörter, die zur Sprache gehören

Page 23: Formale Sprachen und Automaten Klaus Becker 2004

23

KB

Form

ale

Sp

rach

en

SyntaxdiagrammeSyntaxdiagramme

ATagZustand

< z >

ETagZustand

< / z >

ATagZustandsmenge

< z m

ETagZustandsmenge

< / z m

>

>

Page 24: Formale Sprachen und Automaten Klaus Becker 2004

24

KB

Form

ale

Sp

rach

en

SyntaxdiagrammeSyntaxdiagramme

AlphanumerischesZeichen

a b ... A B ... 0 1 ...

Bezeichner

AlphanumerischesZeichen

Zustand

Bezeichner

ATagZustand

ETagZustand

Page 25: Formale Sprachen und Automaten Klaus Becker 2004

25

KB

Form

ale

Sp

rach

en

Bestandteile von SyntaxdiagrammeBestandteile von Syntaxdiagramme

Terminalsymbole gehören zum Alphabet der Sprache.

Nichtterminalsymbole sind Variablen, die als Platzhalter für syntaktische Einheiten fungieren.

Terminalsymbole gehören zum Alphabet der Sprache.

Nichtterminalsymbole sind Variablen, die als Platzhalter für syntaktische Einheiten fungieren.

AlphanumerischesZeichen

a b ... A B ... 0 1 ...

Bezeichner

AlphanumerischesZeichen

Terminalsymbol

Nichtterminalsymbol

Page 26: Formale Sprachen und Automaten Klaus Becker 2004

26

KB

Form

ale

Sp

rach

enÜbungÜbung

Ergänzen Sie die Sprachbeschreibung um Syntaxdiagramme für Zustandsmengen. Beachten Sie, dass eine Zustandsmenge beliebig viele, aber mindestens einen Zustand hat.

Ergänzen Sie die Sprachbeschreibung um Syntaxdiagramme für Zustandsmengen. Beachten Sie, dass eine Zustandsmenge beliebig viele, aber mindestens einen Zustand hat.

Page 27: Formale Sprachen und Automaten Klaus Becker 2004

27

KB

Form

ale

Sp

rach

en

ATagZustandsmenge

LösungLösung

Zustand

Zustandsmenge

ETagZustandsmenge

Page 28: Formale Sprachen und Automaten Klaus Becker 2004

28

KB

Form

ale

Sp

rach

en

Übersetzung in ProduktionsregelnÜbersetzung in Produktionsregeln

<ATagZustand> '<' 'z' '>'

ATagZustand

< z >

Page 29: Formale Sprachen und Automaten Klaus Becker 2004

29

KB

Form

ale

Sp

rach

en

Übersetzung in ProduktionsregelnÜbersetzung in Produktionsregeln

<AlphanumerischesZeichen> 'a'

AlphanumerischesZeichen

a b ... A B ... 0 1 ...

<AlphanumerischesZeichen> 'b'

...

Page 30: Formale Sprachen und Automaten Klaus Becker 2004

30

KB

Form

ale

Sp

rach

en

Übersetzung in ProduktionsregelnÜbersetzung in Produktionsregeln

Bezeichner

AlphanumerischesZeichen

<Bezeichner> <AlphanumerischesZeichen>

<Bezeichner> <AlphanumerischesZeichen> <Bezeichner>

Page 31: Formale Sprachen und Automaten Klaus Becker 2004

31

KB

Form

ale

Sp

rach

enÜbungÜbung

Ergänzen Sie die fehlenden Produktionsregeln. Ergänzen Sie die fehlenden Produktionsregeln.

Page 32: Formale Sprachen und Automaten Klaus Becker 2004

32

KB

Form

ale

Sp

rach

enLösungLösung

<Zustand> <ATagZustand> <Bezeichner> <ETagZustand>

<Zustaende> <Zustand>

<Zustandsmenge> <ATagZustandsmenge> <Zustaende> <ETagZustandsmenge>

<Zustaende> <Zustand> <Zustaende>

Page 33: Formale Sprachen und Automaten Klaus Becker 2004

33

KB

Form

ale

Sp

rach

en

GrammatikGrammatik

Eine Grammatik ist ein Tupel G = (T, N, P, S) bestehend aus - einer endlichen nichtleeren Menge T von Terminalzeichen,- einer endlichen nichtleeren Menge N von Nichtterminalzeichen,- einer endlichen Menge P von Produktionen (Regeln) und- einem Startsymbol S N.

Eine Grammatik ist ein Tupel G = (T, N, P, S) bestehend aus - einer endlichen nichtleeren Menge T von Terminalzeichen,- einer endlichen nichtleeren Menge N von Nichtterminalzeichen,- einer endlichen Menge P von Produktionen (Regeln) und- einem Startsymbol S N.

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

Page 34: Formale Sprachen und Automaten Klaus Becker 2004

34

KB

Form

ale

Sp

rach

en

Backus-Naur-FormBackus-Naur-Form

<Bezeichner> ::= <AlphanumerischesZeichen> | <AlphanumerischesZeichen> <Bezeichner>

<AlphanumerischesZeichen> ::= 'a' | 'b' | .. | 'A' | 'B' | .. | '0' | ..

Die Backus-Naur-Form ist eine Kurzschreibweise für Produktionen.Die Backus-Naur-Form ist eine Kurzschreibweise für Produktionen.

<Bezeichner> <AlphanumerischesZeichen>

<Bezeichner> <AlphanumerischesZeichen> <Bezeichner>

<AlphanumerischesZeichen> 'a'

<AlphanumerischesZeichen> 'b'

...

Page 35: Formale Sprachen und Automaten Klaus Becker 2004

35

KB

Form

ale

Sp

rach

enÜbungÜbung

Beschreiben Sie die gesamte Grammatik der Zustandsmengen-sprache in Backus-Naur-Form.Beschreiben Sie die gesamte Grammatik der Zustandsmengen-sprache in Backus-Naur-Form.

Page 36: Formale Sprachen und Automaten Klaus Becker 2004

36

KB

Form

ale

Sp

rach

en

WortproblemWortproblem

Beispiel: <zm><z>z0</z></zm>

Ableitung durch Wortersetzung:

Eine Produktion u v wird so interpretiert, dass u überall, wo es als Teil eines Wortes auftritt, durch v ersetzt werden darf.

Gegeben: Wort über dem Alphabet T Gegeben: Wort über dem Alphabet T

Gesucht: Ableitung des Wortes mit Hilfe der Produktionen der Grammatik ausgehend vom StartzustandGesucht: Ableitung des Wortes mit Hilfe der Produktionen der Grammatik ausgehend vom Startzustand

Page 37: Formale Sprachen und Automaten Klaus Becker 2004

37

KB

Form

ale

Sp

rach

en

WorterzeugungWorterzeugung

<Zustandsmenge> <ATagZustandsmenge> <Zustaende> <ETagZustandsmenge> '<' 'zm' '>' <Zustaende> <ETagZustandsmenge> '<' 'zm' '>' <Zustaende> '<' '/' 'zm' '>' '<' 'zm' '>' <Zustand> '<' '/' 'zm' '>' '<' 'zm' '>' <ATagZustand> <Bezeichner> <ETagZustand> '<' '/' 'zm' '>' '<' 'zm' '>' '<' 'z' '>' <Bezeichner> <ETagZustand> '<' '/' 'zm' '>' '<' 'zm' '>' '<' 'z' '>' <Bezeichner> '<' '/' 'z' '>' '<' '/' 'zm' '>' '<' 'zm' '>' '<' 'z' '>' <Alphan.Zeichen> <Bezeichner> '<' '/' 'z' '>' '<' '/' 'zm' '>' '<' 'zm' '>' '<' 'z' '>' 'z' <Bezeichner> '<' '/' 'z' '>' '<' '/' 'zm' '>' '<' 'zm' '>' '<' 'z' '>' 'z' <AlphanumerischesZeichen> '<' '/' 'z' '>' '<' '/' 'zm' '>' '<' 'zm' '>' '<' 'z' '>' 'z' '0' '<' '/' 'z' '>' '<' '/' 'zm' '>'

Gegeben: <zm><z>z0</z></zm>Gegeben: <zm><z>z0</z></zm>

Gesucht: Ableitung des Wortes mit Hilfe der ProduktionenGesucht: Ableitung des Wortes mit Hilfe der Produktionen

Startsymbol

Wort aus Terminalsymbolen

Page 38: Formale Sprachen und Automaten Klaus Becker 2004

38

KB

Form

ale

Sp

rach

enÜbungÜbung

Kommentieren Sie die Ableitung, indem Sie für jeden Ersetzungs-schritt die benutzte Grammatikregel (Produktion) angeben.

Kommentieren Sie die Ableitung, indem Sie für jeden Ersetzungs-schritt die benutzte Grammatikregel (Produktion) angeben.

<Zustandsmenge>

<ATagZustandsmenge> <Zustaende> <ETagZustandsmenge>

'<' 'zm' '>' <Zustaende> <ETagZustandsmenge>

'<' 'zm' '>' <Zustaende> '<' '/' 'zm' '>'

'<' 'zm' '>' <Zustand> '<' '/' 'zm' '>'

'<' 'zm' '>' <ATagZustand> <Bezeichner> <ETagZustand> '<' '/' 'zm' '>'

'<' 'zm' '>' '<' 'z' '>' <Bezeichner> <ETagZustand> '<' '/' 'zm' '>'

'<' 'zm' '>' '<' 'z' '>' <Bezeichner> '<' '/' 'z' '>' '<' '/' 'zm' '>'

'<' 'zm' '>' '<' 'z' '>' <Alphan.Zeichen> <Bezeichner> '<' '/' 'z' '>' '<' '/' 'zm' '>'

'<' 'zm' '>' '<' 'z' '>' 'z' <Bezeichner> '<' '/' 'z' '>' '<' '/' 'zm' '>'

'<' 'zm' '>' '<' 'z' '>' 'z' <AlphanumerischesZeichen> '<' '/' 'z' '>' '<' '/' 'zm' '>'

'<' 'zm' '>' '<' 'z' '>' 'z' '0' '<' '/' 'z' '>' '<' '/' 'zm' '>'

Page 39: Formale Sprachen und Automaten Klaus Becker 2004

39

KB

Form

ale

Sp

rach

enTeil 3 Teil 3

Ein Werkzeug zur Sprachbeschreibung

Page 40: Formale Sprachen und Automaten Klaus Becker 2004

40

KB

Form

ale

Sp

rach

en

Spracherkennung mit WerkzeugenSpracherkennung mit Werkzeugen

Siehe: www.devincook.com/goldparser/

Page 41: Formale Sprachen und Automaten Klaus Becker 2004

41

KB

Form

ale

Sp

rach

en

Zwei-Stufen-BeschreibungZwei-Stufen-Beschreibung

Oft ist eine zweistufige Beschreibung der Sprache zweckmäßig:Oft ist eine zweistufige Beschreibung der Sprache zweckmäßig:

Zeichen:Zeichen:

<zm>, <z>, rotgelb, gruen, ...

<zm><z>rotgelb</z></zm>, <zm></z>, ...

Sätze / Tokenfolgen:Sätze / Tokenfolgen:

Wörter / Token:Wörter / Token:

<, >, /, a, ..., z, A, ..., Z, 0, ..., 9

Festlegung der korrekten Token (Wörter)

Festlegung der korrekten Tokenfolgen (Sätze)

Page 42: Formale Sprachen und Automaten Klaus Becker 2004

42

KB

Form

ale

Sp

rach

en

Sprache der TokenSprache der Token

Alphabet:Alphabet:

= {<, >, /, a, ..., z, A, ..., Z, 0, ..., 9}

<ATagZustand> ::= '<' 'z' '>'

<Bezeichner> ::= <AlphanumerischesZeichen> | <AlphanumerischesZeichen> <Bezeichner>

<AlphanumerischesZeichen> ::= 'a' | 'b' | .. | 'A' | 'B' | .. | '0' | ..

<ETagZustand> ::= '<' '/' 'z' '>'

<ATagZustandsmenge> ::= '<' 'z' 'm' '>'

<ETagZustandsmenge> ::= '<' '/' 'z' 'm' '>'

Grammatik:Grammatik:

Page 43: Formale Sprachen und Automaten Klaus Becker 2004

43

KB

Form

ale

Sp

rach

en

Sprache der TokenfolgenSprache der Tokenfolgen

Alphabet:Alphabet:

= {<z>, </z>, <zm>, </zm>, ..., rotgelb, ..., gruen, ...}

<Bezeichner> ::= ... | rotgelb | ... | gruen | ...

<Zustand> ::= '<z>' <Bezeichner> '</z>'

<Zustaende> ::= <Zustand> | <Zustand> <Zustaende>

<Zustandsmenge> ::= '<zm>' <Zustaende> '</zm>'

Grammatik:Grammatik:

Page 44: Formale Sprachen und Automaten Klaus Becker 2004

44

KB

Form

ale

Sp

rach

en

Darstellung einer GrammatikDarstellung einer Grammatik

! Terminalsymbole

ATagZustand = '<' z '>' ETagZustand = '<' '/' z '>' ATagZustandsmenge = '<' z m '>' ETagZustandsmenge = '<' '/' z m '>' Bezeichner = {Alphanumeric}+

! Produktionen

"Start Symbol" = <Zustandsmenge>

<Zustand> ::= ATagZustand Bezeichner ETagZustand<Zustaende> ::= <Zustand> <Zustaende> ::= <Zustand> <Zustaende><Zustandsmenge> ::= ATagZustandsmenge <Zustaende>

ETagZustandsmenge

Zwei-stufige Darstellung beim Werkzeug „GOLD Parser Builder“ Zwei-stufige Darstellung beim Werkzeug „GOLD Parser Builder“

Produktionen in BNF

Reguläre Ausdrücke

Page 45: Formale Sprachen und Automaten Klaus Becker 2004

45

KB

Form

ale

Sp

rach

en

AbleitungsbaumAbleitungsbaum

Page 46: Formale Sprachen und Automaten Klaus Becker 2004

46

KB

Form

ale

Sp

rach

en

ZustandsautomatZustandsautomat

Zur Analyse der Terminalsymbole benutzt das Werkzeug „GOLD Parser Builder“ einen Automaten.

Page 47: Formale Sprachen und Automaten Klaus Becker 2004

47

KB

Form

ale

Sp

rach

enÜbungÜbung

Aufgabe 1Testen Sie das Werkzeug am Beispiel der Zustandsmengensprache.

Aufgabe 2Erstellen Sie eine vollständige Grammatik zur Automaten-beschreibungssprache mit Hilfe des Werkzeugs.

Page 48: Formale Sprachen und Automaten Klaus Becker 2004

48

KB

Form

ale

Sp

rach

en

Exkurs: Verknüpfung von SprachenExkurs: Verknüpfung von SprachenX und Y seien Sprachen über dem Alphabet .

XY = {xy | xX, yY} ist die Menge aller Worte, 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 Worte, die sich ergeben, wenn man beliebig viele (auch keine) Worte aus X aneinanderhängt.

X+ = X1 X2 X3 X4 … ist die Menge aller Worte, die sich ergeben, wenn man beliebig viele Worte, aber mindestens ein Wort, aus X aneinanderhängt.

X und Y seien Sprachen über dem Alphabet .

XY = {xy | xX, yY} ist die Menge aller Worte, 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 Worte, die sich ergeben, wenn man beliebig viele (auch keine) Worte aus X aneinanderhängt.

X+ = X1 X2 X3 X4 … ist die Menge aller Worte, die sich ergeben, wenn man beliebig viele Worte, 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 49: Formale Sprachen und Automaten Klaus Becker 2004

49

KB

Form

ale

Sp

rach

en

Exkurs: Reguläre AusdrückeExkurs: 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,

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,

Beispiele: Sei = {a, b, c}.

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

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

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

= {ac, aac, aaac, …, abc, aabc, aaabc, …, abbc, aabbc, aaabbc, …}

= {aibjc | i >0; j 0}

Page 50: Formale Sprachen und Automaten Klaus Becker 2004

50

KB

Form

ale

Sp

rach

en

Darstellung und Test regulärer Darstellung und Test regulärer AusdrückeAusdrücke

! Regulärer AusdruckL = a[a|b]*c

"Start Symbol" = <S><S> ::= L

a(a+b)*c

Beispiel 1: Beispiel 1:

! Regulärer AusdruckL = b[a]*|[b]+

"Start Symbol" = <S><S> ::= L

ba*+b+

Beispiel 2: Beispiel 2:

! Regulärer AusdruckL = A{Letter}*n

"Start Symbol" = <S><S> ::= L

A(a+b+...+Z)*n

Beispiel 3: Beispiel 3:

Page 51: Formale Sprachen und Automaten Klaus Becker 2004

51

KB

Form

ale

Sp

rach

enÜbungÜbung

Erstellen Sie reguläre Ausdrücke zur Beschreibung folgender Mengen:

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

(b) Die Menge aller Zeichenketten über dem Alphabet {a, b}, die mit a beginnen oder mit b enden.

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

(d) Alle Namen über dem Standardalphabet, die mit A anfangen.

(e) Die Menge folgender Klassen: {5a, 5b, 5c, ..., 10a, 10b, 10c}.

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

Page 52: Formale Sprachen und Automaten Klaus Becker 2004

52

KB

Form

ale

Sp

rach

enÜbungÜbung

Wir betrachten Adressen nach dem http-Protokoll mit folgendem Aufbau:

http://www.hostname.subdomain.....domain.topleveldomain

Beispiel:

http://www.google.de

Der Einfachheit halber sollen alle Domainnamen nur aus Buchstaben bestehen.

Entwickeln Sie eine Grammatik zur Beschreibung solcher Adressen. Testen Sie die Grammatik.

Page 53: Formale Sprachen und Automaten Klaus Becker 2004

53

KB

Form

ale

Sp

rach

enÜbungÜbung

HTTP-date = rfc1123-date | rfc850-date | asctime-date

rfc1123-date = wkday "," SP date1 SP time SP "GMT"

rfc850-date = weekday "," SP date2 SP time SP "GMT"

asctime-date = wkday SP date3 SP time SP 4DIGIT

date1 = 2DIGIT SP month SP 4DIGIT

date2 = 2DIGIT "-" month "-" 2DIGIT

date3 = month SP ( 2DIGIT | ( SP 1DIGIT ))

time = 2DIGIT ":" 2DIGIT ":" 2DIGIT

wkday = "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat" | "Sun"

weekday = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" | "Saturday" | "Sunday"

month = "Jan" | "Feb" | "Mar" | "Apr" | "May" | "Jun" | "Jul" | "Aug" | "Sep" | "Oct" | "Nov" | "Dec"

Im Internet-Standarddokument (Request for Comment) RCF1945 für das HTTP-Protokoll findet man die folgende Grammatik für erlaubte Datum-Uhrzeit-Formate.

Ergänzen Sie geeignete Grammatikregeln für SP, 1DIGIT, 2DIGIT, 4DIGIT. Erzeugen Sie verschiedene korrekte Datum-Uhrzeit-Angaben.

Page 54: Formale Sprachen und Automaten Klaus Becker 2004

54

KB

Form

ale

Sp

rach

enTeil 4 Teil 4

Spracherkennung mit Automaten

Page 55: Formale Sprachen und Automaten Klaus Becker 2004

55

KB

Form

ale

Sp

rach

en

ZielsetzungZielsetzung

Ziel ist es, Spracherkennungssysteme zu entwickeln.

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

Ziel ist es, Spracherkennungssysteme zu entwickeln.

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

Wort ja / nein

Page 56: Formale Sprachen und Automaten Klaus Becker 2004

56

KB

Form

ale

Sp

rach

en

Vereinfachte BezeichnerVereinfachte Bezeichner

Beispiel: Das System soll vereinfachte Bezeichner erkennen:Beispiel: Das System soll vereinfachte Bezeichner erkennen:

Regeln zur Bildung vereinfachter Bezeichner

/1/ Der Bezeichner beginnt mit einem z.

/2/ Danach kommt beliebig oft, aber mindestens einmal eine der Ziffern 0 oder 1.

Beispiele für korrekte vereinfachte Bezeichner:

z0, z10, z01101, z000000

Beispiele für nicht-korrekte vereinfachte Bezeichner:

0z, z10z, z01a, z

Page 57: Formale Sprachen und Automaten Klaus Becker 2004

57

KB

Form

ale

Sp

rach

en

Erzeugende SystemeErzeugende Systeme

Spracherkennungsansatz: Erzeugung von AbleitungenSpracherkennungsansatz: Erzeugung von Ableitungen

Alphabet:Alphabet:

= {z, 0, 1, a}

B zNN 0 N 1N 0N N 1N

Grammatik:Grammatik:

B zN z1 # z1N z10 # z10N...

Erzeugung von Ableitungen:Erzeugung von Ableitungen:

Wort:Wort:

z1001

Erzeuge systematisch Ableitungen mit Hilfe von Grammatikregeln und überprüfe, ob das gegebene Wort auf diese Weise erzeugt werden kann.

Erzeuge systematisch Ableitungen mit Hilfe von Grammatikregeln und überprüfe, ob das gegebene Wort auf diese Weise erzeugt werden kann.

Page 58: Formale Sprachen und Automaten Klaus Becker 2004

58

KB

Form

ale

Sp

rach

en

Analysierende SystemeAnalysierende Systeme

Spracherkennungsansatz: Zustandsbasierte WortanalyseSpracherkennungsansatz: Zustandsbasierte Wortanalyse

Verarbeite das Wort mit Hilfe eines erkennenden Automaten: Überprüfe, ob das gegebene Wort den Automaten vom Anfangszustand in einen Endzustand überführt.

Verarbeite das Wort mit Hilfe eines erkennenden Automaten: Überprüfe, ob das gegebene Wort den Automaten vom Anfangszustand in einen Endzustand überführt.

Endzustand

Anfangszustand

Page 59: Formale Sprachen und Automaten Klaus Becker 2004

59

KB

Form

ale

Sp

rach

en

Erkennende AutomatenErkennende Automaten

Zustandsmenge: Z = {Z0, Z1, Z2, Z3}

Anfangszustand: za = Z0

Endzustände: Ze = {Z2}

Eingabemenge: E = {z, a, 0, 1}

Überführungsfunktion: : (Z0, z) Z1; (Z0, a) Z3; ...

Ein erkennender Automat / Akzeptor ist ein Tupel A = (Z, za, Ze, E, ) bestehend aus - 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.

Ein erkennender Automat / Akzeptor ist ein Tupel A = (Z, za, Ze, E, ) bestehend aus - 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.

Page 60: Formale Sprachen und Automaten Klaus Becker 2004

60

KB

Form

ale

Sp

rach

en

Die Sprache eines AkzeptorsDie Sprache eines Akzeptors

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

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

L(A) = {z0, z1, z00, z01, z10, z11, ...}

Page 61: Formale Sprachen und Automaten Klaus Becker 2004

61

KB

Form

ale

Sp

rach

enÜbungÜbung

Ein Akzeptor soll Zustandsbeschreibungen der folgenden Form akzeptieren:

<z><z>AAA<z>AA</z>BB<z>BB<z>BBBAAAB<z>BBABB</z>

Bem.: A steht für ein beliebiges alphanumerisches Zeichen; B steht für ein Leerzeichen (blank).

Werkzeuge: Automaton Simulator, Charon

Page 62: Formale Sprachen und Automaten Klaus Becker 2004

62

KB

Form

ale

Sp

rach

enÜbungÜbung

Ein Akzeptor soll Zahlen mit folgendem Format akzeptieren:

3.0E-12

0.24E3

...

Präzisieren Sie zunächst die Grammatik dieser Zahldarstellung. Entwickeln Sie anschließend einen geeigneten Akzeptor.

Werkzeuge: GOLD Parser Builder, Automaton Simulator, Charon

Page 63: Formale Sprachen und Automaten Klaus Becker 2004

63

KB

Form

ale

Sp

rach

enTeil 5 Teil 5

Scanner und Parser

Page 64: Formale Sprachen und Automaten Klaus Becker 2004

64

KB

Form

ale

Sp

rach

en

AutomatenbeschreibungsübersetzerAutomatenbeschreibungsübersetzer

<?xml version="1.0"?><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high</zustand> </zustandsmenge> ...</automat>

<?xml version="1.0"?><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high</zustand> </zustandsmenge> ...</automat>

<?xml version="1.0"?><automat name="Klimaanlage"><zustandsmenge><zustand>off</zustand><zustand>low</zustand><zustand>high</zustand></zustandsmenge>...</automat>

<?xml version="1.0"?><automat name="Klimaanlage"><zustandsmenge><zustand>off</zustand><zustand>low</zustand><zustand>high</zustand></zustandsmenge>...</automat>

Fehler

Übersetzer

<?xml version="1.0"?><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high<zustand> </zustandsmenge> ...</automat>

<?xml version="1.0"?><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high<zustand> </zustandsmenge> ...</automat>

Page 65: Formale Sprachen und Automaten Klaus Becker 2004

65

KB

Form

ale

Sp

rach

en

Vereinfachung: Vereinfachung: ZustandsmengenübersetzerZustandsmengenübersetzer

<zm> <z> off </z> <z>low</z><z> high</z></zm>

<zm> <z> off </z> <z>low</z><z> high</z></zm>

<zm><z>off</z><z>low</z><z>high</z></zm>

<zm><z>off</z><z>low</z><z>high</z></zm>

Fehler

Übersetzer

<zm> <z> off </z> < z>low</z><z> high</z><zm>

<zm> <z> off </z> < z>low</z><z> high</z><zm>

Page 66: Formale Sprachen und Automaten Klaus Becker 2004

66

KB

Form

ale

Sp

rach

enScannerScanner

<zm> <z> off </z> <z>low</z><z> high</z></zm>

<zm> <z> off </z> <z>low</z><z> high</z></zm>

<zm><z>off</z><z>low</z><z>high</z></zm>

<zm><z>off</z><z>low</z><z>high</z></zm>

Scanner

<zm> <z> off <z> < z>low</z><z> high</z></zm>

<zm> <z> off <z> < z>low</z><z> high</z></zm>

<zm><z>off<z>!

<zm><z>off<z>!

Führt die lexikalische

Analyse durch

Erzeugt lexikal.

Einheiten (Token)

Page 67: Formale Sprachen und Automaten Klaus Becker 2004

67

KB

Form

ale

Sp

rach

enParserParser

<zm><z>off</z><z>low</z><z>high</z></zm>

<zm><z>off</z><z>low</z><z>high</z></zm>

<zm><z>off</z><z>low</z><z>high</z></zm>

<zm><z>off</z><z>low</z><z>high</z></zm>

Parser

<zm><z>off</z><z>low<z><z>high</z></zm>

<zm><z>off</z><z>low<z><z>high</z></zm>

<zm><z>off</z>!

<zm><z>off</z>!

Führt eine syntaktische

Analyse durch

Erzeugt „Verarbeitungs-programm“ in Normalform

Page 68: Formale Sprachen und Automaten Klaus Becker 2004

68

KB

Form

ale

Sp

rach

en

Scanner als AkzeptorScanner als Akzeptor

<zm> <z> off </z> <z>low</z><z> high</z></zm>

<zm> <z> off </z> <z>low</z><z> high</z></zm>

<zm><z>off</z><z>low</z><z>high</z></zm>

<zm><z>off</z><z>low</z><z>high</z></zm>

Verarbeite jedes Zeichen des Quelltextes.Wenn ein Endzustand verlassen wird,dann mache aus den verarbeiteten Zeichen ein neues Token.

Page 69: Formale Sprachen und Automaten Klaus Becker 2004

69

KB

Form

ale

Sp

rach

en

Parser als AkzeptorParser als Akzeptor

<zm><z>off</z><z>low</z><z>high</z></zm>

<zm><z>off</z><z>low</z><z>high</z></zm>

<zm><z>off</z><z>low</z><z>high</z></zm>

<zm><z>off</z><z>low</z><z>high</z></zm>

Verarbeite jedes Token der Tokenfolge.Wenn ein Endzustand verlassen wird,dann mache aus den verarbeiteten Token eine neue Verarbeitungseinheit.

Page 70: Formale Sprachen und Automaten Klaus Becker 2004

70

KB

Form

ale

Sp

rach

enAuftragAuftrag

Es sollen Programme entwickelt werden, mit deren Hilfe man Automatenbeschreibungen (vereinfachte Zustandsmengen) scannen bzw. parsen kann.

Es sollen Programme entwickelt werden, mit deren Hilfe man Automatenbeschreibungen (vereinfachte Zustandsmengen) scannen bzw. parsen kann.

Page 71: Formale Sprachen und Automaten Klaus Becker 2004

71

KB

Form

ale

Sp

rach

en

Scanner-PrototypScanner-Prototyp

Scan-Automat

Quelltext

Tokenfolge

Page 72: Formale Sprachen und Automaten Klaus Becker 2004

72

KB

Form

ale

Sp

rach

en

KlassendiagrammKlassendiagramm

Page 73: Formale Sprachen und Automaten Klaus Becker 2004

73

KB

Form

ale

Sp

rach

en

Scan-AlgorithmusScan-Algorithmus

beginautomat.anfangszustand;Token := '';for i := 0 to Quelltext.Count-1 do begin zeile := Quelltext[i]; for j := 1 to length(zeile) do begin e := zeile[j]; aZ := automat.getZustand; if automat.endzustand then eZ := true else eZ := false; automat.neuerZustand(e); nZ := automat.getZustand; if (eZ and (nZ <> aZ)) then begin Tokenfolge.Add(Token); Token := ''; end; if e <> ' ' then Token := Token + e; end; end;if automat.endzustand then Tokenfolge.Add(Token);end;

Page 74: Formale Sprachen und Automaten Klaus Becker 2004

74

KB

Form

ale

Sp

rach

enÜbungÜbung

Testen Sie den Scanner. Geben Sie hierzu zunächst den entwickelten Scan-Automaten für Zustandsmengen ein. Testen Sie dann verschiedene korrekte und fehlerhafte Zustandsmengenbeschreibungen.

Page 75: Formale Sprachen und Automaten Klaus Becker 2004

75

KB

Form

ale

Sp

rach

en

Parser-PrototypParser-Prototyp

Parse-Automat

Tokenfolge

Generierter Code

Page 76: Formale Sprachen und Automaten Klaus Becker 2004

76

KB

Form

ale

Sp

rach

en

KlassendiagrammKlassendiagramm

Page 77: Formale Sprachen und Automaten Klaus Becker 2004

77

KB

Form

ale

Sp

rach

en

Parse-AlgorithmusParse-Algorithmus

beginautomat.anfangszustand;Code := '';for i := 0 to Quelltext.Count-1 do begin Token := Quelltext[i]; aZ := automat.getZustand; if automat.endzustand then eZ := true else eZ := false; automat.neuerZustand(Token); nZ := automat.getZustand; if (eZ and (nZ <> aZ)) then begin Tokenfolge.Add(Code); Code := ''; end; Code := Code + Token; end;if automat.endzustand then Tokenfolge.Add(Token);end;

Page 78: Formale Sprachen und Automaten Klaus Becker 2004

78

KB

Form

ale

Sp

rach

enÜbungÜbung

Testen Sie den Parser. Geben Sie hierzu zunächst den entwickelten Parse-Automaten für Zustandsmengen ein. Testen Sie dann verschiedene korrekte und fehlerhafte Zustandsmengenbeschreibungen.

Page 79: Formale Sprachen und Automaten Klaus Becker 2004

79

KB

Form

ale

Sp

rach

en

LiteraturhinweiseLiteraturhinweise

Gasper / Leiß / Spengler / Stimm: Technische und theoretische Informatik. Bsv 1992.

Jürgen Müller: XML. Teil 1 - 4. LOG IN 5-6 (2001), Nr. 120 (2002), Nr. 121 (2002), Nr. 122/123 (2002).

Selfhtml von Stefan Münz: http://selfhtml.teamone.de/xml/

Linksammlung von Klaus Merkert: http://hsg.region-kaiserslautern.de/faecher/inf/material/xml/index.php