InfoHome | Themen | Projekte | Links | Software |
|
Formale GrammatikEine formale Grammatik G ist gegeben durch ein 4-Tupel, bestehend aus
Formal: G = (N, Σ, P, S), S ∈ N, N ∩ Σ= ∅ Nichtterminale werden gewöhnlich durch Großbuchstaben, Terminale durch Kleinbuchstaben repräsentiert. ProduktionsregelnEine Regel besteht aus einer linken (Prämisse) und einer rechten Seite (Konklusion), die jeweils ein Wort bestehend aus Terminalen und Nichtterminalen sind. Die linke Seite muss mindestens ein Nichtterminal beinhalten und die rechte Seite kann dabei im Gegensatz zur linken Seite auch das leere Wort (im folgenden mit εbezeichnet) sein, also das Wort der Länge Null. Eine Regel kann auf ein Wort, bestehend aus Terminalen und Nichtterminalen, angewendet werden, wobei ein beliebiges Vorkommen der linken Seite der Regel im Wort durch die rechte Seite der Regel ersetzt wird. Man schreibt Produktionen in der Form A → w, was bedeutet, dass das Nicht-Terminalsymbol A durch die Zeichenfolge w ersetzt werden darf. Eine Folge von Anwendungen von Produktionsregeln bezeichnet man als Ableitung .
Beispiele für Produktionen sind:
Aufgrund dieser Regeln können dann gültige Texte produziert werden. Nimmt man C als Startsymbol, so ergibt sich zum Beispiel die folgende Ableitung: C ⇒ Bcc ⇒Abcc ⇒Aabcc ⇒Aaabcc ⇒... ⇒aaaaabcc Der obenstehende Text aaaaabcc kann also durch sukzessive Anwendung der Regeln aus dem Startsymbol C produziert werden (daher das Wort Produktionen). Alle Texte, die so produziert werden können, sind gültig im Sinne der formalen Grammatik. Gültige Texte wären hier abcc, aabcc, aaabcc, ..., der Text bcbca ist dagegen ungültig.
Formale SpracheEine Grammatik G erzeugt eine formale Sprache L(G) die aus allen Wörtern besteht, die nur aus Terminalen bestehen und vom Startsymbol in einer endlichen Anzahl von Schritten abgeleitet werden können. BeispieleWohlgeformte KlammertermeLässt man in einem - korrekt gebildeten - arithmetischen Term die Zahlen, Operatoren und Bezeichner weg, d.h. betrachtet man nur die Klammern, so erhält man Zeichenfolgen der Form (()), ()() oder (()()), die sogenannten wohlgeformten Klammerterme. Ein solcher Term muss gleich viele öffnende wie schließende Klammern enthalten, und an keiner Stelle darf die Anzahl der schließenden die der öffnenden Klammern überschreiten. Die Produktionsregeln zur Erzeugung wohlgeformter Klammerterme lauten wie folgt:
Die dritte Regel dient dazu, Klammerterme aneinanderzureihen; die zweite Regel erlaubt eine rekursive Verschachtelung von Klammern und die erste Regel gewährleistet einen Abbruch des Erzeugungsvorgangs. Die Zeichenfolge (())(()()) lässt sich durch folgende Ableitung erzeugen: S ⇒ SS ⇒ (S)S ⇒(())(S) ⇒(())(SS) ⇒(())(()S) ⇒(())(()()) Die drei Regeln (1), (2) und (3) lassen sich auch kürzer schreiben: S ⇒ () | (S) | SS Das heisst, Produktionsregeln mit der gleichen linken Seite werden zu einer einzigen Regel zusammengefasst: Das Zeichen "|" bedeutet "oder". In diesem Beispiel sind die Klammern '(' und ')' die Terminalsymbole, das Zeichen 'S' ist das einzige Nicht-Terminalsymbol, welches auch Startsymbol sein muss. Im Sinne der oben angegebenen Definition ist die Grammatik gegeben durch G = ({"(",")"}, {S}, {S → () | (S) | SS}, S) Ausgewogene BitmusterWir betrachten die Sprache über dem Alphabet {0, 1}, bei der jedes Wort gleich viele Nullen und Einsen enthält (z.B.: 01, 10, 001011, 1000011011). Immer, wenn eine Null erzeugt ist, müssen wir uns merken, dass zum Ausgleich noch eine Eins anzufügen ist; entsprechendes gilt für die Einsen. Al Nicht-Terminalsymbole verwenden wir S, A und B, wobei S das Startzeichen ist, d.h. aus S sollen alle Wörter der Sprache abgeleitet werden können. Aus A sollen alle Wörter hergeleitet werden, die eine Eins mehr als Nullen enthalten; entsprechendes für B. Diese Überlegung führt zur Grammatik mit folgenden Produktionen:
Betrachten wir eine Ableitung: S ⇒ 1B ⇒11BB ⇒11B0 ⇒110S0 ⇒1100A0 ⇒110010 Es gibt durchaus auch andere Produktionsregeln, mit denen sich genau dieselben Wörter herleiten lassen. Zum Beispiel so:
Das Wort 110010 wird nunmehr so hergeleitet: S ⇒ 1S0 ⇒1SS0 ⇒1S010 ⇒110010 Zwei Grammatiken heissen äquivalent, wenn sie die gleiche formale Sprache erzeugen. AufgabenAufgabe 1Welche formale Sprache wird von der Grammatik mit den Terminalen {a, b} und den Produktionen S → a | b | aSa | bSb erzeugt? Leiten Sie mindestens fünf Wörter her und versuchen Sie, eine charakteristische Eigenschaft aller Wörter dieser Sprache zu finden. Aufgabe 2Geben Sie eine Grammatik an, welche die formale Sprache {anb2n | n>0} = {abb, aabbbb, aaabbbbbb, ...} erzeugt. Aufgabe 3
Geben Sie zwei Grammatiken G1 und G2 der formalen Sprache an, die von obigem Automaten akzeptiert wird. Die Grammatik G1 soll mit einem Nichtterminal auskommen, G2 soll genau zwei Nichtterminale verwenden. Aufgabe 4Gegeben sei die Grammatik G1 = (N, Σ, P, S) mit
[Anmerkung: ε ist das leere Wort.]
|
© 2004-2024 M. Blanke · Ursulaschule · Kleine Domsfreiheit 11-18 · 49074 Osnabrück |