1 / 86

Formale Sprachen Teil 2

Formale Sprachen Teil 2. Klaus Becker 2006. Theorie formaler Sprachen. S  aAS S  bBS S  c Aa  aA Ab  bA Ac  ca Ba  aB Bb  bB Bc  cB. Komplexität von Grammatiken Automatenmodelle Zusammenhänge zwischen Grammatiken und Automaten. S  (T) T   T  (T) .

viet
Download Presentation

Formale Sprachen Teil 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Formale SprachenTeil 2 Klaus Becker 2006

  2. Theorie formaler Sprachen S  aAS S  bBSS  cAa  aA Ab  bA Ac  caBa  aBBb  bBBc  cB • Komplexität von Grammatiken • Automatenmodelle • Zusammenhänge zwischen Grammatiken und Automaten S  (T)T  T  (T) A  [BB  ]B  (CC  xDD  )B

  3. Beispiel: Klammersprachen Korrekt geklammerte Rechenausdrücke: (56 – 34) * 17((34 – 17) * (89 + 11))(((45 – 6) * (67 / 5)) – (6 * 5)) ... XML-Dokument: <?xml version="1.0"?><!-- Created with JFLAP 4.0b13. --><structure> <type>grammar</type> <!--The list of productions.--> <production> <left>S</left> <right>a</right> </production> <production> <left>S</left> <right>A</right> </production> <production> <left>A</left> <right>a</right> </production></structure> HTML-Dokument: <html> <head> ... </head> <body> <h1>Weiterbildungskurse Informatik</h1> <p>Der Weiterbildungslehrgang Inf....</p> <p>Der Lehrgang besteht ...</p> <p>Der Lehrgang schliesst ...</p> </body></html>

  4. Zielsetzung und Vorgehensweise Ziel ist es, die Beschreibung von Klammersprachen mit Hilfe von Grammatiken und die Erkennung von Klammersprachen mit Hilfe von Automaten genauer zu untersuchen. Diese Untersuchungen führen direkt zur Theorie über formale Sprachen und Automaten. Um den Arbeits- und Schreibaufwand etwas zu verringern, werden die zu betrachtenden Sprachen zunächst strukturgetreu vereinfacht.

  5. Teil 1 Reguläre Sprachen

  6. Vereinfachtes HTML Informelle Beschreibung: Ein vereinfachtes HTML-Dokument besteht aus einem Kopf mit Titelangabe und einem Rumpf mit Abschnitten. Es sind keine Umlaute erlaubt. Es sollen auch keine Tabellen, Links, Bilder etc. integriert werden. Der unten abgebildete HTML-Quelltext ist in diesem Sinne ein vereinfachtes HTML-Dokument. <html><head><title>Weiterbildungskurs Informatik</title></head><body><p>Der Weiterbildungslehrgang Informatik in Rheinland-Pfalz ist ein Ersatzstudium der Informatik für Lehrerinnen und Lehrer, die bereits eine Lehrbefaehigung in einem naturwissenschaftlichen Fach haben.</p><p>Der Lehrgang besteht aus sechs Wochenkursen, in denen jeweils typische Themen der Informatik bearbeitet werden.</p><p>Der Lehrgang schliesst dann mit einer Pruefung zum Erwerb der Unterrichtserlaubnis fuer das Grundfach Informatik ab.</p></body></html>

  7. Strukturanalyse Klammerstruktur: Hier werden verschiedene Sorten von Klammern benutzt. Die verschiedenen Klammersorten können geschachtelt werden, aber nur in einer bestimmten Form. Der Rumpf-Teil hat z. B. die Struktur <body><p>...</p><p>...</p>...<p>...</p></body>. Wir abstrahieren im Folgenden von der Darstellung der Klammern und betrachten Klammerausdrücke der Gestalt [(x)(x)...(x)]. <body><p>Der Weiterbildungslehrgang ... in einem naturwissenschaftlichen Fach haben.</p><p>Der Lehrgang besteht aus ... Themen der Informatik bearbeitet werden.</p><p>Der Lehrgang schliesst ... fuer das Grundfach Informatik ab.</p></body> Klammersprache K3: Das Alphabet von K3 ist die Zeichenmenge { [, ], (, ), x }. Zu K3 gehören alle Wörter über dem Alphabet { [, ], (, ), x }, die mit [ beginnen, dann eine beliebige Anzahl (evtl. auch 0) von Ausdrücken der Gestalt (x) enthalten und mit ] enden. Bsp.: [], [(x)], [(x)(x)], [(x)(x)(x)], ...

  8. Aufgabe Entwickeln Sie eine (mehrere) Grammatik(en) zur Beschreibung der Klammersprache K3. Entwickeln Sie auch einen (mehrere) endliche Automaten zur Erkennung der Klammersprache K3.

  9. Beschreibung und Erkennung von K3 Klammersprache K3: Das Alphabet von K3 ist die Zeichenmenge { [, ], (, ), x }. Zu K3 gehören alle Wörter über dem Alphabet { [, ], (, ), x }, die mit [ beginnen, dann eine beliebige Anzahl (evtl. auch 0) von Ausdrücken der Gestalt (x) enthalten und mit ] enden. Bsp.: [], [(x)], [(x)(x)], [(x)(x)(x)], ... Grammatik G1 für K3: A  []A  [B]B  CB  CBC  (x) Endlicher Automat für K3: [ ] q0 q1 q2 K3GR1.jff ( ) Grammatik G2 für K3: A  [BB  ]B  (CC  xDD  )B x q3 q4 K3GR2.jff

  10. Erkennung von K3 Beobachtung:Es fällt auf, dass die Grammatik G2 genau das Verhalten des endlichen Automaten A mit Hilfe von Produktionen nachbildet. Grammatik G1 für K3: A  []A  [B]B  CB  CBC  (x) Endlicher Automat für K3: B [ ] q0 q1 q2 K3GR1.jff A ( ) Grammatik G2 für K3: A  [BB  ]B  (CC  xDD  )B x q3 q4 C D K3GR2.jff

  11. Aufgabe Öffnen Sie die Datei K3GR2.jff. Lassen Sie JFlap zu dieser Grammatik automatisch einen endlichen Automaten erzeugen: <Convert><Convert Right-Linear Grammar to FA><Show All>. Gehen Sie auch umgekehrt vor und lassen Sie sich von JFlap zum Automaten K3DA1.jff die entsprechende Grammatik erzeugen.

  12. Aufgabe Öffnen Sie die Datei K3GR1.jff. Lassen Sie JFlap zu dieser Grammatik automatisch einen endlichen Automaten erzeugen: <Convert><Convert Right-Linear Grammar to FA><Show All>. Warum funktioniert das nicht?

  13. Aufgabe Wir betrachten die Sprache der Binärzahlen. Entwickeln Sie eine Grammatik zu dieser Sprache, die das Verhalten des gezeigten endlichen Automaten mit Hilfe von Produktionen nachbildet. Testen Sie Ihren Lösungsvorschlag mit Hilfe von JFlap. 10 1 q0 q1 0 q2

  14. Aufgabe Wir betrachten die Sprache der Binärzahlen. Versuchen Sie jetzt, umgekehrt zu einer Grammatik für diese Sprache einen entsprechenden endlichen Automaten zu entwickeln. Testen Sie Ihren Lösungsvorschlag mit Hilfe von JFlap. Was fällt hier auf? A  0A  1A  1BB  0BB  1BB  0B  1

  15. Rechtlineare Grammatik Eine Produktion heißt rechtslinear genau dann, wenn auf der linken Seite ein Nichtterminalsymbol steht und die rechte Seite folgende Gestalt hat: - ein Terminalsymbol gefolgt von einem Nichtterminalsymbolen oder- ein Terminalsymbol. alternativ:- ein Terminalsymbol gefolgt von einem Nichtterminalsymbolen oder- das leere Wort. Eine Grammatik heißt rechtslinear / regulär genau dann, wenn alle Produktionen der Grammatik rechtslinear sind. Beispiele für rechtslineare Produktionen: A  0 A  1BB  0 B  1B  0B B  1B Beispiele für rechtslineare Produktionen: A  0C C   A  1BB  0D B  1D D  B  0B B  1B Beispiele für nicht-rechtslineare Produktionen: A  0B1 A  A1

  16. Äquivalenzsatz SatzZu jedem endlichen Automaten gibt es eine rechtslineare Grammatik, mit der die Sprache des Automaten erzeugt werden kann. Endlicher Automat: Entsprechende Grammatik: A  1B A  0CB  0B B  1B B  C  0D C  1D C  D  0D D  1D 10 1 q0 q1 B A 10 0 Idee: Zu jedem Zustandsübergang wird eine entsprechende Produktion gebildet. Zu jedem Endzustand wird eine entsprechende Produktion mit dem leeren Wort als rechter Seite hinzugefügt. 10 q2 q3 C D

  17. Schwierigkeit bei der Umkehrung Bei der Umwandlung einer rechtslinearen Grammatik in einen endlichen Automaten kann ein sog. nichtdeterministischer Automat entstehen. Von einem Zustand aus können bei gleicher Eingabe Übergänge in verschiedene Zustände erfolgen. Rechtslineare Grammatik A  1B A  0C A  1C C  B  0B B  1BB  0D B  1D D   Nichtdeterministischer Endlicher Automat: 10 A 10 1 q0 q2 q3 10 B D Nicht-determinismus q1 C

  18. Äquivalenzsatz SatzZu jeder rechtslinearen Grammatik gibt es einen nichtdeterministischen endlichen Automaten, der die von der Grammatik erzeugte Sprache erkennt. Rechtslineare Grammatik A  1B A  0C A  1C C  B  0B B  1BB  0D B  1D D   Nichtdeterministischer Endlicher Automat: 10 A 10 1 q0 q2 q3 Idee: Man geht wie oben beschrieben vor. 10 B D Nicht-determinismus q1 C

  19. Aufgabe Öffnen Sie die Datei BinZahlNA1.jff. Dieser nichtdeterministische Automat erkennt die Sprache der Binärzahlen. Lassen Sie diesen Automaten verschiedene Wörter verarbeiten (z. B. 1001). Machen Sie sich hieran die „Arbeitsweise“ eines nichtdeterministischen Automaten klar.

  20. Aufgabe Öffnen Sie die Datei BinZahlNA1.jff. Dieser nichtdeterministische Automat erkennt die Sprache der Binärzahlen. Lassen Sie JFlap diesen Automaten in einen deterministischen Automaten umwandeln: <Convert to DFA>.

  21. Äquivalenzsatz SatzZu jedem nichtdeterministischen endlichen Automaten gibt es einen deterministischen endlichen Automaten, der dieselbe Sprache erkennt. Idee: Jede Menge von Zuständen des NEA ergibt einen Zustand des DEA. Nicht benötigte Zustände des DEA werden weggelassen.

  22. Äquivalenzsatz SatzZu jedem nichtdeterministischen endlichen Automaten gibt es einen deterministischen endlichen Automaten, der dieselbe Sprache erkennt. Bemerkung: Da jeder deterministische Automat auch ein nichtdeterministischer Automat ist, gilt trivialerweise auch die Umkehrung: Zu jedem deterministischen Automaten gibt es einen nichtdeterministischen Automaten, der dieselbe Sprache erkennt. Folgerung: Deterministische und nichtdeterministische Automaten sind gleich mächtige Sprachverarbeitungsmodelle / erkennen dieselben Sprachen.

  23. Aufgabe Öffnen Sie die Datei BinZahlDA2.jff. Dieser deterministische Automat erkennt die Sprache der Binärzahlen. Lassen Sie JFlap diesen Automaten in einen regulären Ausdruck umwandeln: <Convert FA to RE>. Exportieren Sie anschließend diesen regulären Ausdruck und lassen Sie ihn wieder in einen endlichen Automaten umwandeln. Was zeigen diese Experimente?

  24. Äquivalenzsatz Satz (Kleene)Jede durch einen endlichen Automaten erkennbare Sprache kann durch einen regulären Ausdruck beschrieben werden.Jede durch einen regulären Ausdruck beschreibbare Sprache kann durch einen endlichen Automaten erkannt werden.

  25. Reguläre Sprachen Eine Sprache heißt regulär genau dann, wenn sie durch einen regulären Ausdruck dargestellt werden kann. Bemerkung: Eine Sprache ist regulär genau dann, wenn sie - durch einen regulären Ausdruck dargestellt werden kann / - von einem deterministischen endlichen Automaten erkannt werden kann / - von einem nichtdeterministischen endl. Automaten erkannt werden kann / - von einer rechtslinearen Grammatik erzeugt werden kann. Die genannten Sprachbeschreibungs- bzw. Sprachverarbeitungskonzepte sind demnach alle gleich mächtig.

  26. Teil 2 Kontextfreie Sprachen

  27. Rechenausdrücke Rechenausdrücke können Klammern enthalten, mit denen die Reihenfolge von Berechnungen genau festgelegt wird. Beispiele für korrekt geklammerte Rechenausdrücke: ((56 – 34) * 17)((34 – 17) * (89 + 11))... Beispiele für inkorrekt geklammerte Rechenausdrücke: )13 + 12) * 4((25 – 16) * 7...

  28. Vereinfachte Rechenausdrücke Informelle Beschreibung: Wir betrachten nur Rechenterme, die vollständig geklammert sind. Jede Rechenoperation muss umklammert werden – wie z. B. bei (12+3). Eine Rechenoperation bezieht sich auf Zahlen oder Rechenterme – wie z. B. bei ((13 – 7) * 4). Rechenterme können beliebig komplex verschachtelt werden – wie z. B. bei (((45 – 6) * (67 / 5)) – (6 * 5)). Klammerstruktur: Zu jeder öffnenden Klammer muss es eine passend folgende schließende Klammer geben. Lässt man die eigentlichen Rechnungen weg, so ergeben sich Klammerausdrücke der Gestalt ((()())()). Klammersprache: Das Alphabet der Sprache ist die Zeichenmenge { (, ) }. Zur Sprache gehören alle Wörter über dem Alphabet { (, ) }, die zu jeder öffnenden Klammer die passende schließende Klammer haben. Bsp.: (), (()), (()()), ..., ((())()(()(()()))), ...

  29. Aufgabe Wir vereinfachen die Klammersprache weiter (s. u.). Versuchen Sie, eine Grammatik zur Beschreibung von K2 sowie einen endlichen Automaten zur Erkennung von K2 zu entwickeln. Klammersprache K2: Das Alphabet von K2 ist die Zeichenmenge { (, ) }. Zu K2 gehören alle Wörter über dem Alphabet { (, ) }, die nach einer beliebigen Anzahl öffnender Klammern genau dieselbe Anzahl schließender Klammern enthält. Bsp.: (), (()), ((())), (((()))), ... Bem.: Statt ( bzw. ) benutzt man häufig die Zeichen a bzw. b. Bsp.: Statt ((())) schreibt man aaabbb.

  30. Beschreibung von Klammerausdrücken Klammersprache K2: Das Alphabet von K2 ist die Zeichenmenge { (, ) }. Zu K2 gehören alle Wörter über dem Alphabet { (, ) }, die nach einer beliebigen Anzahl öffnender Klammern genau dieselbe Anzahl schließender Klammern enthält. Bsp.: (), (()), ((())), (((()))), ... Eine Grammatik für K2 lässt sich leicht angeben: Grammatik: S  (A)A  A  (A) Schwieriger ist es dagegen, einen endlichen Automaten zur Erkennung von K2 anzugeben.

  31. Erkennung von Klammerausdrücken Problem: Gesucht ist ein endlicher Automat, der die Sprache K2 der Klammerausdrücke erkennt. (((()))) ok EA ((()) Fehler Schwierigkeit: Der endliche Automat (EA) muss sich merken, wie viele Klammern geöffnet sind. Zum Merken hat ein endlicher Automat nur Zustände zur Verfügung. Mit endlich vielen Zuständen kann man sich aber nicht beliebig viele geöffnete Klammern merken.

  32. Die Sprache {anbn|n aus IN} Satz Es gibt keinen endlichen Automaten, der die Klammersprache L = {anbn | n  1} akzeptiert. Wir betrachten eine Sprache, die die „Klammer-auf-Klammer-zu“-Struktur abstrahierend beschreibt. Diese Sprache besteht aus den Wörtern über dem Alphabet {a, b}, bei denen auf eine bestimmte Anzahl von a´s („Klammer auf“) genau dieselbe Anzahl von b´s („Klammer zu“) folgt. Also: L = {ab, aabb, aaabbb, aaaabbbb, ...} Im Folgenden soll nachgewiesen werden, dass kein noch so komplizierter oder spitzfindig ausgedachter Automat in der Lage ist, die Klammersprache L zu akzeptieren. Wir benutzen hierzu – wie in der Informatik üblich – ein mathematisches Beweisverfahren, also eine exakte, logisch zweifelsfreie Argumentationskette.

  33. Beweis Annahme: Es gibt einen endlichen Automaten A, der L akzeptiert. A hat endliche viele Zustände. m bezeichne die Anzahl dieser Zustände. (Zur Illustration der Beweisidee gehen wir hier von m = 15 aus.) Wir betrachten jetzt ein Wort w = akbk mit k > m. (Zur Illustration der Beweisidee gehen wir hier von k = 16 aus. D. h., w = a16b16 besteht aus 16 a´s gefolgt von 16 b´s.) Das Wort w hat dann einen Anfangsteil, der mehr a‘s enthält als A Zustände hat. Bei der Verarbeitung des a-Anfangsteils von w muss zwangsläufig mindestens ein Zustand von A mindestens zweimal durchlaufen werden. (Zur Illustration der Beweisidee gehen wir hier davon aus, dass der Zustand, der mit dem dritten a erreicht wird, auch wieder mit dem siebten a erreicht wird.). Somit ist eine Schleife entstanden, die erst mit Beginn des b-Endteils wieder verlassen wird.

  34. Beweis Die folgende Grafik soll die Situation verdeutlichen:- A hat m Zustände (hier m = 15).- A akzeptiert w = akbk mit k > m (hier w = a16b16).- Bei d. Verarbeitung des a-Anfangsteils von w wird ein Zustand mindestens zweimal durchlaufen werden (hier wird q3 insgesamt 4 mal durchlaufen). Weitere spezielle Eigenschaften von A, die in der Grafik zu erkennen sind, sind für den Beweisgang nicht von Bedeutung. Grafik entnommen aus: http://hsg.region-kaiserslautern.de/faecher/inf/material/automaten/anbn/index.php

  35. Beweis Der a-Anfangsteil lässt sich zerlegen in die Teile „vor der Schleife“, „in der Schleife“, „nach der Schleife“. Es gilt: w = akbk = ap(aq)iarbk mit p+q*i+r=k (hier: w = a16b16 = a3a4a4a4a1b16). Die Zahl i beschreibt die Anzahl der Schleifendurchläufe beim gegebenen w. (In der Grafik erkennt man direkt, dass A auch w´ = a4b16 oderw´´ = a8b16 akzeptiert.) Grafik entnommen aus: http://hsg.region-kaiserslautern.de/faecher/inf/material/automaten/anbn/index.php

  36. Beweis Wir betrachten ein w´ = ap(aq)jarbk mit einem j, das von i verschieden ist – z. B. j = i+1. Das neue Wort w´ hat dann mehr a´s als b´s. Jetzt gilt:- w´ wird von A akzeptiert (da w´ genau wie w den AZ in einen EZ überführt).- w´ gehört nicht zur Sprache L (da w´ mehr a’s als b’s enthält). A akzeptiert also ein Wort, das nicht zur Sprache L = {anbn | n  1} gehört. Das ist ein Widerspruch zur Annahme, dass A die Sprache L akzeptiert. Die Annahme muss daher falsch sein. Die Aussage des Satzes muss folglich wahr sein.

  37. Folgerungen Es gibt Sprachen (wie z. B. die gezeigte Klammersprache), die - nicht von einem endlichen Automaten erkannt werden können, - nicht mit einer regulären Grammatik beschrieben werden können, - nicht mit einem regulären Ausdruck beschrieben werden können. Dieses Ergebnis zeigt insbesondere eine prinzipielle Grenze von endlichen Automaten auf: Sie sind nicht in der Lage, komplexere Sprachen wie z. B. eine Klammersprache zu erkennen.

  38. Zielsetzung Um auch Klammersprachen erkennen zu können, muss das bisher betrachtete Automatenkonzept erweitert werden. Ziel der folgenden Betrachtungen ist es, ein erweitertes Automatenmodell und seine Spracherkennungsmöglichkeiten zu erkunden.

  39. Aufgabe Starten Sie das Programm „Automaton Simulator“ und öffnen Sie die Datei „Klammersprache1“ im Verzeichnis „MaterialAutomatonSimulator“. Lassen Sie den gezeigten erweiterten Automaten verschiedene „abstrakte Klammerausdrücke“ wie aabb oder aaab oder aabbbb verarbeiten. Versuchen Sie herauszufinden, wie Spracherkennung mit diesem erweiterten Automaten funktioniert.

  40. Ein Automat mit Zusatzspeicher öffnen öffnen öffnen aabb aabb aabb aa a push a push a schliessen schliessen aabb a pop pop Keller Kellerautomat Der Automat wird um einen Zusatzspeicher (Keller) erweitert, mit dem er sich die „öffnenden“ Klammern merken kann.

  41. Keller / Stapel EinKeller / Stapel ist ein Speicher, der nach dem LIFO-Prinzip (last in, first out) arbeitet.: push(...) top pop ... auf den Stapel legen liefert das oberste Stapelelement das oberste Stapelelement entfernen

  42. Kellerautomat – Version 1 EinKellerautomat ist ein um einen Kellerspeicher erweiterter Automat: - Der Kellerautomat verfügt zusätzlich über ein Kelleralphabet, das alle Zeichen enthält, die im Keller gespeichert werden können. - Die Zustandsübergänge hängen nicht nur von den Eingaben, sondern auch vom jeweils obersten Kellerzeichen ab.- Bei jedem Übergang wird eine Kelleroperation durchgeführt. Oberstes Kellerzeichen / Eingabezeichen: Kelleroperation Beim vorliegenden Kellerautomaten wird ein Wort genau dann akzeptiert, wenn der Keller nach Abarbeitung des Wortes leer ist.

  43. Aufgabe Starten Sie das Programm „JFLAP“ und öffnen Sie die Datei „Klammersprache1“ im Verzeichnis „MaterialJFlap“. Lassen Sie den gezeigten erweiterten Automaten verschiedene „abstrakte Klammerausdrücke“ wie aabb oder aaab oder aabbbb verarbeiten. Was ist anders bei diesem Kellerautomaten?

  44. Kellerautomat – Version 2 Anfangszustand Aktueller Zustand aabb aabb aabb q0: öffnen q0: öffnen q0: öffnen a, Z; aZ a, a; aa b, a;  aaZ aZ Eingabe-zeichen Oberstes Kellerzeichen Oberstes Kellerzeichen neue Kellerzeichen Z aabb aabb q1: schliessen q1: schliessen q2: korrekt b, a;  , Z; Z Endzustand aZ Leere Eingabe Z Z Kellerstart-zeichen

  45. Kellerautomat – Version 2 EinKellerautomat ist ein um einen Kellerspeicher erweiterter Automat: - Der Kellerautomat verfügt zusätzlich über ein Kelleralphabet, das alle Zeichen enthält, die im Keller gespeichert werden können. Hierzu gehört auch das Kellerstartzeichen, das zu Beginn im Keller gespeichert ist.- Die Zustandsübergänge hängen nicht nur von den Eingaben, sondern auch vom jeweils obersten Kellerzeichen ab.- Bei jedem Übergang wird eine Kelleroperation durchgeführt. Das oberste Kellerzeichen wird dabei durch eine (ggf. leere) Folge „neuer“ Zeichen ersetzt. - Oft erlaubt man zusätzlich, dass auch spontane Übergänge stattfinden können (d. h. dass leere Eingaben verarbeitet werden) und dass Zustandsübergänge nicht-deterministisch erfolgen können.

  46. Kellerautomat – Version 2 Eingabezeichen (evtl. leer) , oberstes Kellerzeichen ; Folge von neuen Kellerzeichen Beim vorliegenden Kellerautomat wird ein Wort genau dann akzeptiert, wenn sich der Kellerautomat nach Abarbeitung des Wortes in einem Endzustand befindet.

  47. Aufgaben Entwickeln Sie einen Kellerautomaten, der verallgemeinerte Klammerausdrücke der folgenden Gestalt erkennt. Die Sprache dieser Klammerausdrücke wird im Folgenden K2´genannt. ((x)(x)), (((x)((x)))(x)) Entwickeln Sie einen Kellerautomaten, der vereinfachte Rechenausdrücke mit Binärzahlen erkennt. Bsp.: ((100 – 11) * 101)((11010 – 101) * (111 + 1100))

  48. Ein Blick auf die Grammatiken Wir betrachten Klammersprachen im Vergleich: Klammersprache K3: K3 = { [], [(x)], [(x)(x)], [(x)(x)(x)], ... } Alphabet: { [, ], (, ), x }. Produktionen: A  []A  [B]B  CB  CBC  (x) Klammersprache K2´: K2´ = {((x)(x)), (((x)((x)))(x))... } Alphabet: { (, ), x }. Produktionen: A  BA  BAB  (C)B  (A)C  x Anhand der Grammatiken kann man hier – zumindest auf den ersten Blick – nicht unterscheiden, welche der beiden Sprachen komplexer ist. Die Situation ändert sich, wenn man zur ersten Sprache eine einfachere Grammatik angibt.

  49. Ein Blick auf die Grammatiken Wir betrachten Klammersprachen im Vergleich: Klammersprache K3: K3 = { [], [(x)], [(x)(x)], [(x)(x)(x)], ... } Alphabet: { [, ], (, ), x }. Produktionen: A  [BB  ]B  (CC  xDD  )B Klammersprache K2´: K2´ = {((x)(x)), (((x)((x)))(x))... } Alphabet: { (, ), x }. Produktionen: A  BA  BAB  (C)B  (A)C  x Die Grammatik zur Sprache K3 ist rechtslinear, während die Grammatik zur Sprache K2´ eine komplexere Struktur hat. Auf der rechten Seite einer Produktion stehen hier komplexere Wörter aus Terminal- und Nichtterminalsymbolen.

More Related