I.5. Kontextfreie Sprachen

Ähnliche Dokumente
Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen

Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen

Ein Fragment von Pascal

Umformung NTM DTM. Charakterisierung rek. aufz. Spr. Chomsky-3-Grammatiken (T5.3) Chomsky-0-Grammatik Rek. Aufz.

F2 Zusammenfassung Letzte Tips zur Klausur

Übungsblatt 7. Vorlesung Theoretische Grundlagen der Informatik im WS 16/17

Normalformen für kontextfreie Grammatiken. Noam CHOMSKY, Sheila GREIBACH. Bäume. Ableitungen in kontextfreien Grammatiken. Grammatik G = (N,T,P,S)

Theoretische Grundlagen der Informatik

Kontextfreie Sprachen

Automatentheorie und formale Sprachen

Klammersprache Definiere

Informatik III - WS07/08

Theoretische Informatik und Logik Übungsblatt 2 (2017S) Lösung

Übungsblatt 7. Vorlesung Theoretische Grundlagen der Informatik im WS 16/17

Kontextfreie Sprachen

Theoretische Grundlagen der Informatik. Vorlesung am 8. Januar INSTITUT FÜR THEORETISCHE INFORMATIK

Kontextfreie (Typ-2) Sprachen

Grundlagen der theoretischen Informatik

Grundlagen der Theoretischen Informatik

Automaten und formale Sprachen Klausurvorbereitung

Theoretische Informatik

Theoretische Grundlagen der Informatik

Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive

Kapitel 2: Formale Sprachen Gliederung

Einführung in die Computerlinguistik

Schnitt- und Äquivalenzproblem

Musterlösung Informatik-III-Nachklausur

Beweisidee: 1 Verwende den Keller zur Simulation der Grammatik. Leite ein Wort. 2 Problem: der Keller darf nicht beliebig verwendet werden, man kann

Grundlagen der Theoretischen Informatik

Ogden s Lemma: Der Beweis (1/5)

Einführung in die theoretische Informatik Sommersemester 2017 Übungsblatt Lösungsskizze 7

6 Kontextfreie Grammatiken

1. Übungsblatt 6.0 VU Theoretische Informatik und Logik

Definition 4 (Operationen auf Sprachen) Beispiel 5. Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A + = n 1 An

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen

q 0 q gdw. nicht (q A) (q A) q i+1 q gdw. q i q oder ( a Σ) δ(q, a) i δ(q, a) L = {a n b n : n N} für a, b Σ, a b

Mehrdeutige Grammatiken

2. Übungsblatt 6.0 VU Theoretische Informatik und Logik

Theorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie

Formale Grundlagen der Informatik

Automaten und formale Sprachen Notizen zu den Folien

(Prüfungs-)Aufgaben zu formale Sprachen

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

Automaten und formale Sprachen Notizen zu den Folien

Grammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht

Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14

Kapitel IV Formale Sprachen und Grammatiken

Theoretische Informatik I

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann.

Chomsky-Grammatiken 16. Chomsky-Grammatiken

Einführung in die Computerlinguistik Formale Grammatiken rechtslineare und kontextfreie Grammatiken Kellerautomaten

Einführung in die Theoretische Informatik

Kontextfreie Grammatiken

Grundlagen der Theoretischen Informatik

Formale Grundlagen der Wirtschaftsinformatik

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45

Lösung zur Klausur. Grundlagen der Theoretischen Informatik im WiSe 2003/2004

2.6 Deterministisches Top-Down-Parsen

Grundlagen der Theoretischen Informatik

Tutoraufgabe 1 (ɛ-produktionen):

Grammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S)

Alphabet, formale Sprache

Das Halteproblem für Turingmaschinen

Nachklausur zur Vorlesung Informatik 3 mit einigen Anmerkungen zu Lösungen

Nichtdeterministischer Kellerautomat

Übersicht. 3 3 Kontextfreie Sprachen

Theoretische Informatik Kap 1: Formale Sprachen/Automatentheorie

Abschnitt 5. Grammatiken

DisMod-Repetitorium Tag 4

Grundlagen der Theoretischen Informatik

Vorlesung Automaten und Formale Sprachen Sommersemester Beispielsprachen. Sprachen

2.1 Allgemeines. Was ist eine Sprache? Beispiele:

Informales Beispiel. Formale Grundlagen der Informatik 1 Kapitel 6 Eigenschaften kontextfreier Sprachen. Grammatiken. Anmerkungen

Programmiersprachen und Übersetzer

3.1 Kontextfreie Sprachen und Grammatiken 3.2 Ableitungsbäume 3.3 Die pre -Operation

Theoretische Grundlagen der Informatik

Transkript:

I.5. Kontextfreie prachen Zieht man in Betracht, dass BNF-yteme gerade so beschaffen sind, dass auf der linken eite immer genau ein Nichtterminal steht, so sind das also gerade die Ableitungsregeln einer kontextfreien Grammatik. Kontextfreie Grammatiken sind also für die truktur von Programmiersprachen von prinzipieller Bedeutung. (Ein mittels BNF-Regeln abgeleitetes Terminalwort ist ein Programm in der jeweiligen Programmiersprache - mit gewissen Einschränkungen (siehe später). Ableitungsbäume Ableitungen in kontextfreien prachen werden häufig Ableitungsbäume zugeordnet: ei G = (N, T,, P) eine kontextfreie Grammatik. Jeder Ableitung w 1 w 2... w n wird ein Ableitungsbaum mit der Wurzel wie folgt zugeordnet: (induktive Definition über n) Für n = 0 besteht der Baum nur aus dem Knoten Ist B n-1 der Ableitungsbaum von w 1 w 2... w n-1 und entsteht w n aus w n-1 durch Anwendung der Regel A w = x 1... x l, x i N T, d.h. w n-1 = w A w, w n = w w w, so erhält man den Ableitungsbaum B n von w 1... w n aus B n-1, indem man den Knoten A in B n-1 ersetzt durch den Baum A x 1 x 2 x 3 x l Beispiel: ei G = ({}, {a},, { a, }) Der Ableitungsbaum für die Ableitung a aa ist a a

Offenbar können verschiedene Ableitungen den gleichen Ableitungsbaum besitzen; z.b. hat die Ableitung a aa den gleichen Ableitungsbaum. Die Zuordnung von Ableitungen zu den Ableitungsbäumen wird eineindeutig, wenn man nur Linksableitungen zulässt: Definition: Die Ableitung w 1 w 2... w n heißt Linksableitung, wenn bei jedem Ableitungsschritt das am weitesten links stehende Nichtterminal vermöge einer Regel aus P ersetzt wird. Es ist aber möglich, dass es für ein Wort w L(G) verschiedene Linksableitungen gibt: Definition: Die (kontextfreie) Grammatik G heißt mehrdeutig, wenn w L(G), so dass w 2 verschiedene Linksableitungen besitzt. Anderenfalls heißt G eindeutig. Die kontextfreie prache L heißt eindeutig, wenn es eine eindeutige kontextfreie Grammatik G mit L = L(G) gibt. Anderenfalls heißt L mehrdeutig. Beispiel: Die Grammatik G = ({}, {a},, { a, }) ist mehrdeutig, denn es gibt für aaa die Linksableitungen a a aa aaa a aa aaa mit den Ableitungsbäumen a a a a a a Es ist L(G) = {a i : i 1}. L(G) ist (natürlich) regulär und wird z.b. von der Grammatik G 1 = ({}, {a},, { a, a}) erzeugt. G 1 ist eindeutig, also auch L(G) = L(G 1 ).

Beispiel: für eine mehrdeutige kontextfreie prache: L = {a i b j c k : i = j oder j = k} (o.b.) Dagegen gilt: atz 5.1.: Jede reguläre prache ist eindeutig. ei L regulär. Dann wird (nach Hauptsatz für die regulären prachen) L von einem DA akzeptiert. Im Beweisteil (i) (ii) wird dann gerade eine eindeutige Grammatik G mit L = L(G) konstruiert. Normalformen Es gibt für eine kontextfreie prache L viele verschiedene Grammatiken, die L erzeugen. Für Einsichten in die truktur solcher prachen sind gewisse Normierungen für erzeugende Grammatiken relevant. Hier sei nur eine erwähnt: Definition: Eine kontextfreie Grammatik G = (N, T,, P} ist in Chomsky- Normalform, wenn alle Regeln von der Form X YZ oder X a mit X, Y; Z N, a T sind. atz 5.2.: Zu jeder kontextfreien Grammatik G = (N, T,, P) mit ε L(G) gibt es eine äquivalente kontextfreie Grammatik G in Chomsky-Normalform. (o.b.) Zum Pumping-Lemma für reguläre prachen gibt es ein Analogon: atz 5.3.: (Pumping-Lemma für kontextfreie prachen) ei L kontextfrei. Dann gibt es eine natürliche Zahl n, so dass für jedes Wort w L mit w n gilt: Es gibt w 1, w 2, w 3, w 4, w 5, mit w = w 1 w 2 w 3 w 4 w 5, w 2 w 3 w 4 n, i i w 2 w 4 ε, und w w w w w L i 0. 1 2 3 4 5 Das P.-Lemma erlaubt häufig den Nachweis, dass eine prache nicht kontextfrei ist.

Beispiel: L={v v : v {0,1} * } Angenommen L wäre kontextfrei. Dann existierte eine Zahl n mit den Eigenschaften des Pumping-Lemmas. ei w = 1...1 0...0 1... 1 0...0 L n n n n Dann ist also w = w 1 w 2 w 3 w 4 w 5 mit w 2 w 3 w 4 n. Wenn w 2 w 3 w 4 in der 1.Hälfte von w liegt, so endet im für i = 0 erzeugten Wort die 1. Hälfte mit 1, die 2. mit 0 (falls überhaupt: ein Wort gerader Länge entsteht). Wenn w 2 w 3 w 4 in der 2.Hälfte von w liegt, so beginnt im für i = 0 erzeugten Wort die 1. Hälfte mit 1, die 2. Hälfte mit 0. Wenn w 2 w 3 w 4 die Mitte überlappt, so beginnt im für i = 0 erzeugten Wort die 1. Hälfte mit n Einsen, die 2. nicht. Bemerkung: Dieses Beispiel dokumentiert die mangelnde Kopierfähigkeit kontextfreier Grammatiken. Eine Konsequenz ist, dass die meisten Programmiersprachen nicht kontextfrei sind. Z.B. gibt es in Pascal die Bedingung, dass Anzahl und Typen der formalen Parameter und der aktuellen Parameter übereinstimmen müssen. Diese Bedingung lässt sich - unserem obigen Beispiel entsprechend - nicht durch BNF-Regeln formulieren! Bei Programmiersprachen erzeugt man durch kontextfreie Grammatiken (BNF- Regeln) eine echte Obermenge der zulässigen Programme, aus denen die Programme durch verbale Einschränkungen ausgesondert werden. Abschlusseigenschaften atz 5.4.: Kontextfreie prachen sind abgeschlossen gegenüber den regulären Operationen Vereinigung, Verkettung und Iteration. eien L 1 = L(G 1 ) und L 2 = L(G 2 ) erzeugt von den kontextfreien Grammatiken G 1 = (N 1, T 1, 1, P 1 ), G 2 = (N 2, T 2, 2, P 2 ) und o.b.d.a. sei N 1 N 2 =. eien 3, 4, 5 neue Nichtterminale. G 3 := (N 1 N 2 { 3 }, T 1 T 2, 3, P 3 ) mit P 3 = P 1 P 2 { 3 1, 3 2 }. Offenbar ist L(G 3 ) = L 1 L 2.

G 4 := (N 1 N 2 { 4 }, T 1 T 2, 4, P 4 ) mit P 4 = P 1 P 2 { 4 1 2 }. Offenbar ist L(G 4 ) = L 1 L 2. G 5 := (N 1 { 5 }, T 1, 5, P 5 ) mit P 5 = P 1 { 5 ε, 5 1 5 }. Offenbar ist L(G 5 ) = L 1 *. atz 5.5.: Die kontextfreien prachen sind nicht abgeschlossen gegenüber Durchschnitten. L 2 := {a i b i c j : i 1, j 1} L 3 := {a i b j c j : i 1, j 1} L 2 wird erzeugt von Grammatik mit den Produktionen AB, A aab ab, B cb c (Übung!!) L 3 wird erzeugt von Grammatik mit den Produktionen CD, C ac a, D bdc bc (Übung!!) Aber L 2 L 3 = { a i b i c i : i 1} ist nicht kontextfrei (Übung!)