„Formale Grammatik“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[ungesichtete Version][ungesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Cristof (Diskussion | Beiträge)
./. kat Theoretische Linguistik (gehört nicht zu Sprachwissenschaft)
+ Literaturhinweis
Zeile 82: Zeile 82:
<math>\Rightarrow_G</math> symbolisiert hierbei die so genannte [[Transitionsrelation]], siehe dort. Der Stern in <math> \Rightarrow^* </math> bedeutet ''nach einer beliebigen Anzahl von Schritten'', also die [[reflexiv-transitive Hülle]] der Relation <math> \Rightarrow </math>.
<math>\Rightarrow_G</math> symbolisiert hierbei die so genannte [[Transitionsrelation]], siehe dort. Der Stern in <math> \Rightarrow^* </math> bedeutet ''nach einer beliebigen Anzahl von Schritten'', also die [[reflexiv-transitive Hülle]] der Relation <math> \Rightarrow </math>.


==Siehe auch==
== Siehe auch ==
* [[Kleenesche Hülle]]
* [[Kleenesche Hülle]]
* [[Graphgrammatik]]
* [[Graphgrammatik]]
* [[Erweiterte Backus-Naur-Form]]
* [[Erweiterte Backus-Naur-Form]]

== Literatur ==
* {{Literatur|Autor=Katrin Erk, Lutz Priese|Titel=Theoretische Informatik: eine umfassende Einführung|Verlag=Springer-Verlag|Jahr=2002|Auflage=2., erw.|Seiten=53-61|ISBN=3-540-42624-8}}


[[Kategorie:Formale Sprachen]]
[[Kategorie:Formale Sprachen]]

Version vom 13. April 2008, 12:27 Uhr

Formale Grammatiken sind mathematische Modelle von Grammatiken, die so genannte formale Sprachen erzeugen. Sie werden in der theoretischen Informatik, insbesondere in der Berechenbarkeitstheorie, und im Compilerbau angewandt.

Grundlagen

Ein Text (Zeichenkette) ist eine Folge von Zeichen (Terminalsymbole). In der Theorie sind Terminalsymbole häufig auf Kleinbuchstaben beschränkt, z. B. , in der Praxis verwendet man jedoch auch andere Symbole wie Satzzeichen und Schlüsselwörter von Programmiersprachen, z. B. FOR, IF, PROGRAM, usw. Ein kleines Epsilon () steht für ein leeres Wort (wie in Programmiersprachen die leere Zeichenkette, meist "" oder ''.)

Eine formale Grammatik erlaubt es zu entscheiden, ob ein Text dieser Grammatik folgt, also ob er „gültig“ ist. Eine Teilmenge von A* (Alphabet inklusive leeres Wort), die durch Anwendung der Grammatik entsteht, nennt man die Sprache dieser Grammatik. Einen Text, der der Grammatik folgt, nennt man auch ein Wort dieser Sprache. Umgekehrt erlaubt es eine Grammatik auch, alle Wörter ihrer Sprache zu erzeugen.

Formale Grammatiken werden häufig als Semi-Thue-System angegeben, (reguläre Grammatiken auch oft als regulärer Ausdruck). Die gängigen Notationen verwenden Pseudosymbole, sogenannte Nichtterminalsymbole, die im Text nicht auftauchen (oft werden hierfür Großbuchstaben verwendet). Diese Symbole wirken wie Platzhalter, die aufgrund von Regeln (sog. Produktionsregeln oder Produktionen) 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 (wobei beachtet werden muss, dass es sich bei | um ein sogenanntes Metazeichen handelt und für oder steht, d. h. für das Nichtterminalsymbol A kann entweder das Terminalsymbol a oder die Vereinigung des Terminal- und Nichterminalsymbols Aa verwendet werden):

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 folgende Ableitung:

Der obenstehende Text kann also durch sukzessive Anwendung der Regeln aus dem Startsymbol produziert werden. Alle Texte, die so produziert werden können, sind gültig im Sinne der formalen Grammatik (also Wörter der Sprache, die die Grammatik definiert).

Gültige Texte wären hier , der Text ist dagegen ungültig.

Formale Definition

Eine formale Grammatik ist ein 4-Tupel bestehend aus

  • einer endlichen Menge von Nichtterminalsymbolen (auch Nichtterminale oder Variablen genannt)
  • dem Alphabet , einer endlichen Menge von Terminalsymbolen (auch Terminale)
  • einer endlichen Menge von Produktionsregeln (auch Regeln oder Produktionen genannt)
  • mindestens einem Startsymbol , das zur Menge der Nichtterminalen gehört ()

Keine der Mengen , und ist die leere Menge. Die Menge der Nichtterminalsymbole und die Menge der Terminalsymbole sind disjunkt. Es gibt also kein Symbol, das sowohl Nichtterminal- als auch Terminalsymbol ist.

Nichtterminale werden gewöhnlich durch Großbuchstaben, Terminale durch Kleinbuchstaben repräsentiert. Eine andere Möglichkeit ist es, alle Nichtterminale durch spitze Klammern zu kennzeichnen (<Nichtterminal>).

Eine 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 symbolisiert) sein, also das Wort der Länge Null:

Eine Grammatik ist in Normalform genau dann wenn gilt:

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. Dies ist die Transitionsrelation und man sagt formal, dass ein Wort u unter der Grammatik G unmittelbar in ein Wort v übergeht ().

Wendet man die Produktionen beginnend mit der Startvariablen an, bis man ein Wort nur bestehend aus Terminalen erhält, so nennt man die entstehende Folge von Wörtern Ableitung von . Das heißt also und . Typischerweise enthalten Wörter dieser Ableitung auch Nichtterminale. Ein solches Wort nennt man auch Satzform.

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 mit , d. h. Kopien von gefolgt von Kopien von .

Es ist zu beachten, dass dies nicht die einzige Grammatik ist, die diese Sprache erzeugt. Man klassifiziert verschiedene Typen von Grammatiken in der so genannten Chomsky-Hierarchie. Die obige entspricht dem Chomsky-Typ 1 (kontextsensitiv), da auf der linken Seite der Erzeugungsregeln sowohl Nichtterminale als auch Terminale enthalten sind. 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: abzählbar unendlich viele) Grammatiken gibt.

Die obige wäre z. B. vom Chomsky-Typ 2 (kontextfrei).

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 in bedeutet nach einer beliebigen Anzahl von Schritten, also die reflexiv-transitive Hülle der Relation .

Siehe auch

Literatur

  • Katrin Erk, Lutz Priese: Theoretische Informatik: eine umfassende Einführung. 2., erw. Auflage. Springer-Verlag, 2002, ISBN 3-540-42624-8, S. 53–61.