Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Formale Sprachen und Automaten Klaus Becker 2004.

Ähnliche Präsentationen


Präsentation zum Thema: "Formale Sprachen und Automaten Klaus Becker 2004."—  Präsentation transkript:

1 Formale Sprachen und Automaten Klaus Becker 2004

2 KB Formale Sprachen 2 ! Terminalsymbole ATagZustand = ' ' ETagZustand = ' ' ATagZustandsmenge = ' ' ETagZustandsmenge = ' ' Bezeichner = {Alphanumeric}+ ! Produktionen "Start Symbol" = ::= ATagZustand Bezeichner ETagZustand ::= ::= ::= ATagZustandsmenge ETagZustandsmenge

3 KB Formale Sprachen 3 Teil 1 Sprachbeschreibung und Spracherkennung

4 KB Formale Sprachen 4 Exkurs: XML off low high off off,Schalter,low low,Schalter,high high,Schalter,off off,Schalter,AnAus low,Schalter,AnAn high,Schalter,AusAus

5 KB Formale Sprachen 5 Was ist XML? off low high... 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 Formale Sprachen 6 Darstellung von XML-Dokumenten off low high off off,Schalter,low low,Schalter,high high,Schalter,off off,Schalter,AnAus low,Schalter,AnAn high,Schalter,AusAus Browser-Ansicht XML-Dokument

7 KB Formale Sprachen 7 Ein fehlerhaftes Dokument off low high off... Der Browser erkennt, wenn ein allgemeiner Syntaxfehler vorliegt (hier: kein passendes Ende-Tag gefunden).

8 KB Formale Sprachen 8 Noch ein fehlerhaftes Dokument off low high off,Schalter,low low,Schalter,high high,Schalter,off... Der Browser erkennt aber nicht, wenn ein spezieller Syntaxfehler vorliegt (hier: betrifft die vom Benutzer vorgesehene Struktur des Dokuments).

9 KB Formale Sprachen 9 Festlegung der Dokumentenstruktur ] >...

10 KB Formale Sprachen 10 Dokument mit festgelegtem Typ ] >...

11 KB Formale Sprachen 11 Aktivierung des Parser Automatenbeschreibungstest 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); DTD Automatentest nach J. Müller: XML, Teil 4. In: LOG IN 122/123 (2003)

12 KB Formale Sprachen 12 Automatenbeschreibungstest 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); DTD Automatentest Automatenbeschreibungstest 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); DTD Automatentest Korrekte Automatenbeschreibung off low high off... Der Parser überprüft die Dokumentenstruktur.

13 KB Formale Sprachen 13 Automatenbeschreibungstest 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); DTD Automatentest Automatenbeschreibungstest 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); DTD Automatentest Fehlerhafte Automatenbeschreibung off low high... Der Parser erkennt einen Syntaxfehler.

14 KB Formale Sprachen 14 Übersicht Aus: M. Näf: Einführung in XML, DTD und XSL.

15 KB Formale Sprachen 15 Zielsetzung Ziel ist es, Verfahren zur präzisen Festlegung von Sprachen (wie der Automatenbeschreibungssprache) zu entwickeln.... ] >...

16 KB Formale Sprachen 16 Zielsetzung Ziel ist es, Systeme zu entwickeln, mit deren Hilfe man entscheiden kann, ob eine sprachliche Beschreibung (wie eine Automatenbeschreibung) korrekt oder fehlerhaft ist. off low high...

17 KB Formale Sprachen 17 Teil 2 Sprachbeschreibung mit Grammatiken

18 KB Formale Sprachen 18 Die Sprache der Zustandsmengen z0 z1 z2 z21 z3 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 Formale Sprachen 19 Informelle Beschreibung z0 z1 z2 z21 z3 Regeln: /1/ Eine Zustandsmengenbeschreibung wird durch die Tags und eingeschlossen. /2/ Sie enthält beliebig viele, aber mindestens einen Zustand. /3/ Jeder Zustand wird durch die Tags und eingeschlossen....

20 KB Formale Sprachen 20 Das Alphabet einer Sprache z0 z1 z2 z21 z3 = {, /, 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 Formale Sprachen 21 Wörter über einem Alphabet z0 z1 z2 z21 z3 = {, /, 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: rotgelb

22 KB Formale Sprachen 22 Formale Sprachen z0 z1 z2 z21 z3 Eine (formale) Sprache über einem Alphabet ist eine Teilmenge von *. Wörter, die zur Zustandsmengen-Sprache gehören: rotgelb

23 KB Formale Sprachen 23 Syntaxdiagramme ATagZustand ETagZustand ATagZustandsmenge >

24 KB Formale Sprachen 24 Syntaxdiagramme AlphanumerischesZeichen ab...AB 01 Bezeichner AlphanumerischesZeichen Zustand BezeichnerATagZustandETagZustand

25 KB Formale Sprachen 25 Bestandteile von Syntaxdiagramme Terminalsymbole gehören zum Alphabet der Sprache. Nichtterminalsymbole sind Variablen, die als Platzhalter für syntaktische Einheiten fungieren. AlphanumerischesZeichen ab...AB 01 Bezeichner AlphanumerischesZeichen Terminalsymbol Nichtterminalsymbol

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

27 KB Formale Sprachen 27 ATagZustandsmenge Lösung Zustand Zustandsmenge ETagZustandsmenge

28 KB Formale Sprachen 28 Übersetzung in Produktionsregeln ' ' ATagZustand

29 KB Formale Sprachen 29 Übersetzung in Produktionsregeln 'a' AlphanumerischesZeichen ab...AB 01 'b'...

30 KB Formale Sprachen 30 Übersetzung in Produktionsregeln Bezeichner AlphanumerischesZeichen

31 KB Formale Sprachen 31 Übung Ergänzen Sie die fehlenden Produktionsregeln.

32 KB Formale Sprachen 32 Lösung

33 KB Formale Sprachen 33 Grammatik 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.

34 KB Formale Sprachen 34 Backus-Naur-Form ::= | ::= 'a' | 'b' |.. | 'A' | 'B' |.. | '0' |.. Die Backus-Naur-Form ist eine Kurzschreibweise für Produktionen. 'a' 'b'...

35 KB Formale Sprachen 35 Übung Beschreiben Sie die gesamte Grammatik der Zustandsmengen- sprache in Backus-Naur-Form.

36 KB Formale Sprachen 36 Wortproblem Beispiel: z0 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 Formale Sprachen 37 Worterzeugung ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'z' ' ' ' ' ' ' ' ' 'z' ' ' ' ' ' ' ' ' 'z' '0' ' ' ' ' Gegeben: z0 Gesucht: Ableitung des Wortes mit Hilfe der Produktionen Startsymbol Wort aus Terminalsymbolen

38 KB Formale Sprachen 38 Übung Kommentieren Sie die Ableitung, indem Sie für jeden Ersetzungs- schritt die benutzte Grammatikregel (Produktion) angeben. ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'z' ' ' ' ' ' ' ' ' 'z' '0' ' ' ' '

39 KB Formale Sprachen 39 Teil 3 Ein Werkzeug zur Sprachbeschreibung

40 KB Formale Sprachen 40 Spracherkennung mit Werkzeugen Siehe:

41 KB Formale Sprachen 41 Zwei-Stufen-Beschreibung Oft ist eine zweistufige Beschreibung der Sprache zweckmäßig: Zeichen:,, rotgelb, gruen,... rotgelb,,... 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 Formale Sprachen 42 Sprache der Token Alphabet: = {, /, a,..., z, A,..., Z, 0,..., 9} ::= ' ' ::= | ::= 'a' | 'b' |.. | 'A' | 'B' |.. | '0' |.. ::= ' ' Grammatik:

43 KB Formale Sprachen 43 Sprache der Tokenfolgen Alphabet: = {,,,,..., rotgelb,..., gruen,...} ::=... | rotgelb |... | gruen |... ::= ' ' ' ' ::= | ::= ' ' ' ' Grammatik:

44 KB Formale Sprachen 44 Darstellung einer Grammatik ! Terminalsymbole ATagZustand = ' ' ETagZustand = ' ' ATagZustandsmenge = ' ' ETagZustandsmenge = ' ' Bezeichner = {Alphanumeric}+ ! Produktionen "Start Symbol" = ::= ATagZustand Bezeichner ETagZustand ::= ::= ::= ATagZustandsmenge ETagZustandsmenge Zwei-stufige Darstellung beim Werkzeug GOLD Parser Builder Produktionen in BNF Reguläre Ausdrücke

45 KB Formale Sprachen 45 Ableitungsbaum

46 KB Formale Sprachen 46 Zustandsautomat Zur Analyse der Terminalsymbole benutzt das Werkzeug GOLD Parser Builder einen Automaten.

47 KB Formale Sprachen 47 Übung Aufgabe 1 Testen Sie das Werkzeug am Beispiel der Zustandsmengensprache. Aufgabe 2 Erstellen Sie eine vollständige Grammatik zur Automaten- beschreibungssprache mit Hilfe des Werkzeugs.

48 KB Formale Sprachen 48 Exkurs: Verknüpfung von Sprachen X und Y seien Sprachen über dem Alphabet. XY = {xy | x X, y Y} ist die Menge aller Worte, die sich ergeben, wenn man an ein beliebiges Wort aus X ein beliebiges Wort aus Y hängt. X 0 = { }; X 1 = X; X 2 = XX; X 3 = X 2 X = XXX;... X * = X 0 X 1 X 2 X 3 … ist die Menge aller Worte, die sich ergeben, wenn man beliebig viele (auch keine) Worte aus X aneinanderhängt. X + = X 1 X 2 X 3 X 4 … 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} X 0 = { }; X 1 = X = {a, b}; X 2 = XX = {aa, ab, ba, bb} X * = X 0 X 1 X 2 X 3 … = {, a, b, aa, ab, ba, bb,...} X + = X 1 X 2 X 3 X 4 … = {a, b, aa, ab, ba, bb,...}

49 KB Formale Sprachen 49 Exkurs: 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 X Y 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, …} = {a i b j c | i >0; j 0}

50 KB Formale Sprachen 50 Darstellung und Test regulärer Ausdrücke ! Regulärer Ausdruck L = a[a|b]*c "Start Symbol" = ::= L a(a+b)*c Beispiel 1: ! Regulärer Ausdruck L = b[a]*|[b]+ "Start Symbol" = ::= L ba*+b + Beispiel 2: ! Regulärer Ausdruck L = A{Letter}*n "Start Symbol" = ::= L A(a+b+...+Z)*n Beispiel 3:

51 KB Formale Sprachen 51 Ü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.

52 KB Formale Sprachen 52 Übung Wir betrachten Adressen nach dem http-Protokoll mit folgendem Aufbau: Beispiel: Der Einfachheit halber sollen alle Domainnamen nur aus Buchstaben bestehen. Entwickeln Sie eine Grammatik zur Beschreibung solcher Adressen. Testen Sie die Grammatik.

53 KB Formale Sprachen 53 Ü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.

54 KB Formale Sprachen 54 Teil 4 Spracherkennung mit Automaten

55 KB Formale Sprachen 55 Zielsetzung 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. Wortja / nein

56 KB Formale Sprachen 56 Vereinfachte Bezeichner 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, z Beispiele für nicht-korrekte vereinfachte Bezeichner: 0z, z10z, z01a, z

57 KB Formale Sprachen 57 Erzeugende Systeme Spracherkennungsansatz: Erzeugung von Ableitungen Alphabet: = {z, 0, 1, a} B zN N 0 N 1 N 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 Formale Sprachen 58 Analysierende Systeme Spracherkennungsansatz: 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 Formale Sprachen 59 Erkennende Automaten Zustandsmenge: Z = {Z0, Z1, Z2, Z3} Anfangszustand:z a = Z0 Endzustände: Z e = {Z2} Eingabemenge: E = {z, a, 0, 1} Überführungsfunktion: : (Z0, z) Z1; (Z0, a) Z3;... Ein erkennender Automat / Akzeptor ist ein Tupel A = (Z, z a, Z e, E, ) bestehend aus - einer endlichen Menge Z von Zuständen, - einem Anfangszustand z a Z, - einer Menge Z e Z von Endzuständen, - einer endlichen Menge E von Eingabezeichen und - einer Überführungsfunktion : Z x E Z.

60 KB Formale Sprachen 60 Die Sprache eines Akzeptors Sei A = (Z, z a, Z e, 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 z a in einen Endzustand aus Z e überführen. L(A) = {z0, z1, z00, z01, z10, z11,...}

61 KB Formale Sprachen 61 Übung Ein Akzeptor soll Zustandsbeschreibungen der folgenden Form akzeptieren: AAA AA BB BB BBBAAA B BBABB Bem.: A steht für ein beliebiges alphanumerisches Zeichen; B steht für ein Leerzeichen (blank). Werkzeuge: Automaton Simulator, Charon

62 KB Formale Sprachen 62 Übung Ein Akzeptor soll Zahlen mit folgendem Format akzeptieren: 3.0E E3... 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 Formale Sprachen 63 Teil 5 Scanner und Parser

64 KB Formale Sprachen 64 Automatenbeschreibungsübersetzer off low high... Fehler Übersetzer off low high...

65 KB Formale Sprachen 65 Vereinfachung: Zustandsmengenübersetzer off low high Fehler Übersetzer off low high

66 KB Formale Sprachen 66 Scanner off low high Scanner off low high off ! Führt die lexikalische Analyse durch Erzeugt lexikal. Einheiten (Token)

67 KB Formale Sprachen 67 Parser off low high Parser off low high off ! Führt eine syntaktische Analyse durch Erzeugt Verarbeitungs- programm in Normalform

68 KB Formale Sprachen 68 Scanner als Akzeptor off low high Verarbeite jedes Zeichen des Quelltextes. Wenn ein Endzustand verlassen wird, dann mache aus den verarbeiteten Zeichen ein neues Token.

69 KB Formale Sprachen 69 Parser als Akzeptor off low high Verarbeite jedes Token der Tokenfolge. Wenn ein Endzustand verlassen wird, dann mache aus den verarbeiteten Token eine neue Verarbeitungseinheit.

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

71 KB Formale Sprachen 71 Scanner-Prototyp Scan-Automat Quelltext Tokenfolge

72 KB Formale Sprachen 72 Klassendiagramm

73 KB Formale Sprachen 73 Scan-Algorithmus begin automat.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 Formale Sprachen 74 Ü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.

75 KB Formale Sprachen 75 Parser-Prototyp Parse-Automat Tokenfolge Generierter Code

76 KB Formale Sprachen 76 Klassendiagramm

77 KB Formale Sprachen 77 Parse-Algorithmus begin automat.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 Formale Sprachen 78 Ü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.

79 KB Formale Sprachen 79 Literaturhinweise Gasper / Leiß / Spengler / Stimm: Technische und theoretische Informatik. Bsv Jürgen Müller: XML. Teil LOG IN 5-6 (2001), Nr. 120 (2002), Nr. 121 (2002), Nr. 122/123 (2002). Selfhtml von Stefan Münz: Linksammlung von Klaus Merkert: kaiserslautern.de/faecher/inf/material/xml/index.php


Herunterladen ppt "Formale Sprachen und Automaten Klaus Becker 2004."

Ähnliche Präsentationen


Google-Anzeigen