Fachschaft Informatik Informatik 12 Kapitel 1 - Formale Sprachen Michael Steinhuber König-Karlmann-Gymnasium Altötting 6. November 2016 Folie 1/55
Inhaltsverzeichnis 1 Aufbau von Sprachen 2 Grammatiken formaler Sprachen 3 Endliche Automaten Erkennende Automaten Arbeitsweise eines endlichen erkennenden Automaten Noch ein Zustand für Automaten Weitere Optimierungen 4 Grenzen endlicher Automaten Kontextfreie Grammatik Chomsky Hierarchie Turingmaschine Folie 2/55
1.1 Aufbau von Sprachen Übung: Google Übersetzer The alphabet of a formal language is the set of symbols, letters, or tokens from which the strings of the language may be formed. Folie 3/55
Buchstabensalat Gmäeß eneir Sutide eneir elgnihcesn Uvinisterät ist es nchit witihcg, in wlecehr Rneflogheie die Bstachuebn in eneim Wrot snid, das ezniige was wcthiig ist, ist, dass der estre und der leztte Bstabchue an der ritihcegn Pstoiion snid. Der Rset knan ein ttoaelr Bsinöldn sien, tedztorm knan man ihn onhe Pemoblre lseen. Das ist so, wiel wir nciht jeedn Bstachuebn enzelin leesn, snderon das Wrot als gseatems. a a Quelle: www.fehlerhaft.de/wissen/buchstabensalat.html, Stand 22.09.2013 Folie 4/55
Folie 5/55
Definition Sprachen Es gibt natürliche und formale Sprachen. Natürliche Sprache: Der Wortschatz einer natürlichen Sprache (z.b. Deutsch, Englisch) ist umfangreicher, wodurch eine höhere Flexibilität erreicht wird. Wegen folgender Punkte lässt sich eine natürliche Sprache nicht als eine einfache Folge von Strings charakterisieren: Es gibt unterschiedliche Wortschätze (Bayerisch, Friesisch,...). Die Sprache verändert sich mit der Zeit (z.b. Fräulein, Innovation...). Wortkonstrukte sind verständlich obwohl falsch (z.b. Bstabchue). Wortkonstrukte sind weder richtig noch falsch (z.b. next to whom did you stand? ). Folie 6/55
Definition Sprachen (Fortsetzung) Formale Sprache: Eine formale Sprache (z.b. Java, Robot Karol) ist fest definiert, wodurch sie einfacher zu verarbeiten ist. Eine formale Sprache ist definiert als eine Folge von String (= Sequenz von Terminal-Symbolen). Terminal-Symbole bilden die endliche Menge (bei englisch ca. 400000) der verfügbaren Worte, also den Wortschatz. Ein String kann in Phrasen unterteilt werden (z.b. Nomen-Phrasen - np, Verb-Phrasen - vp, etc). Diese Phrasen erlauben die Erstellung von syntaktischen Regeln sowie eine Zuordnung von Semantik. Folie 7/55
Überblick natürliche Sprache z.b. Deutsch, Englisch Besitzt eine hohe Flexibilität, ist aber ungenau(z.b. Bank). Verändert sich laufend. Wortkonstrukte sind verständlich obwohl falsch. formale Sprache z.b. Java, RobotKarol Ist eindeutig und ist daher einfacher zu verarbeiten. Wortschatz ist geringer. Folie 8/55
Definition: Syntax und Symantik Programme sind Texte, die in Programmiersprachen (formale Sprachen), deren Syntax und Semantik genau definiert werden. Die Syntax bestimmt, welche Programmtexte zulässig, d.h., korrekt formuliert sind, sie wird i.a. formal definiert. Die Semantik beschreibt die Bedeutung korrekt formulierter Programmtexte als Verarbeitungsschritte von Rechenprozessen, sie wird meist informell definiert. Folie 9/55
Beispiel: Syntaxregeln Deutsch R1: Satz Subjekt Prädikat Objekt. Folie 10/55
Beispiel: Syntaxregeln Deutsch R1: Satz Subjekt Prädikat Objekt. R2: Subjekt Substantiv Artikel Substantiv Folie 10/55
Beispiel: Syntaxregeln Deutsch R1: Satz Subjekt Prädikat Objekt. R2: Subjekt Substantiv Artikel Substantiv R3: Prädikat Verb Folie 10/55
Beispiel: Syntaxregeln Deutsch R1: Satz Subjekt Prädikat Objekt. R2: Subjekt Substantiv Artikel Substantiv R3: Prädikat Verb R4: Objekt Substantiv Artikel Substantiv Folie 10/55
Beispiel: Syntaxregeln Deutsch R1: Satz Subjekt Prädikat Objekt. R2: Subjekt Substantiv Artikel Substantiv R3: Prädikat Verb R4: Objekt Substantiv Artikel Substantiv R5: Artikel der die ein Folie 10/55
Beispiel: Syntaxregeln Deutsch R1: Satz Subjekt Prädikat Objekt. R2: Subjekt Substantiv Artikel Substantiv R3: Prädikat Verb R4: Objekt Substantiv Artikel Substantiv R5: Artikel der die ein R6: Substantiv Reiseführer Sehenswürdigkeit Paul Auto Folie 10/55
Beispiel: Syntaxregeln Deutsch R1: Satz Subjekt Prädikat Objekt. R2: Subjekt Substantiv Artikel Substantiv R3: Prädikat Verb R4: Objekt Substantiv Artikel Substantiv R5: Artikel der die ein R6: Substantiv Reiseführer Sehenswürdigkeit Paul Auto R7: Verb zeigt fährt Folie 10/55
Anwenden von Regel R1: Satz Subjekt Prädikat Objekt. Folie 11/55
Anwenden von Regel R2: Subjekt Substantiv Artikel Substantiv R3: Prädikat Verb R4: Objekt Substantiv Artikel Substantiv Folie 12/55
Anwenden von Regel R5: Artikel der die ein R6: Substantiv Reiseführer Sehenswürdigkeit Paul Auto R7: Verb zeigt fährt Folie 13/55
Folie 14/55
Definition: Terminal- Nichtterminalsymbol Ein Terminalsymbol ist ein Symbol, das einzeln nicht weiter durch eine Produktionsregel ersetzt werden kann. Ein Nichtterminalsymbol ist ein Symbol, das nicht in den endgültigen Wörtern vorkommt. Nichtterminalsymbole kommen nur in Zwischenschritten einer Ableitung vor und werden durch das Anwenden von Regeln nach und nach ersetzt, bis nur noch Terminalsymbole vorhanden sind. Folie 15/55
Definition: Syntaxbaum Ein Syntaxbaum veranschaulicht die syntaktische Struktur eines Satzes. Die Blätter des Syntaxbaums sind Terminalsymbole, die inneren Knoten Nichtterminalsymbole. Folie 16/55
Definition: Wort Der Begriff Wort unterscheidet sich im Kontext der natürlichen und der formalen Sprachen: natürliche Sprache Zusammenhängende und korrekte Buchstabenketten (ohne Leerzeichen) mit eigenständiger Bedeutung. Hallo, Computer,... formale Sprache Zeichenketten aus den Symbolen des Alphabets, die in dieser Sprache als korrekt definiert sind (z.b. syntaktisch korrektes Programm). SELECT * FROM buch WHERE true Folie 17/55
1.2 Grammatiken formaler Sprachen Definition: formale Grammatik Eine formale Grammatik G besteht aus vier Elementen: V: Vokabular ist eine endliche Menge an Symbolen. Σ: Die Terminalsymbole sind eine Teilmenge von V (Σ V). P: endliche Menge von Produktionsregeln. S: Startsymbol V \Σ ist das erste Nichtterminal, mit dem die Erzeugung einer gültigen Zeichenkette begonnen wird. Folie 18/55
Produktionsregeln in der EBNF Definition: EBNF Eine formale Sprache wird durch eine formale Grammatik G = (V,Σ,P,S) definiert. Für die Darstellung der Produktionsregeln P gibt es die standartisierte EBNF (=erweiterte Backus-Naur-Form). Folie 19/55
Beispiel: Grammatik einer E-Mail-Adresse G = (V,Σ,P,S) mit V = { 0, 1,..., 9 } { a, b,..., z } { @,,,.,! } {E-Mail-Adresse, Benutzerkennung} {Domäne, Einzelzeichen, Buchstabe} {Ziffer, Unterdomäne, Topleveldomäne} Σ = { 0, 1,..., 9 } { a, b,..., z } { @,,,.,! } S = { E-Mail-Adresse } Folie 20/55
Definition: Startsymbol Ausgehend von einem Startsymbol S werden durch Produktionsregeln (PR) aus der Regelmenge P neue Zeichenfolgen abgeleitet. PR 1 E-Mail-Adresse = Benutzerkennung @ Domäne Wiederholung Stehen Elemente innerhalb geschweifter Klammern, können diese Elemente bei der Ableitung kein, ein oder beliebig oft wiederholt werden. Da das Einzelzeichen mindestens einmal vorkommen muss erhalten wir: PR 2 Folie 21/55 Benutzerkennung = Einzelzeichen {Einzelzeichen}
Alternativen Alternativen bei der Ableitung werden durch das Trennzeichen angegeben. PR 3 Einzelzeichen = Buchstabe Ziffer -.! PR 4 Ziffer = 0 1... 9 PR 5 Buchstabe = a b... z... ist dabei eine Aufzählung um z.b. nicht alle 26 Buchstaben angeben zu müssen. PR 6 Domäne = Unterdomäne{. Unterdomäne}. Topleveldomäne Folie 22/55
Option Elemente innerhalb eckiger Klammern können abgeleitet werden, müssen aber nicht. PR 7 Topleveldomäne = Buchstabe Buchstabe [ Buchstabe ][ Buchstabe ] Gruppieren Zusammengehörige Elemente können durch runde Klammern gruppiert werden: PR 8 Unterdomäne = (Buchstabe Ziffer){Buchstabe Ziffer - }(Buchstabe Ziffer) Folie 23/55
Zusammenfassung der Produktionsregeln P = {PR 1, PR 2, PR 3, PR 4, PR 5, PR 6, PR 7, PR 8 } mit PR 1 E-Mail-Adresse = Benutzerkennung @ Domäne PR 2 Benutzerkennung = Einzelzeichen {Einzelzeichen} PR 3 Einzelzeichen = Buchstabe Ziffer -.! PR 4 Ziffer = 0 1... 9 PR 5 Buchstabe = a b... z PR 6 Domäne = Unterdomäne{. Unterdomäne}. Topleveldomäne PR 7 Topleveldomäne = Buchstabe Buchstabe [Buchstabe ][ Buchstabe ] PR 8 Unterdomäne =(Buchstabe Ziffer) {Buchstabe Ziffer - } (Buchstabe Ziffer) Folie 24/55
Überblick Produktionsregeln in EBNF Wiederholung {ELEMENT} ELEMENT wird kein, ein oder beliebig oft wiederholt. Alternativen EL1 EL2 Entweder EL1 oder EL2 wird abgeleitet. Aufzählungen EL1... ELX Aufzählung einer beliebigen Anzahl an Alternativen. Option [ELEMENT] ELEMENT wird kein oder einmal abgeleitet. Gruppierung (ELEMENTE) ELEMENTE werden zusammengefasst. Folie 25/55
Beispiel: Datum Gib eine Grammatik zu Darstellung eines Datums in der Form 1. Januar 2013 an. Folie 26/55
Beispiel: Datum Gib eine Grammatik zu Darstellung eines Datums in der Form 1. Januar 2013 an. Folie 26/55
Syntaxdiagramme Definition Syntaxdiagamm Ein Syntaxdiagramm wird in der Informatik benutzt, um die Syntax von Produktionsregeln P graphisch darzustellen. Die beiden Darstellungen sind gleich mächtig: Jede formale Sprache in EBNF lässt sich in einem Syntaxdiagramm darstellen und umgekehrt. Folie 27/55
Beispiel Kalender Folie 28/55
Übung: Syntaxdiagramme Folie 29/55
Übung: Syntaxdiagramme Folie 30/55
Lösung Folie 31/55
Übung: KFZ-Kennzeichen Skizziere das Syntaxdiagramm zu den hier angegebenen Grammatikregeln in EBNF: P = {PR 1, PR 2, PR 3, PR 4, PR 5, PR 6, PR 7,} mit PR 1 KFZ-Kennzeichen = Zulassungsbezirk - Buchstabenkombination Zahl PR 2 Zulassungsbezirk = Buchstabe [Buchstabe] [Buchstabe] PR 3 Buchstabenkombination = Buchstabe Buchstabe Buchstabe PR 4 Zahl = ZifferOhneNull {Ziffer} PR 5 Buchstabe = A B... Z PR 6 ZifferOhneNull = 1 2... 9 PR 7 Ziffer = 0 ZifferOhneNull Folie 32/55
Lösung Folie 33/55
1.3 Endliche Automaten Definition: endlicher Automat Ein endlicher Automat besteht aus endlich vielen Zuständen S und Übergängen δ zwischen diesen Zuständen. EA = (Σ,S,s 0,δ,F). Σ Eingabealphabet S Menge von Zuständen s 0 Anfangszustand aus S δ Zustandsübergangsfunktion: δ : S Σ S F Menge von Endzuständen Folie 34/55
Erkennende Automaten Erkennender Automat zu KFZ-Kennzeichen Folie 35/55
Erkennende Automaten Erkennender Automat zu KFZ-Kennzeichen Folie 36/55
Noch ein Zustand für Automaten Definition: Fangzustand Unter einem Fangzustand versteht man einen Zustand in einem Automaten, der durch kein Eingabezeichen verlassen werden kann. Erreicht wird dieser Zustand durch das Lesen eines ungültigen Zeichens. Folie 37/55
Noch ein Zustand für Automaten Folie 38/55
Übung: Vierertester Ein Vierertester prüft, ob eine Dualzahl durch 4 teilbar ist, d.h. ob die beiden letzten Ziffern Nullen sind. Z.B. sind die Binärzahlen 110100 und 100 durch 4 teilbar, 1101 und 0010011 jedoch nicht. Bestimme ein Eingabealphabet für die Binärzahlen. Skizziere einen endlichen erkennenden Automaten mit Start- und Endzustand. Implementiere den Automaten in Java. Folie 39/55
Lösung: Vierertest Folie 40/55
Übung: Paragraph G = (V,Σ,P,S) mit P ={ Gesetztextverweis = Paragraph [ Artikel ], Paragraph = ZahlOhne0 {Zahl}, Artikel = ( ZahlOhne0 [ Zahl ] ), ZahlOhne0 = 1 2... 9, Zahl = 0 ZahlOhne0 } Folie 41/55
Weitere Optimierungen Statische Variablen und Methoden In Programmiersprachen ist eine statische Variable (Schlüsselwort static ) eine Variable, die während der gesamten Ausführzeit des Programms, und nicht erst bei der Erzeugung eines Objekts der Klasse, genau einmal definiert ist. Statische Methoden dürfen nur auf statische Variablen zugreifen. Beispiel: Folie 42/55
Weitere Optimierungen Entwurfsmuster Einzelstück Das Entwurfsmuster Einzelstück stellt sicher, dass von einer Klasse nur ein einziges Objekt existiert. Diese Instanz ist üblicherweise global verfügbar. Umsetzung in Java: Attribut mit Datentyp der Klasse, das die einzige Instanz enthält. private-konstruktor, damit dieser nicht aufgerufen werden kann. Eine statische Konstruktor-Ersatzmethode (z.b. public static [KLASSENNAME] objektgeben() ). Folie 43/55
Entwurfsmuster Zustand Im Entwurfsmuster des Zustandes spielen drei Akteure eine Rolle. Der Kontext definiert die clientseitige Schnittstelle und verwaltet die separaten Zustandsklassen. Außerdem tauscht er diese bei einem Zustandsübergang aus. Der Zustand definiert eine einheitliche Schnittstelle aller Zustandsobjekte und implementiert gegebenenfalls ein Standardverhalten. Der konkrete Zustand wiederum implementiert das Verhalten, das mit dem Zustand des Kontextobjektes verbunden ist. a a Quelle: http://de.wikipedia.org/wiki/zustand_%28entwurfsmuster%29, 20. Oktober 2013 Folie 44/55
Entwurfsmuster Zustand Folie 45/55
Folie 46/55
Übung: E-Mail Folie 47/55
1.4 Grenzen endlicher Automaten Klammerproblem Jeder Taschenrechner beherrscht die Klammerung von Ausdrücken. Dabei gibt es zu jeder öffnenden Klammer eine schließende Klammer. Beispiel: ((3+5) : 6) (10 : (24 12)+44) =? Folie 48/55
Übung: Vereinfachte Sprache Vereinfacht lässt sich das Problem mit der Sprache L = {ab,aabb,aaabbb,...} = {a n b n n > 0} darstellen. Diese Sprache kann als Teil der Klammersprache gesehen werden. Plane einen Zustandsautomaten, der diese Problem lösen kann. Folie 49/55
Problem Ein endlicher Automat kann problemlos erweitert werden, es müssen nur jeweils zwei weitere neue Zustände einführt werden. Im allgemeinen Fall müsste der Automat aber unendlich viele Zustände besitzen. Dies widerspricht aber der Definition eines endlichen Automaten (endlich viele Zustände). Um die Sprache zu erkennen, ist es notwendig, dass sich der Automat irgendwie die Anzahl der n-mal gelesenen Buchstaben merkt. Folie 50/55
Lösung: Kellerautomat für kontextfreie Grammatiken Folie 51/55
Lösung: Kellerautomat für kontextfreie Grammatiken 1 1 Weitere Informationen unter http://de.wikipedia.org/wiki/kellerautomat Folie 52/55
Lösung: Kellerautomat für kontextfreie Grammatiken Folie 53/55
Chomsky Hierarchie Chomsky-Typ Grammatikart Sprache Typ 0 unbeschränkt aufzählbare Sprachen Typ 1 kontextsensitiv kontextsensitive Sprachen Typ 2 kontextfrei kontextfreie Sprachen Typ 3 rechtslinear reguläre Sprachen akzeptierende Maschine Turingmaschine linear beschränkte Turingmaschine Kellerautomat endlicher Automat Folie 54/55
Links zur Turingmaschine http://de.wikipedia.org/wiki/turing_maschine http://www.youtube.com/watch?v=mzmz-bvwhbe Folie 55/55