Informatik · Klasse 11–13 · aktualisiert
Formale Grammatik: Regeln, Ableitung und Sprache
Du lernst die vier Teile einer Grammatik, leitest Wörter Schritt für Schritt ab und ordnest Grammatiken in die vier Typen der Hierarchie ein.
0 von 15 Aufgaben gelöst
Kurz gesagt
Eine formale Grammatik besteht aus Terminalen, Nichtterminalen, Produktionsregeln und einem Startsymbol. Du leitest ein Wort ab, indem du vom Startsymbol aus Regeln anwendest. Gibt es so eine Ableitung, gehört das Wort zur Sprache.
Wenn dein Programm einen Syntaxfehler hat, prüft der Parser deinen Quelltext anhand von Grammatikregeln. Der Parser ist der Syntaxanalyseteil eines Compilers, also eines Programms, das Quelltext verarbeitet. Hier lernst du, wie solche Regeln aufgebaut sind und wie man mit ihnen Wörter erzeugt und prüft.
Deine Lernziele
Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.
5 Abschnitte
Eine formale Grammatik ist ein mathematisches Modell. Sie legt eine Menge von Wörtern fest. Ein Wort ist dabei eine endliche Folge von Zeichen. Die Menge der Wörter, die sich mit der Grammatik erzeugen lassen, heißt formale Sprache.
Eine bloße Liste von Ersetzungsregeln ist noch keine Grammatik. Man schreibt eine Grammatik als 4-Tupel, also als Liste aus vier Teilen:
Terminale: Das sind die Zeichen, aus denen die fertigen Wörter bestehen. Sie werden nicht weiter abgeleitet. Normalerweise sind es Kleinbuchstaben oder Ziffern.
Nichtterminale (auch Variablen genannt): Das sind Zeichen, die noch durch andere Zeichen ersetzt werden müssen. Man schreibt sie als Großbuchstaben.
Produktionsregeln: Sie beschreiben, wie Nichtterminale ersetzt werden dürfen. Eine Regel schreibt man mit Pfeil, zum Beispiel α → β. Auf der linken Seite muss mindestens ein Nichtterminal stehen.
Startsymbol: Das ist ein bestimmtes Nichtterminal, bei dem jede Ableitung beginnt. Man nennt es normalerweise S.
Ein Zeichen kann nicht gleichzeitig Terminal und Nichtterminal sein. Manche Bücher fassen Terminale und Nichtterminale auch zu einem gemeinsamen Vokabular zusammen.
Definition
Nichtterminal
Ein Nichtterminal ist ein Zeichen, das noch zu Terminalen umgewandelt werden muss. Deshalb nennt man es gelegentlich auch Variable. Das Startsymbol ist immer ein Nichtterminal.
Beispiel: Eine Mini-Grammatik für Sätze
- 1Startsymbol: S
- 2Nichtterminale: S, P, V, O (P für Pronomen, V für Verb, O für Objekt)
- 3Terminale: Kleinbuchstaben, der Bindestrich (steht für ein Leerzeichen) und der Punkt
- 4Regeln: S → PVO
- 5Regeln: P → er- | sie- | es-
- 6Regeln: V → angelt- | baut- | näht-
- 7Regeln: O → blumen. | zierfische. | honig.
Merke: Eine Grammatik hat vier Teile: Terminale, Nichtterminale, Produktionsregeln und ein Startsymbol.
Teste dich
Ableiten heißt, ein Wort nach den Regeln einer Grammatik zu erzeugen. Du beginnst mit dem Startsymbol. Dann führst du nacheinander Ableitungsschritte durch. Bei geeigneter Wahl der Regeln endest du bei einem fertigen Wort.
Ein Ableitungsschritt ersetzt einmal einen Teilabschnitt der Zeichenfolge nach einer Regel. In jedem Schritt wird genau eine Regel angewendet. Man schreibt den Schritt mit dem Pfeil ⇒.
Die Zeichenfolgen dazwischen heißen Satzformen. Eine Satzform besteht aus Terminalen und Nichtterminalen. Ein Wort besteht nur aus Terminalen. Eine Ableitung beginnt mit dem Startsymbol, und ihre letzte Satzform ist ein Wort.
Oft passen mehrere Regeln, oder eine Regel passt an mehreren Stellen. Formale Grammatiken schreiben keine Reihenfolge vor. Ein kleines Beispiel: Mit der Regel X → + oder X → - kann man die Zeichenfolge 1X2 entweder zu 1+2 oder zu 1-2 ableiten. In einem Schritt entsteht aber nur eines davon.
Definition
Satzform
Eine Satzform ist eine Zeichenfolge aus Terminalen und Nichtterminalen. Sie entsteht als Zwischenergebnis, wenn du ein Wort ableitest.
Beispiel: Zwei Ableitungen mit verschiedener Reihenfolge
- 1Regeln wie in der Mini-Grammatik: S → PVO, P → er- | sie- | es-, V → angelt- | baut- | näht-, O → blumen. | zierfische. | honig.
- 2Weg A: S ⇒ PVO ⇒ sie-VO ⇒ sie-angelt-O ⇒ sie-angelt-honig.
- 3Weg B: S ⇒ PVO ⇒ PVzierfische. ⇒ Pbaut-zierfische. ⇒ sie-baut-zierfische.
- 4Satzformen in Weg A: PVO, sie-VO, sie-angelt-O. Das Wort am Ende: sie-angelt-honig.
- 5In Weg B wird zuerst O, dann V, dann P ersetzt. Die Stelle darfst du frei wählen.
Merke: Eine Ableitung beginnt mit dem Startsymbol und endet bei einem Wort. Dazwischen stehen Satzformen.
Teste dich
Die Frage, ob ein Wort zu einer Sprache gehört, heißt Wortproblem. Die Sprache einer Grammatik besteht aus allen Wörtern, die nur aus Terminalen bestehen und sich in endlich vielen Schritten aus dem Startsymbol ableiten lassen.
Deshalb gilt: Ein Wort gehört zur Sprache, wenn eine Ableitung des Wortes existiert. Eine Ableitung ist damit ein Beweis dafür, dass das Wort zur Sprache gehört.
Das nutzt zum Beispiel der Parser eines Compilers. Er sucht indirekt eine Ableitung für den Quelltext. Scheitert er, weil das Programm einen Syntaxfehler enthält, ist nachgewiesen, dass keine Ableitung existiert.
Bei einer Typ-1-Grammatik (die Typen lernst du im letzten Abschnitt kennen) kannst du systematisch alle möglichen Ableitungen ausprobieren. Sobald du die Länge des gesuchten Wortes überschritten hast, kannst du aufhören. Aus einer längeren Satzform kann das Wort nicht gebildet werden. Bei regulären Grammatiken lässt sich das Wortproblem sogar sehr effizient entscheiden.
Definition
Wortproblem
Das Wortproblem ist die Frage, ob ein gegebenes Wort zur Sprache einer Grammatik gehört. Die Antwort hängt daran, ob eine Ableitung des Wortes existiert.
Beispiel: Gerade Zahlen prüfen (Regeln aus dem Material)
- 1Regeln: S → A0 | A2 | A4 | A6 | A8 und A → A0 | A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | ε
- 2ε ist das leere Wort: Das A wird durch nichts ersetzt.
- 3Frage 1: Gehört 42 zur Sprache?
- 4S ⇒ A2 ⇒ A42 ⇒ 42
- 5Die letzte Zeichenfolge enthält kein Nichtterminal. Es gibt eine Ableitung, also gehört 42 zur Sprache.
- 6Frage 2 (ausgedacht): Gehört 7 zur Sprache?
- 7Jede Ableitung beginnt mit einer Regel für S, und die Endziffer 0, 2, 4, 6 oder 8 kann nicht mehr entfernt werden.
- 8Jedes erzeugte Wort endet also auf 0, 2, 4, 6 oder 8. Die 7 endet auf 7, für sie gibt es keine Ableitung.
Merke: Existiert eine Ableitung des Wortes, gehört es zur Sprache. Die Ableitung ist der Beweis.
Teste dich
Eine rechtsreguläre Grammatik darf nur Regeln dieser drei Muster haben: X → aY, X → a und X → ε. Dabei sind X und Y Nichtterminale und a ist ein Terminal.
Die Do-Re-Mi-Grammatik ist so ein Beispiel. Ihre Terminale sind d, e, i, m, o, r. Ihre Nichtterminale sind S, A, B, C, und S ist das Startsymbol. Die Regeln sind S → dA | rB | mC | ε und A → oS, B → eS, C → iS. Die Sprache besteht aus allen Folgen der Blöcke do, re und mi.
So wächst das Wort: Jede Satzform mit Nichtterminal besteht aus einem Terminalwort vorneweg und einem einzigen Nichtterminal am Ende. In jedem Schritt wird rechts ein Terminal angefügt, und das Nichtterminal am Ende ändert sich. Das Wort wächst also von links nach rechts.
Das entspricht dem Einlesen eines Wortes in einem endlichen Automaten. Ein endlicher Automat liest ein Wort Zeichen für Zeichen und wechselt dabei zwischen Zuständen. Die Nichtterminale der Grammatik entsprechen den Zuständen. Für jede Regel X → aY gibt es einen Übergang (X, a, Y): vom Zustand X über das Zeichen a zum Zustand Y.
Definition
Rechtsreguläre Grammatik
In einer rechtsregulären Grammatik haben alle Regeln eines der Muster X → aY, X → a oder X → ε. Ableitungen wachsen darin am rechten Ende einer Satzform.
Beispiel: Das Wort domire in der Do-Re-Mi-Grammatik
- 1Regeln: S → dA | rB | mC | ε, A → oS, B → eS, C → iS
- 2S ⇒ dA ⇒ doS ⇒ domC ⇒ domiS ⇒ domirB ⇒ domireS ⇒ domire
- 3Die Satzformen mit Nichtterminal sind dA, doS, domC, domiS, domirB, domireS.
- 4Jede hat vorn ein Terminalwort und hinten genau ein Nichtterminal.
- 5Als Zustandsfolge gelesen: S, dann A, S, C, S, B, S
- 6Übergänge aus den Regeln abgelesen: (S,d,A), (A,o,S), (S,m,C), (C,i,S), (S,r,B), (B,e,S)
- 7Der letzte Schritt S → ε fügt kein Zeichen mehr an und beendet die Ableitung.
Merke: Rechtsregulär heißt: Das Wort wächst am rechten Ende. Nichtterminale entsprechen den Zuständen, Regeln X → aY den Übergängen (X, a, Y).
Teste dich
Die Chomsky-Hierarchie ordnet formale Grammatiken in vier Typen, gezählt von 0 bis 3. Die Typen unterscheiden sich darin, wie streng die Form der Regeln eingeschränkt ist. Typ 0 hat keine Einschränkung. Typ 1 bis Typ 3 sind zunehmend stärker eingeschränkt.
Typ 0 heißt auch unbeschränkt. Typ 1 heißt kontextsensitiv: Ein Nichtterminal A wird durch γ ersetzt, aber nur, wenn davor α und danach β steht. α, β und γ sind Zeichenfolgen, γ muss mindestens ein Symbol enthalten. Die Regel S → ε ist als Ausnahme erlaubt. Typ 2 heißt kontextfrei: Links steht genau ein Nichtterminal, es wird unabhängig vom Kontext ersetzt. Typ 3 heißt regulär: Es sind Typ-2-Grammatiken, bei denen rechts genau ein Terminal und höchstens ein Nichtterminal stehen darf. Das Nichtterminal steht in allen Regeln auf derselben Seite, entweder immer vor oder immer hinter dem Terminal. Das nennt man linksregulär oder rechtsregulär. Mischt man beides, ist die Grammatik nicht regulär. Heute erlaubt man bei Typ 2 und Typ 3 oft auch das leere Wort auf der rechten Seite, deshalb gibt es bei der Do-Re-Mi-Grammatik die Regel S → ε.
Nach Definition ist jede Typ-3-Grammatik auch vom Typ 2, jede Typ-2-Grammatik auch vom Typ 1 und jede Typ-1-Grammatik auch vom Typ 0. Die Umkehrungen gelten nicht. Darum ist es eine echte Hierarchie. Grammatiken niedrigeren Typs sind erzeugungsmächtiger. Dafür sind Sprachen eingeschränkterer Typen üblicherweise einfacher algorithmisch zu verarbeiten.
Zwei Gegenbeispiele zeigen, dass die Sprachklassen verschieden sind: Die Sprache aus n-mal a, dann n-mal b, dann n-mal c (n ≥ 1) ist vom Typ 1, aber nicht vom Typ 2. Die Sprache aus n-mal a, dann n-mal b (n ≥ 1) ist vom Typ 2, aber nicht vom Typ 3. Reguläre Ausdrücke für Textsuchen entsprechen dem Typ 3. Für Programmiersprachen benutzt man meist Typ-2-Grammatiken.
| Typ | Name | Form der Regeln |
|---|---|---|
| 0 | unbeschränkt | keine Einschränkung an die Form der Regeln |
| 1 | kontextsensitiv | ein Nichtterminal wird ersetzt, aber nur in einem bestimmten Umfeld (Kontext) |
| 2 | kontextfrei | links genau ein Nichtterminal, ersetzbar unabhängig vom Kontext |
| 3 | regulär | wie Typ 2, rechts genau ein Terminal und höchstens ein Nichtterminal, immer auf derselben Seite |
Merke: Je höher die Typnummer, desto strenger die Regeln. Jede Typ-3-Grammatik ist auch vom Typ 2, aber nicht umgekehrt.
Teste dich
Alles auf einen Blick
Grammatik
Bestandteile
Terminale, Nichtterminale, Produktionsregeln und Startsymbol bilden eine Grammatik.
Ableitung
Sie beginnt mit dem Startsymbol, nutzt pro Schritt genau eine Regel und endet bei einem Wort.
Satzform
Zwischenergebnis mit Terminalen und Nichtterminalen; ein Wort besteht nur aus Terminalen.
Wortproblem
Ein Wort gehört zur Sprache, wenn eine Ableitung existiert.
Rechtsregulär
Das Wort wächst am rechten Ende, die Nichtterminale entsprechen Zuständen.
Hierarchie
Typ 0 bis 3 mit zunehmend strengeren Regeln.
Musteraufgabe · Schritt für Schritt
Palindrom abcacba ableiten (Palindrome aus a, b, c)
- 1Gegeben: Startsymbol S, Terminale a, b, c und die Regeln S → aSa | bSb | cSc | a | b | c | ε
- 2Gesucht: eine Ableitung für abcacba. Wir bauen das Wort von außen nach innen.
- 3S ⇒ aSa (Regel S → aSa)
- 4aSa ⇒ abSba (Regel S → bSb)
- 5abSba ⇒ abcScba (Regel S → cSc)
- 6abcScba ⇒ abcacba (Regel S → a)
- 7Satzformen dazwischen: aSa, abSba, abcScba. Die letzte Zeichenfolge hat kein S mehr, sie ist ein Wort.
- 8Antwort zum Wortproblem: Es gibt eine Ableitung, also gehört abcacba zur Sprache.
Fehler finden
Prüfe die Schritte mit der Regelmenge X → + | - In einer Zeile steckt ein Fehler. Tippe sie an.
Fehler in Zeile 3Ein Schritt nutzt nicht beide Alternativen zugleich, denn in jedem Ableitungsschritt wird genau eine Regel angewendet. Richtig: 1X2 wird entweder zu 1+2 oder zu 1-2 abgeleitet, je nach gewählter Regel.
Lückentext
Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.
Jede Ableitung beginnt beim Startsymbol, und das ist ein , denn es muss noch ersetzt werden. Ob ein Wort zur Sprache gehört, hängt daran, ob eine des Wortes existiert. Von den vier Typen 0 bis 3 sind die Regeln bei Typ am stärksten eingeschränkt.
Karteikasten
Erst selbst überlegen, dann umdrehen.
Übung mit Feedback