Zum Inhalt springen

Formale Grammatik

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 6. Februar 2005 um 16:27 Uhr durch Piefke (Diskussion | Beiträge) (typo). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Formale Grammatiken sind mathematische Modelle von Grammatiken, die so genannte formale Sprachen erzeugen und besonders in der theoretischen Informatik, insbesondere bei Berechenbarkeitstheorie und dem Compilerbau Anwendung finden.

Grundlagen

Eine formaler Text besteht aus Symbolen, die Terminalsymbole genannt werden. In der formalen Theorie werden hier oft etwa Kleinbuchstaben verwendet, in Programmiersprachen jedoch noch andere Symbole wie Satzzeichen und Schlüsselwörter wie FOR, IF, PROGRAM, ... .

Ein Text ist eine Folge von Kleinbuchstaben, also etwa .

Eine formale Grammatik erlaubt die Unterscheidung von grammatisch korrekten, also gültigen, Texten von ungültigen.

Formale Grammatiken verwenden Pseudosymbole, sogenannte Nichtterminalsymbole, die im Text nicht auftauchen. In der Theorie verwendet man oft Großbuchstaben. Diese Symbole wirken wie Platzhalter, die aufgrund von Regeln durch andere Platzhalter oder Terminalsymbole oder eine beliebige Kombination von Platzhaltern und Terminalsymbolen ersetzt werden. Die Regeln produzieren aus einer Folge von Terminalsymbolen und Nichtterminalsymbolen andere Folgen. Beispiele für solche Regeln wären

Ein Nichtterminalsymbol wird als Startsymbol definiert. Aufgrund der Regeln können dann gültige Texte produziert werden. Nimmt man als Startsymbol, so ergibt sich im Beispiel:

Der obenstehende Text kann also durch sukzessive Anwendung der Regeln aus dem Startsymbol produziert werden. Die Regeln heißen daher auch Produktionsregeln oder Produktionen. Alle Texte, die so produziert werden können, sind gültig im Sinne der formalen Grammatik.

Gültige Texte wären hier

Der Text ist ungültig.

Definition

Eine formale Grammatik ist gegeben durch ein 4-Tupel, bestehend aus einer endlichen Menge von Non-terminalsymbolen (im Folgenden kurz Nichtterminale, oft aber auch Variablen genannt), einer endlichen Menge von Terminalsymbolen (im Folgenden kurz Terminale genannt) (wobei das Alphabet und die Nichtterminale N disjunkt sind), einer endlichen Menge von Produktionsregeln (im Folgenden kurz Regeln, oft auch Produktionen, genannt) und einem Startsymbol , welches zu den Nichtterminalen gehört:

, ,

Nichtterminale werden gewöhnlich durch Großbuchstaben, Terminale durch Kleinbuchstaben repräsentiert.

Eine Regel besteht aus einer linken und einer rechten Seite, 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 symbolisiert) 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 rechten Seite der Regel ersetzt wird. Für solche Produktionen hat sich folgende Schreibweise eingebürgert:

Für w, w' gilt dann die so genannte Transitionsrelation, eine Folge von Anwendungen solcher Regeln bezeichnet man als Ableitung.

Von G erzeugte Sprache

Eine Grammatik erzeugt eine formale Sprache , die aus allen Wörtern besteht, die nur aus Terminalen bestehen und vom Startsymbol mit einer endlichen Anzahl von Schritten abgeleitet werden können:

symbolisiert hierbei die so genannte Transitionsrelation, siehe dort. Der Stern bedeutet nach beliebiger Anwendung der Produktionsregeln. Also die reflexiv-transitive Hülle der Relation .

Beispiel

Wir betrachten die Grammatik mit den Terminalen , den Nichtterminalen mit dem Startsymbol und den Regeln

Sie definiert die Sprache aller Wörter der Form , d.h. Kopien von gefolgt von Kopien von .

Hierbei ist zu beachten, dass dies nicht die einzige Grammatik ist, die diese Sprache erzeugt. Eine weitere Grammatik zur Erzeugung von ist die mit diesen Regeln

oder auch nur schlicht:

Man sieht also, dass es zur Erzeugung einer Sprache mehrere (genaugenommen: beliebig viele) Grammatiken gibt.

Man klassifiziert verschiedene Typen von Grammatiken in der so genannten Chomsky-Hierarchie. Die obige wäre z.B Typ2

Siehe auch