3.4 KiB
3.4 KiB
Formale Grammatiken
Grundbegriffe
Formale Grammatik
- 4-Tupel
G=(Σ,V,S,R)
Σ
: AlphabetV
: endliche Menge VariablenV ∩ Σ = \not O
S ∈ V
: StartvariablenR
: endliche Menge Regeln- Form:
α → β
,α, β ∈ (Σ ∪ V)^*
mitα \not= ε
- Form:
Beispielgrammatik
G = (\{a,b\},\{S\},S,\{S→aSb, S→ε\})
- Alphabet
a,b
- Variable S
- Startvariable S
- zwei (Ersetzungs-) Regeln:
- rekursiv
- leeres Wort
- Alphabet
Funktion einer formalen Grammatik
- Bilden von Wörtern durch Ableitungen
- starte mit dem Startsymbol
S
- solange noch Variablen vorkommen oder man Lust hat:
- wende eine Regel
α → β
an, umα
durchβ
zu ersetzen
- wende eine Regel
- das Ergebnis ist eine Zeichenkette
w ∈ Σ^*
- ein aus
G
abgeleitetes Wort
- ein aus
Komplexität von Grammatiken
- Je mehr Variablen links UND rechts stehen, desto schwerer wird es sie zu verstehen
- Dadurch wird auch das Wortproblem schwerer
Übersicht Grammatiken
Typ | Erlaubte Regeln | Was kann man damit beschreiben? | Beispielregel | Beispielsprache |
---|---|---|---|---|
Regulär (RG) | A → aB A → a |
Nur ganz einfache Muster, kein Zählen | A → aB B → b |
aⁿb (z.B. ab, aab, aaab) |
Kontextfrei (CFG) | A → γ (γ ist beliebige Folge aus Terminals und Nichtterminals) | Einfache Klammerungen und Zählen | S → aSb S → ε |
aⁿbⁿ (z.B. ab, aabb, aaabbb) |
Kontextsensitiv (CSG) | αXβ → αwβ (w darf nicht kürzer sein als X) | Mehr Kontextabhängigkeit, z.B. 3-mal Zählen | aXb → abb (wenn X zwischen a und b steht) | aⁿbⁿcⁿ (z.B. abc, aabbcc) |
Erklärungen:
- Regulär: Nur ganz einfache Strukturen – keine verschachtelten oder abhängigen Teile.
- Kontextfrei: Kann einfache Paare wie aⁿbⁿ beschreiben (z.B. gleich viele a und b).
- Kontextsensitiv: Kann komplexe Abhängigkeiten darstellen – z.B. gleich viele a, b und c.
Reguläre Grammatiken
- Einfachste Grammatiken
(Rechts-)reguläre Grammatiken
- für alle
α → β
ausR
giltα ∈ V
- links steht genau eine Variable
β = u*v
mitu ∈ Σ^*, v ∈ V ∪ \{ε\}
- rechts steht wenn überhaupt, dann nur genau eine Variable am Ende
- Worte wachsen von links nach rechts
Kontextfreie Grammatiken
- Hauptsache α ist ein Teil der Variablen
Kontextsensitive Grammatiken
- für alle
α → β
ausR
AUßERS→ε\}
gilt:α = u * X * v
mitu,v ∈(Σ ∪ V)^*
undX ∈ V
- Symbol nur ersetzen, wenn bestimmte andere Symbole davor und danach stehen
- Symbole davor und danach sind der Kontext
- Symbol nur ersetzen, wenn bestimmte andere Symbole davor und danach stehen
β = u*w*v
mitw ∈ (Σ ∪ V)^+
- Beim Ersetzen muss das neue Stück mindestens so lang sein wie das alte, also das Wort darf nicht kürzer werden.
S
kommt nicht inβ
vor- S steht nie auf der rechten Seite
Monotone Grammatiken
- Wenn
|β| ≥ |α|
- Keine Grammatik, die das leere Wort erzeugt ist monoton