Upload
isaura
View
60
Download
0
Embed Size (px)
DESCRIPTION
Formale Sprachen und Automaten. Klaus Becker 2004. Formale Sprachen. ! Terminalsymbole ATagZustand = '' ETagZustand = '' ATagZustandsmenge = '' ETagZustandsmenge = '' Bezeichner = {Alphanumeric}+ ! Produktionen - PowerPoint PPT Presentation
Citation preview
Formale Sprachen und Formale Sprachen und AutomatenAutomaten
Klaus Becker2004
2
KB
Form
ale
Spra
chen
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
3
KB
Form
ale
Spra
chen
Teil 1 Teil 1
Sprachbeschreibung und Spracherkennung
4
KB
Form
ale
Spra
chen
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>
5
KB
Form
ale
Spra
chen
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)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.
6
KB
Form
ale
Spra
chen
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
7
KB
Form
ale
Spra
chen
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).
8
KB
Form
ale
Spra
chen
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).
9
KB
Form
ale
Spra
chen
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>
10
KB
Form
ale
Spra
chen
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>
11
KB
Form
ale
Spra
chen
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)
12
KB
Form
ale
Spra
chen
<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>
Der Parser überprüft die Dokumentenstruktur.
13
KB
Form
ale
Spra
chen
<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>
Der Parser erkennt einen Syntaxfehler.
14
KB
Form
ale
Spra
chenÜbersichtÜbersicht
Aus: M. Näf: Einführung in XML, DTD und XSL. www.internet-kompetenz.ch/xml/
15
KB
Form
ale
Spra
chen
ZielsetzungZielsetzungZiel 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>
16
KB
Form
ale
Spra
chen
ZielsetzungZielsetzungZiel 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>
17
KB
Form
ale
Spra
chen
Teil 2 Teil 2
Sprachbeschreibung mit Grammatiken
18
KB
Form
ale
Spra
chen
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.
19
KB
Form
ale
Spra
chen
Informelle BeschreibungInformelle Beschreibung<zm><z>z0</z><z>z1</z><z>z2</z><z>z21</z><z>z3</z></zm>
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....
20
KB
Form
ale
Spra
chen
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:
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:
21
KB
Form
ale
Spra
chen
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.
Das Alphabet der Zustandsmengen-Sprache:
Wörter über diesem Alphabet:
<zm><z>rotgelb</z></zm>
<a><z3
22
KB
Form
ale
Spra
chen
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 *.
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:
Problem: Festlegung aller Wörter, die zur Sprache gehören
23
KB
Form
ale
Spra
chen
SyntaxdiagrammeSyntaxdiagrammeATagZustand
< z >
ETagZustand< / z >
ATagZustandsmenge< z m
ETagZustandsmenge< / z m
>
>
24
KB
Form
ale
Spra
chen
SyntaxdiagrammeSyntaxdiagrammeAlphanumerischesZeichen
a b ... A B ... 0 1 ...
BezeichnerAlphanumerischesZeic
hen
ZustandBezeichn
erATagZusta
ndETagZusta
nd
25
KB
Form
ale
Spra
chen
Bestandteile von SyntaxdiagrammeBestandteile von Syntaxdiagramme
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 ...
BezeichnerAlphanumerischesZeic
hen
Terminalsymbol
Nichtterminalsymbol
26
KB
Form
ale
Spra
chen
ÜbungÜbungErgänzen Sie die Sprachbeschreibung um Syntaxdiagramme für Zustandsmengen. Beachten Sie, dass eine Zustandsmenge beliebig viele, aber mindestens einen Zustand hat.
27
KB
Form
ale
Spra
chen
ATagZustandsmenge
LösungLösung
Zustand
Zustandsmenge
ETagZustandsmenge
28
KB
Form
ale
Spra
chen
Übersetzung in ProduktionsregelnÜbersetzung in Produktionsregeln
<ATagZustand> '<' 'z' '>'
ATagZustand< z >
29
KB
Form
ale
Spra
chen
Übersetzung in ProduktionsregelnÜbersetzung in Produktionsregeln
<AlphanumerischesZeichen> 'a'
AlphanumerischesZeichen
a b ... A B ... 0 1 ...
<AlphanumerischesZeichen> 'b'
...
30
KB
Form
ale
Spra
chen
Übersetzung in ProduktionsregelnÜbersetzung in ProduktionsregelnBezeichner
AlphanumerischesZeichen
<Bezeichner> <AlphanumerischesZeichen> <Bezeichner> <AlphanumerischesZeichen> <Bezeichner>
31
KB
Form
ale
Spra
chen
ÜbungÜbung
Ergänzen Sie die fehlenden Produktionsregeln.
32
KB
Form
ale
Spra
chenLösungLösung
<Zustand> <ATagZustand> <Bezeichner> <ETagZustand> <Zustaende> <Zustand>
<Zustandsmenge> <ATagZustandsmenge> <Zustaende> <ETagZustandsmenge>
<Zustaende> <Zustand> <Zustaende>
33
KB
Form
ale
Spra
chen
GrammatikGrammatikEine 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.
34
KB
Form
ale
Spra
chen
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.
<Bezeichner> <AlphanumerischesZeichen> <Bezeichner> <AlphanumerischesZeichen> <Bezeichner>
<AlphanumerischesZeichen> 'a'<AlphanumerischesZeichen> 'b'
...
35
KB
Form
ale
Spra
chen
ÜbungÜbungBeschreiben Sie die gesamte Grammatik der Zustandsmengen-sprache in Backus-Naur-Form.
36
KB
Form
ale
Spra
chen
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
Gesucht: Ableitung des Wortes mit Hilfe der Produktionen der Grammatik ausgehend vom Startzustand
37
KB
Form
ale
Spra
chen
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>
Gesucht: Ableitung des Wortes mit Hilfe der Produktionen
Startsymbol
Wort aus Terminalsymbolen
38
KB
Form
ale
Spra
chen
ÜbungÜbungKommentieren 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' '>'
39
KB
Form
ale
Spra
chen
Teil 3 Teil 3
Ein Werkzeug zur Sprachbeschreibung
40
KB
Form
ale
Spra
chen
Spracherkennung mit WerkzeugenSpracherkennung mit Werkzeugen
Siehe: www.devincook.com/goldparser/
41
KB
Form
ale
Spra
chen
Zwei-Stufen-BeschreibungZwei-Stufen-BeschreibungOft ist eine zweistufige Beschreibung der Sprache zweckmäßig:Zeichen:
<zm>, <z>, rotgelb, gruen, ...
<zm><z>rotgelb</z></zm>, <zm></z>, ...
Sätze / Tokenfolgen:
Wörter / Token:
<, >, /, a, ..., z, A, ..., Z, 0, ..., 9
Festlegung der korrekten Token (Wörter)
Festlegung der korrekten Tokenfolgen (Sätze)
42
KB
Form
ale
Spra
chen
Sprache der TokenSprache der TokenAlphabet: = {<, >, /, 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:
43
KB
Form
ale
Spra
chen
Sprache der TokenfolgenSprache der TokenfolgenAlphabet: = {<z>, </z>, <zm>, </zm>, ..., rotgelb, ..., gruen, ...}
<Bezeichner> ::= ... | rotgelb | ... | gruen | ...<Zustand> ::= '<z>' <Bezeichner> '</z>' <Zustaende> ::= <Zustand> | <Zustand> <Zustaende><Zustandsmenge> ::= '<zm>' <Zustaende> '</zm>'
Grammatik:
44
KB
Form
ale
Spra
chen
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“
Produktionen in BNF
Reguläre Ausdrücke
45
KB
Form
ale
Spra
chen
AbleitungsbaumAbleitungsbaum
46
KB
Form
ale
Spra
chen
ZustandsautomatZustandsautomatZur Analyse der Terminalsymbole benutzt das Werkzeug „GOLD Parser Builder“ einen Automaten.
47
KB
Form
ale
Spra
chen
ÜbungÜbungAufgabe 1Testen Sie das Werkzeug am Beispiel der Zustandsmengensprache.Aufgabe 2Erstellen Sie eine vollständige Grammatik zur Automaten-beschreibungssprache mit Hilfe des Werkzeugs.
48
KB
Form
ale
Spra
chen
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.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, ...}
49
KB
Form
ale
Spra
chen
Exkurs: Reguläre AusdrückeExkurs: Reguläre AusdrückeGebeben 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}
50
KB
Form
ale
Spra
chen
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:
! Regulärer AusdruckL = b[a]*|[b]+
"Start Symbol" = <S><S> ::= L
ba*+b+
Beispiel 2:
! Regulärer AusdruckL = A{Letter}*n
"Start Symbol" = <S><S> ::= L
A(a+b+...+Z)*n
Beispiel 3:
51
KB
Form
ale
Spra
chen
ÜbungÜbungErstellen 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.
52
KB
Form
ale
Spra
chen
ÜbungÜbungWir betrachten Adressen nach dem http-Protokoll mit folgendem Aufbau:http://www.hostname.subdomain.....domain.topleveldomainBeispiel:http://www.google.deDer Einfachheit halber sollen alle Domainnamen nur aus Buchstaben bestehen.Entwickeln Sie eine Grammatik zur Beschreibung solcher Adressen. Testen Sie die Grammatik.
53
KB
Form
ale
Spra
chen
ÜbungÜbung
HTTP-date = rfc1123-date | rfc850-date | asctime-daterfc1123-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 4DIGITdate1 = 2DIGIT SP month SP 4DIGITdate2 = 2DIGIT "-" month "-" 2DIGITdate3 = month SP ( 2DIGIT | ( SP 1DIGIT ))time = 2DIGIT ":" 2DIGIT ":" 2DIGITwkday = "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.
54
KB
Form
ale
Spra
chen
Teil 4 Teil 4
Spracherkennung mit Automaten
55
KB
Form
ale
Spra
chen
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.
Wort ja / nein
56
KB
Form
ale
Spra
chen
Vereinfachte BezeichnerVereinfachte BezeichnerBeispiel: 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
57
KB
Form
ale
Spra
chen
Erzeugende SystemeErzeugende SystemeSpracherkennungsansatz: Erzeugung von Ableitungen
Alphabet: = {z, 0, 1, a}
B zNN 0 N 1N 0N N 1N
Grammatik:
B zN z1 # z1N z10 # z10N...
Erzeugung von Ableitungen:
Wort:z1001
Erzeuge systematisch Ableitungen mit Hilfe von Grammatikregeln und überprüfe, ob das gegebene Wort auf diese Weise erzeugt werden kann.
58
KB
Form
ale
Spra
chen
Analysierende SystemeAnalysierende SystemeSpracherkennungsansatz: 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.
Endzustand
Anfangszustand
59
KB
Form
ale
Spra
chen
Erkennende AutomatenErkennende Automaten
Zustandsmenge: Z = {Z0, Z1, Z2, Z3}Anfangszustand: za = Z0Endzustä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.
60
KB
Form
ale
Spra
chen
Die Sprache eines AkzeptorsDie Sprache eines AkzeptorsSei 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, ...}
61
KB
Form
ale
Spra
chen
ÜbungÜbungEin 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
62
KB
Form
ale
Spra
chen
ÜbungÜbungEin Akzeptor soll Zahlen mit folgendem Format akzeptieren:3.0E-120.24E3...Präzisieren Sie zunächst die Grammatik dieser Zahldarstellung. Entwickeln Sie anschließend einen geeigneten Akzeptor.Werkzeuge: GOLD Parser Builder, Automaton Simulator, Charon
63
KB
Form
ale
Spra
chen
Teil 5 Teil 5
Scanner und Parser
64
KB
Form
ale
Spra
chen
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>
Fehler
Übersetzer
<?xml version="1.0"?><automat name="Klimaanlage"> <zustandsmenge> <zustand>off</zustand> <zustand>low</zustand> <zustand>high<zustand> </zustandsmenge> ...</automat>
65
KB
Form
ale
Spra
chen
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>
Fehler
Übersetzer
<zm> <z> off </z> < z>low</z><z> high</z><zm>
66
KB
Form
ale
Spra
chenScannerScanner
<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>!
Führt die lexikalische
Analyse durch
Erzeugt lexikal.
Einheiten (Token)
67
KB
Form
ale
Spra
chen
ParserParser<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>!
Führt eine syntaktische
Analyse durch
Erzeugt „Verarbeitungs-programm“ in Normalform
68
KB
Form
ale
Spra
chen
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>
Verarbeite jedes Zeichen des Quelltextes.Wenn ein Endzustand verlassen wird,dann mache aus den verarbeiteten Zeichen ein neues Token.
69
KB
Form
ale
Spra
chen
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>
Verarbeite jedes Token der Tokenfolge.Wenn ein Endzustand verlassen wird,dann mache aus den verarbeiteten Token eine neue Verarbeitungseinheit.
70
KB
Form
ale
Spra
chenAuftragAuftrag
Es sollen Programme entwickelt werden, mit deren Hilfe man Automatenbeschreibungen (vereinfachte Zustandsmengen) scannen bzw. parsen kann.
71
KB
Form
ale
Spra
chen
Scanner-PrototypScanner-Prototyp
Scan-Automat
Quelltext
Tokenfolge
72
KB
Form
ale
Spra
chen
KlassendiagrammKlassendiagramm
73
KB
Form
ale
Spra
chen
Scan-AlgorithmusScan-Algorithmusbeginautomat.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;
74
KB
Form
ale
Spra
chen
ÜbungÜbungTesten Sie den Scanner. Geben Sie hierzu zunächst den entwickelten Scan-Automaten für Zustandsmengen ein. Testen Sie dann verschiedene korrekte und fehlerhafte Zustandsmengenbeschreibungen.
75
KB
Form
ale
Spra
chen
Parser-PrototypParser-Prototyp
Parse-Automat
Tokenfolge
Generierter Code
76
KB
Form
ale
Spra
chen
KlassendiagrammKlassendiagramm
77
KB
Form
ale
Spra
chen
Parse-AlgorithmusParse-Algorithmusbeginautomat.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;
78
KB
Form
ale
Spra
chen
ÜbungÜbungTesten Sie den Parser. Geben Sie hierzu zunächst den entwickelten Parse-Automaten für Zustandsmengen ein. Testen Sie dann verschiedene korrekte und fehlerhafte Zustandsmengenbeschreibungen.
79
KB
Form
ale
Spra
chen
LiteraturhinweiseLiteraturhinweiseGasper / 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