Formale Grammatiken
Beschreibung
Mit einer
formalen Grammatik lassen sich ausgehend von einem Startsymbol
S (auch
Startvariable genannt) Produktionsregeln aus einer Regelmenge
P anwenden, um neue Zeichenfolgen zu erzeugen, welche wiederum weiter ersetzt werden können. Diesen Vorgang nennt man auch Ableitung.
Ebenso wie auf eine gegebene Zeichenfolge mehrere Regeln gleichzeitig anwendbar sein können, muss es nicht immer nur eine Stelle in der Zeichenfolge geben, auf die eine Regel passt. Formale Grammatiken schreiben keine Reihenfolge vor. Alle nur aus Terminalsymbolen bestehenden Wörter, die sich aus dem Startsymbol ableiten lassen, zählen zur von der Grammatik beschriebenen Sprache.
Definition
Eine
formale Grammatik ist ein 4-Tupel
G=(V,Σ,P,S) bestehend aus:
- V, einer endlichen Menge, welche als Vokabular bezeichnet wird,
- Σ⊂V, einer Teilmenge von V, die Alphabet genannt wird und deren Elemente Terminalsymbole heißen,
- P⊂(V∗∖Σ∗)×V∗, einer endlichen Menge von Produktionsregeln, sowie
- S∈V∖Σ, dem Startsymbol.
Die
Menge N=V∖Σ ist die
Menge von
Nichtterminalsymbolen oder auch
Metasymbolen.
Eine
formale Grammatik G kann auch als das
Tupel (N,Σ,P,S) angegeben werden.
Ableitung
Eine Regel
R→Q∈P einer gegebenen Grammatik
G besagt, dass in einem Wort
w∈V∗ mit
R als Infix, dieses durch das Wort
Q ersetzt werden kann, so dass ein neues Wort
w′ mit
Q als Infix entsteht. Man spricht hierbei auch davon, dass
w in
w′ mit der Grammatik
G bzw. durch die Regel
R→Q übergeht, oder auch, dass
w′ aus
w abgeleitet wurde. Dies kann durch
w↦R→Qw′ notiert werden (häufig auch
⇒ anstatt
↦). Soll nur ausgedrückt werden, dass in der Grammatik
G das Wort
w′ aus
w entstehen kann, ohne eine Regel zu benennen, schreibt man statt dessen
w↦Gw′ (ist die Grammatik aus dem Kontext offensichtlich, auch einfach
w↦w′). Demnach ist ein solcher Übergang von
w in
w′ eine Transitionsrelation, die eine natürliche Erweiterung von
P auf alle möglichen
V∗-Kontexte darstellt, nämlich:
- ↦:={(u∘R∘v,u∘Q∘v)∣(R,Q)∈P,u,v∈V∗}.
Gibt es nun eine Folge von Wörtern
w0,w1,…,wn∈V∗, bei der gilt, dass für jede
natürliche Zahl i mit
0≤i<n das Wort
wi in
wi+1 übergeht
(wi↦Gwi+1), so ist
wn in
n Schritten aus
w0 ableitbar, was durch
w0↦Gnwn dargestellt wird. Eine solche Wortfolge
w0,w1,…,wn wird
Ableitung oder
Rechnung von
w0 in
wn der Länge
n genannt. Weiterhin heißt
w in
w′ ableitbar, wenn es mindestens ein
n∈N0 gibt, so dass
w′ in
n Schritten aus
w ableitbar ist. Wenn
w in
w′ ableitbar ist, so wird dies durch die Schreibweise
w↦G∗w′ dargestellt. Dabei wird zusätzlich definiert, dass für jedes Wort
w∈V∗ gilt, dass
w↦G∗w ist, so dass die
Relation ↦G∗ die reflexiv-transitive
Hülle der
Relation ↦G ist.
Die von einer Grammatik erzeugte Sprache
Die von der Grammatik
G erzeugte
formale Sprache L(G) ist genau diejenige Sprache, die aus allen Wörtern besteht, die zum einen nur aus Terminalsymbolen bestehen und die zum anderen vom Startsymbol mit einer endlichen Anzahl von Schritten abgeleitet werden können:
L(G):={w∈Σ∗∣S↦G∗w}
Dabei ist es egal, in welcher Reihenfolge die Produktionsregeln auf die abgeleiteten Wörter angewandt werden, oder ob es mehrere Möglichkeiten gibt, um ein Wort
w aus
S abzuleiten. Zwei Grammatiken
G1 und
G2 sind genau dann äquivalent, wenn die durch
G1 und
G2 erzeugten Sprachen gleich sind:
G1 ist äquivalent zu
G2:⟺L(G1)=L(G2).
Beispiele
G1 sei eine Grammatik mit den Terminalsymbolen
{a,b}, den Nichtterminalsymbolen
{S,A,B}, dem Startsymbol
S und mit den Regeln
- SSBABSBbAbAa→→→→→→→ABSεABbbbabaa(1)(2)(3)(4)(5)(6)(7)
Dabei ist
ε das leere Wort, welches ein Wort der Länge 0 ist. Diese Grammatik
G1 definiert die Sprache aller Wörter der Form
anbn mit
n∈N0. So sind auf Grund der folgenden
Ableitungen die Wörter
ε,ab und
aabb Elemente der durch
G1 beschriebenen Sprache:
- S↦ε, mittels Regel (2),
- S↦ABS↦Ab↦ab, mittels der Regeln (1), (4) und (6),
- S↦ABS↦ABABS↦ABAb↦AABb↦AAbb↦Aabb↦aabb, mittels der Regeln (1),(1),(4),(3), (5), (6) und (7).
Es gibt aber noch andere Möglichkeiten, um das Wort
aabb aus
S abzuleiten.
Eine weitere Grammatik, die dieselbe Sprache beschreibt, ist die kontextfreie Grammatik
G2 mit den Regeln:
S→aSb ∣ ε
Jede rekursiv aufzählbare Sprache wird von mehreren (und zwar
abzählbar unendlich vielen) Grammatiken erzeugt. Allerdings gibt es auch Sprachen, die sich von keiner Grammatik erzeugen lassen.
Klassen von Grammatiken
Grammatiken werden
Klassen zugeordnet, die sich durch Gemeinsamkeiten auszeichnen. Die bekannteste Klassifikation beschrieben Noam Chomsky und Marcel Schützenberger mit der
Chomsky-Hierarchie.
Weitere Sprachklassen
- Monotone Grammatiken beschreiben die gleiche Sprachklasse wie die kontextsensitiven Grammatiken. Etwas strenger sind die wachsend kontextsensitiven Grammatiken, die eine Teilklasse der kontextsensitiven Sprachklasse beschreiben.
- Deterministisch kontextfreie Grammatiken beschreiben die deterministisch kontextfreien Sprachen. Sie werden auch durch die LR(k)-Grammatiken beschrieben, welche für den Compilerbau von Bedeutung sind. Andere im Compilerbau bekannte Grammatiken sind LL(k)-Grammatiken und LF(k)-Grammatiken.
Das ist ein Mittel, das Paradies nicht zu verfehlen: auf der einen Seite einen Mathematiker, auf der anderen einen Jesuiten; mit dieser Begleitung muß man seinen Weg machen, oder man macht ihn niemals.
Friedrich der Große
Anbieterkеnnzeichnung: Mathеpеdιa von Тhοmas Stеιnfеld
• Dοrfplatz 25 • 17237 Blankеnsее
• Tel.: 01734332309 (Vodafone/D2) •
Email: cο@maτhepedιa.dе