27.11.2014 Aufrufe

Automaten, Formale Sprachen und Berechenbarkeit I

Automaten, Formale Sprachen und Berechenbarkeit I

Automaten, Formale Sprachen und Berechenbarkeit I

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Kapitel 3<br />

Kontextfreie <strong>Sprachen</strong><br />

1 Kontextfreie Grammatiken<br />

Reguläre <strong>Sprachen</strong> stellen eine einfache Möglichkeit dar, <strong>Sprachen</strong> zu definieren <strong>und</strong> auch zu<br />

analysieren. Außerdem haben sie sehr schöne Eigenschaften: Sie sind unter vielen Operationen<br />

abgeschlossen, <strong>und</strong> die meisten Probleme sind für reguläre <strong>Sprachen</strong> entscheidbar.<br />

Allerdings sind viele praktisch relevante <strong>Sprachen</strong> nicht regulär. Beispielsweise ist die Sprache<br />

der korrekten Klammerausdrücke nicht regulär. Generell lassen sich verschachtelte Strukturen<br />

(beliebiger Tiefe) nicht als reguläre Sprache formulieren, da man mit regulären <strong>Sprachen</strong> nicht<br />

(beliebig weit) zählen kann. Verschachtelte Strukturen kommen aber in vielen Bereichen der<br />

Informatik vor (z.B. in Ausdrücken oder bei ineinander verschachtelten Schleifen oder Alternativen).<br />

In diesem Abschnitt betrachten wir nun eine Sprachklasse, die auf die Definition verschachtelter<br />

Strukturen zugeschnitten ist: die kontextfreien <strong>Sprachen</strong>.<br />

1.1 Motivation <strong>und</strong> Definition<br />

Ähnlich wie bei regulären <strong>Sprachen</strong>, gibt es verschiedene Charakterisierungen von kontextfreien<br />

<strong>Sprachen</strong>: eine über das <strong>Automaten</strong>modell <strong>und</strong> eine über die Grammatik. Für kontextfreie<br />

<strong>Sprachen</strong> ist die einfachste Charakterisierung wohl die über kontextfreie Grammatiken.<br />

Kontextfreie Grammatiken oder Varianten davon (z.B. die Backus-Naur-Form) sind DAS Mittel<br />

zur Beschreibung der Syntax von Programmiersprachen (oder eines wesentlichen Anteils<br />

davon).<br />

Historisch wurden kontextfreie Grammatiken zunächst von einem Linguisten definiert (N. Chomsky).<br />

Definition 3.1 (Kontextfreie Grammatik) Eine Grammatik G = (V, Σ, P, S) heißt kontextfrei,<br />

wenn gilt P ⊆ V × (V ∪ Σ) ∗ . Eine Sprache L heißt kontextfrei, wenn es eine kontextfreie<br />

Grammatik G gibt, die L erzeugt (d.h. L = L(G)).<br />

Jede Produktion einer kontextfreien Grammatik hat also die Form A → α mit A ∈ V <strong>und</strong> α ∈ (V ∪Σ) ∗ .<br />

Da α = ε nicht ausgeschlossen ist, können die Produktionen auch die Form A → ε haben.<br />

55

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!