Nichtterminale in der Mitte
In einer kontextfreien Grammatik darf die rechte Seite einer Regel beliebig aussehen — auch Nichtterminale in der Mitte oder mehrere hintereinander sind erlaubt.
- Kontextfreie Grammatik:jede Regel hat links genau ein Nichtterminal und rechts ein beliebiges Wort aus Terminalen und Nichtterminalen (auch \(\varepsilon\)).
- Kontextfrei:ein Nichtterminal wird ersetzt, egal was links und rechts von ihm steht.
- Regulär ⊂ kontextfrei:jede reguläre Grammatik ist kontextfrei — umgekehrt nicht.
- Linksableitung:in jedem Schritt wird das am weitesten links stehende Nichtterminal ersetzt.
- Ableitungsbaum:Wurzel \(S\), innere Knoten sind Nichtterminale, die Blätter von links nach rechts ergeben das Wort.
Herleitung:
Kontextfreie Grammatik: Links steht genau ein Nichtterminal, rechts ein beliebiges Wort. \(S\to aSb\mid\varepsilon\) erzeugt \(\{a^nb^n\mid n\ge 0\}\) — erkannt von einem Kellerautomaten, nicht von einem DEA.
Grammatik und Kellerautomat
Die Regel S → aSb verspricht beim Erzeugen jedes a ein späteres b. Ein Kellerautomat hält solche offenen Versprechen im Keller fest.
- Keller = offene Versprechen:jedes Zeichen, das später noch „bezahlt“ werden muss, liegt als Kellersymbol bereit; das zuletzt eingegangene liegt oben.
- Gleiche Sprachen:zu jeder kontextfreien Grammatik gibt es einen Kellerautomaten und umgekehrt (im Allgemeinen nichtdeterministisch) — sie beschreiben die kontextfreien Sprachen.
- Hierarchie:regulär (DEA, reguläre Grammatik) \(\subset\) kontextfrei (Kellerautomat, kontextfreie Grammatik); \(\{a^nb^nc^n\}\) ist nicht einmal kontextfrei.
- Anwendung:die Syntax von Programmiersprachen — Klammern, Ausdrücke, verschachtelte Blöcke — wird mit kontextfreien Grammatiken festgelegt und von Parsern geprüft.
Ziehe den Lesekopf über das Eingabeband (oder Pfeiltasten). Oben steht die passende Satzform der Linksableitung, rechts der Keller des Kellerautomaten nach genau so vielen Zeichen — vergleiche die orangefarbenen Zeichen der Satzform mit dem Kellerinhalt.
Halte fest: Was in der Satzform rechts vom Nichtterminal noch aussteht, steht im Keller — ein Kellersymbol für jede offene Verpflichtung, das zuletzt eingegangene oben. Genau dieses Gedächtnis fehlt einem DEA.
Allgemeine Hinweise
Ein Nichtterminal reicht nicht
\(S\to aSb\) enthält nur ein Nichtterminal und ist trotzdem nicht regulär. Entscheidend ist, wo es steht — nicht, wie viele es gibt.
Regeln als Bauplan lesen
Lies S als „ein korrektes Stück“: \(S\to(S)S\) heißt „ein geklammertes korrektes Stück, dahinter noch eines“. So lassen sich Grammatiken rekursiv entwerfen.
Mehrdeutige Grammatiken
Mit \(S\to SS\mid(S)\mid\varepsilon\) hat ()()() mehrere Ableitungsbäume. Die Sprache ist dieselbe, aber ein Parser kann sich nicht eindeutig entscheiden.
