# Formale Grammatiken ## Grundbegriffe ### Formale Grammatik - 4-Tupel - $G=(Σ,V,S,R)$ - $Σ$: Alphabet - $V$: endliche Menge Variablen $V ∩ Σ = \not O$ - $S ∈ V$: Startvariablen - $R$: endliche Menge Regeln - Form: $α → β$, $α, β ∈ (Σ ∪ V)^*$ mit $α \not= ε$ #### Beispielgrammatik - $G = (\{a,b\},\{S\},S,\{S→aSb, S→ε\})$ - Alphabet $a,b$ - Variable S - Startvariable S - zwei (Ersetzungs-) Regeln: - rekursiv - leeres Wort #### 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 - das Ergebnis ist eine Zeichenkette $w ∈ Σ^*$ - ein aus $G$ abgeleitetes Wort ## 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 ![image_920.png](image_920.png) | 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 $ α → β$ aus $R$ gilt - $ α ∈ V$ - links steht genau eine Variable - $ β = u*v$ mit $u ∈ Σ^*, 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 $ α → β$ aus $R$ AUßER $S→ε\}$ gilt: - $ α = u * X * v$ mit $u,v ∈(Σ ∪ V)^*$ und $X ∈ V$ - Symbol nur ersetzen, wenn bestimmte andere Symbole davor und danach stehen - Symbole davor und danach sind der Kontext - $ β = u*w*v$ mit $w ∈ (Σ ∪ 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