6 Kontextfreie Grammatiken

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

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

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

Grundlagen der theoretischen Informatik

Formale Grundlagen der Wirtschaftsinformatik

(Prüfungs-)Aufgaben zu formale Sprachen

Alphabet, formale Sprache

Automatentheorie und formale Sprachen

Kapitel IV Formale Sprachen und Grammatiken

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

I.5. Kontextfreie Sprachen

Spracherkennung (Syntaxanalyse)

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

Nichtdeterministischer Kellerautomat

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

Theoretische Informatik I

Formale Sprachen Jörg Roth Formale Sprachen

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

Das Halteproblem für Turingmaschinen

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

Informatik III - WS07/08

4.2.4 Reguläre Grammatiken

Ein Fragment von Pascal

1 Formale Sprachen, reguläre und kontextfreie Grammatiken

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45

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

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

Grundlagen der Theoretischen Informatik

Übungsaufgaben zu Formalen Sprachen und Automaten

Einführung in die Theoretische Informatik

5. Die syntaktische Analyse

Theoretische Grundlagen der Informatik

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

Sprachen und Automaten. Tino Hempel

Grundlagen der Theoretischen Informatik

Compilerbau 12. Übungsblatt, Sommersemester 2015 Abgabetermin:

Vorlesung Automaten und Formale Sprachen Sommersemester Beispielsprachen. Sprachen

Automaten und formale Sprachen Klausurvorbereitung

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 48

Chomsky-Grammatiken 16. Chomsky-Grammatiken

Grundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier. Henning Fernau Universität Trier

Klammersprache Definiere

Theoretische Grundlagen des Software Engineering

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

Theoretische Informatik Mitschrift

Einführung in die Computerlinguistik

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

Grundlagen der Theoretischen Informatik

2. Klausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2017/2018

Formale Sprachen, reguläre und kontextfreie Grammatiken

Deterministischer Kellerautomat (DPDA)

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

Automaten und Formale Sprachen SoSe 2007 in Trier. Henning Fernau Universität Trier

Formale Sprachen. Script, Kapitel 4. Grammatiken

Grundlagen der Theoretischen Informatik

Abschluss gegen Substitution. Wiederholung. Beispiel. Abschluss gegen Substitution

Kontextfreie Sprachen

Schnitt- und Äquivalenzproblem

Formale Sprachen. Formale Grundlagen (WIN) 2008S, F. Binder. Vorlesung im 2008S

Universität Karlsruhe Institut für Theoretische Informatik. Klausur: Informatik III

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

2.1 Allgemeines. Was ist eine Sprache? Beispiele:

9.4 Grundlagen des Compilerbaus

Kontextfreie Sprachen werden von PDAs akzeptiert

Reguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer,

Einführung in die Computerlinguistik Kontextfreie Grammatiken und. Kellerautomaten. Dozentin: Wiebke Petersen

Kontextfreie Sprachen

Endliche Sprachen. Folgerung: Alle endlichen Sprachen sind regulär. Beweis: Sei L={w 1,,w n } Σ*. Dann ist w 1 +L+w n ein regulärer Ausdruck für

Lösungen zu Übungsblatt 6

Formale Sprachen. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marian KOGLER

VU Software Paradigmen / SS 2014

WS06/07 Referentin: Katharina Blinova. Formale Sprachen. Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven

Idee: Wir definieren: 2.4 Topdown Parsing. uaβ mit

Syntax von Programmiersprachen

Berechenbarkeit und Komplexität

Pumping-Lemma 2 Pumping-Lemma Sei L eine von einem endlichen Automaten erkannte Sprache. Dann existiert eine natürliche Zahl p N derart, dass jedes Wo

DisMod-Repetitorium Tag 4

Formale Grundlagen der Informatik

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

Syntax von Programmiersprachen

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012

Hauptklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2011/2012

Theoretische Informatik I

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

2. Übungsblatt 6.0 VU Theoretische Informatik und Logik

Rekursiv aufzählbare Sprachen

Zusammenfassung. Endliche Sprachen. Fazit zu endlichen Automaten. Teil 4: Grammatiken und Syntaxanalyse

THIA - Übungsblatt 2.

Sprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri

Klausur zur Vorlesung Formale Sprachen und Automaten TIT03G2 mit Lösungsvorschlägen

Klausur zur Vorlesung Informatik III Wintersemester 2007/2008

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

Abschnitt 5. Grammatiken

Theorie der Informatik

Kontextfreie Grammatiken

Formale Sprachen und Automaten

Grundbegriffe. Grammatiken

F2 Zusammenfassung Letzte Tips zur Klausur

Transkript:

6 Kontextfreie Grammatiken Reguläre Grammatiken und damit auch reguläre Ausdrücke bzw. endliche Automaten haben bezüglich ihres Sprachumfangs Grenzen. Diese Grenzen resultieren aus den inschränkungen, denen die Produktionen unterliegen. Lockern wir diese inschränkungen sinnvoll, erhalten wir die kontextfreien Grammatiken. In Programmiersprachen kommen z.b. geschachtelte Klammerstrukturen vor. Beispiel Klammerterme T = { ( ) }, N = { S }, P = { S ( ) S (S) S SS } Die Produktion S (S) passt nicht in das Schema einer regulären Grammatik, da nach dem Nichtterminalzeichen S kein Terminalzeichen (hier die schließende Klammer) folgen darf. Die Grammatik heißt kontextfrei, weil im Wort (S) z.b. die Regel S ( ) angewendet werden darf, ohne dass der Kontext, d.h. die Zeichen links und rechts von S berücksichtigt werden müssen. Wenn wir also die inschränkungen für den Aufbau der rechten Seiten der Produktionen lockern, erwarten wir, dass L regulär L kontextfrei gilt. Im Parser eines Compilers wird der Satzbau einer Sprache durch eine kontextfreie Grammatik G beschrieben. Die kontextfreie Grammatik legt z.b. fest, dass z.b. int max = 5; eine zulässige Tokenfolge ist erlaubt die Konstruktion des Parsers aus der Grammatik G erlaubt die Generierung des Objektcodes während der Syntaxanalyse Seite - 45 -/ 23.11.10

KFG1: Grammatik für arithmetische Ausdrücke T = {+ * ( ) ident number } N = { } Startsymbol = P = { ident number () + * } Aufgaben Ist KFG1 eine reguläre Grammatik? Bilde eine Linksableitung zu s1 = ident + ident * ident Bilde eine Linksableitung zu s2 = ident + ident + ident Lösung zu s1: + ident + ident +* ident + ident* ident+ ident*ident s gibt eine zweite Linksableitung: * + * ident + * ident + ident * ident+ ident * ident Der Satz s1 = ident + ident *ident (und damit die Grammatik) ist mehrdeutig Ableitungsbäume zu KFG1 Linksableitungen zu s 1 = ident + ident *ident ident + ident * ident Dieser Ableitungsbaum liefert bzgl. der Rechenoperationen falsche Priorität. ident + ident * ident Seite - 46 -/ 23.11.10

Syntaxdiagramme Die graphische Darstellung von regulären Grammatiken erfolgt durch Automaten. Kontextfreie Grammatiken (und als Teilmenge auch reguläre Grammatiken) lassen sich mit Hilfe von Syntaxdiagrammen darstellen. Beispiel: () wird dargestellt als Graph, wobei Terminalzeichen in Ovalen und Nichtterminalzeichen in Rechtecken stehen. Durchläuft man diesen Graphen von der ingangskante zur Ausgangskante, dann ist die Folge der Konteninhalte (Rechtecke und Ovale), die dabei aufgesucht werden, aus dem zugehörigen Nichtterminal ableitbar. Ovale/ Kreise enthalten Terminalzeichen, Rechtecke enthalten Nichtterminalzeichen. KFG1 infache Grammatik P = { ident number () + * } + * ( ) ident number Man beachte, dass das Nichtterminalzeichen rekursiv angewendet wird. Wie ist die Rekursionsbasis gegeben? Seite - 47 -/ 23.11.10

Die folgende Grammatik erreicht für + und * die richtige Priorität. KFG2: Grammatik mit Prioritäten T = {+ * ( ) ident number } N = { T F } P = { T + T T F T * F F ident number () } Leite ab und bilde die Ableitungsbäume: s1 = ident +ident * ident s3 = (ident +ident) * ident s2 = ident *ident + ident s4 = ident + ident + ident Gib die Grammatik in Form von Syntaxdiagrammen an. Definition ine Grammatik G heißt kontextfrei, wenn alle Produktionen von der Form A x mit x T N und A N sind. Bemerkung: L G regulär L G kontextfrei Frage: Ist laut Definition eine Produktion der Form A ε zulässig? Seite - 48 -/ 23.11.10

Wir erweitern die Grammatik um die Rechenoperationen "-" und "/". KFG3: rweiterte Grammatik für arithmetische Terme T = {+ - * / ( ) ident number } N = { T F } P = { + T -T T T T * F T / F F F ident number () } Aufgaben: Leite ab und erstelle die Ableitungsbäume. a) s1 = ident / ident + ident b) s2 = ident *(ident + ident) c) s3 = ident + ident -ident d) s4 = - ident e) s5 = ident + ident - ident Lösung zu a) S + T T + T T * F +T F * F + T ident * F + T ident * ident +T ident * ident +F ident * ident + ident s besteht noch ein Problem bei KFG3: + T + T + T... + T +... + T + T s liegt eine sog. Linksrekursion vor: Der Parser geht, ohne ein Terminalzeichen aus T zu verarbeiten, in eine endlose Aufruffolge. Abhilfe liminierung aller Linksrekursionen durch eine Faktorisierung der entsprechenden Produktionen: + T wird ersetzt durch T und +T ε benso T T * F wird ersetzt durch T FT und T *FT ε Seite - 49 -/ 23.11.10

Wir erhalten: KFG4: Grammatik für arithmetische Terme ohne Linksrekursion T = { + - * / ( ) ident number } N = { T T F } P = { T +T -T (für führende Vorzeichen!) +T -T ε T FT T *FT /FT ε F ident number () } + - T T + - Aufgabe: Stelle die restlichen Nichtterminale durch Syntaxdiagramme dar. Aufgaben/ Hausaufgaben A1 Bilde Ableitungen und Ableitungsbäume s1 = ident * ident + ident s2 = iden /(ident + ident) s3 = ident + ident * ident s4 = (ident - ident) + ident * ident s5 = ident / ident / ident Lösung zu s3: T FT ident T ident ε ident ε +T ident ε + FT ident ε + ident T ident ε + ident * FT ident ε + ident * ident ε ε Seite - 50 -/ 23.11.10

A2 Beseitige die Linksrekursion (schwierige Aufgabe) P = { S Aa b A Ac Sd e } Lösung: s liegt eine Linksrekursion über zwei Nichtterminale vor: Schritt 1: Beseitigung der S-Produktion in A Sd durch Schritt 2: A3 Gegeben ist eine Grammatik G mit N = { S } und T = {a b } und P = { S ab asb } Wie lautet L(G)? Leite s = aaabbb ab und gib den Ableitungsbaum an. Ändere G so ab, dass L = {a n b n n N 0 } A4 Hinweis: Kontextsensitive Grammatik Gegeben ist G mit N = { S T U } und T = {a b } und P = { S astu atu UT TU at ab bt bb bu b } Leite s = aaabbb ab. Lösung: S astu aastutu aa atu TUTU aa a bu TUTU aaa btutu aaa bb UTU aaabbtu aaab bbu aaabbb A5 T = {0 1 } N = {S } P = { S S } A6 T = { a b} N = {S A } P= { S aba A aa a } Gib ableitbare Wörter an. Ändere G so, daß L = {aba n n N 0 } Seite - 51 -/ 23.11.10

A7 T = { a b} N = {S T } P = { S Sb S Tb T Ta T a } Gib ableitbare Wörter an. A8 Gegeben ist G mit N = { S T } und T = {ident + ( )} und P = { S ident () ST T +S ε } a) Gib die Syntaxdiagramme zur Grammatik G an. b) Leite ab: s1 = ((ident + (ident + ident))) s2 = (ident + ident) A9 Gegeben ist G mit N = { O } und T = {ident number + - * / ( )} und P = { O () ident number O + - * / } a) Leite ab: s1 = -(id) s2 = ident * ident + ident b) Zeige, dass s2 bei einer Linksableitung eine falsche Priorität besitzt. A10 Zeige, dass folgende Grammatik mehrdeutig ist: P = { S b as Sa } Hinweis: Bilde Linksableitungen zu s = aba Gib zwei unterschiedliche Ableitungsbäume zu a an. A11 Gegeben ist G durch P= { S AB B -S ε A a b c } a) Gib T, N an. b) Gib die Syntaxdiagramme an. c) Gib zu s = a b - c die Linksableitung sowie den Ableitungsbaum an. Welche Klammerung liegt vor? Seite - 52 -/ 23.11.10

A12: Auswahlanweisung (Sprache PASCAL) Gegeben ist G mit N = {S} und T = { if then else a b c }, wobei a und b Anweisungen und c eine Bedingung ist. P = { S a b if c then S if c then S else S } a) Zeige, daß der Satz if c then if c then a else b zwei Ableitungsbäume besitzt. Stelle beide dar. b) Die folgende Grammatik besitzt eine eindeutige Klammerung für s. P = { S S1 S2 S1 T if c then S1 else S2 S2 T if c then S if c then S1 else S2 T a b } Gib den Ableitungsbaum an. (Achtung: s gibt trotzdem mehrere Ableitungen!) Bemerkungen 1) s gibt Grammatiken, die dieselbe Sprache erzeugen. 2) s gibt Grammatiken, welche die leere Sprache erzeugen. 3) Ob zwei Grammatiken dieselbe Sprache erzeugen, ist nicht entscheidbar. 4) Ob eine kontextfreie Grammatik eindeutig ist, ist nicht entscheidbar. Seite - 53 -/ 23.11.10

Kellerautomaten Chomsky-Hierarchie der Grammatiken (1959) Wir charakterisieren die verschiedenen Grammatiken nach Typen (Zum Typ i gehört die Sprache L i ). Die entsprechend leistungsfähigen Automatentypen sind ebenfalls angegeben. s gilt (ohne Beweis) eine echte Teilmengenbeziehung: L 3 L 2 L 1 L 0 Typ 0 Menge der Sprachen, die durch Grammatiken (ohne inschränkung) erzeugbar sind Turingmaschinen Typ 1 Menge der Sprachen, die durch kontextsensitive Grammatiken erzeugbar sind. nichtdeterministisch linear beschränkte Automaten Typ 2 Menge der kontextfreien Sprachen nichtdeterministische Kellerautomaten Typ 3 Menge der regulären Sprachen endliche Automaten (deterministisch oder auch nichtdeterministisch) Seite - 54 - / 23.11.10