Theoretische Informatik I



Ähnliche Dokumente
2.11 Kontextfreie Grammatiken und Parsebäume

Theoretische Informatik I

Programmiersprachen und Übersetzer

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

Formale Sprachen und Grammatiken

Theoretische Grundlagen der Informatik

7. Formale Sprachen und Grammatiken

Theorie der Informatik

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Formale Sprachen, reguläre und kontextfreie Grammatiken

Grammatiken. Einführung

Mathematische Grundlagen der Informatik 2

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Grundbegriffe der Informatik

Grundbegriffe der Informatik

Grundbegriffe der Informatik

Grundbegriffe der Informatik

Vorlesung Theoretische Informatik

Grammatiken und die Chomsky-Hierarchie

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Formale Sprachen. Der Unterschied zwischen Grammatiken und Sprachen. Rudolf Freund, Marian Kogler

Was ist ein Compiler?

Wortproblem für kontextfreie Grammatiken

Informatik IV Theoretische Informatik: Formale Sprachen und Automaten, Berechenbarkeit und NP-Vollständigkeit

WS 2009/10. Diskrete Strukturen

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

Sprachen/Grammatiken eine Wiederholung

Theoretische Informatik I

Einführung in die Informatik Grammars & Parsers

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Programmieren I. Formale Sprachen. Institut für Angewandte Informatik

Notation um Grammatik G hervorzuheben: Eine kontextfreie Grammatik erzeugt eine kontextfreie Sprache. Informatik I -1- WS 2005/2006

Kapitel 2. Methoden zur Beschreibung von Syntax

Binäre Bäume Darstellung und Traversierung

Einführung in die Computerlinguistik

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1

Theoretische Grundlagen des Software Engineering

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Grammatiken in Prolog

TheGI 1: Grundlagen und algebraische Strukturen Prof. Dr.-Ing. Uwe Nestmann Februar Schriftliche Leistungskontrolle (EK)

Informatik IC2. Balazs Simon

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Was bisher geschah: Formale Sprachen

Was bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen Constraint-Systemen Logiken Repräsentation von Mengen

Kapitel 2: Formale Sprachen Gliederung

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

ARBEITSBLATT ZU FORMALEN SPRACHEN

Kapiteltests zum Leitprogramm Binäre Suchbäume

Künstliche Intelligenz Maschinelles Lernen

Ein Fragment von Pascal

Grundbegriffe der Informatik Tutorium 7

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 48

4. 4. Algorithmen und Datenstrukturen in deskriptiven Programmiersprachen

Binäre Suchbäume (binary search trees, kurz: bst)

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Automaten und formale Sprachen Klausurvorbereitung

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany Stammbaum. Stammbaum. Stammbaum

Compiler, Übersetzer. Allgemeine Erklärung / Definition

Grundlagen der Theoretischen Informatik, SoSe 2008

Reguläre Sprachen Endliche Automaten

Informatik I WS 07/08 Tutorium 24

Einführung in. Logische Schaltungen

Datenstrukturen & Algorithmen

Aufgabentypen die in der Klausur vorkommen

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9

Software-Engineering SS03. Zustandsautomat

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

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Prolog basiert auf Prädikatenlogik

Compiler. Kapitel. Syntaktische Analyse. Kapitel 4. Folie: 1. Syntaktische Analyse. Autor: Aho et al.

Theoretische Informatik I

Funktionale Programmierung mit Haskell

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4

Grundlagen der Programmierung 2. Bäume

Grundlagen der Theoretischen Informatik

Theoretische Grundlagen des Software Engineering

RDF und RDF Schema. Einführung in die Problematik Von HTML über XML zu RDF

1 topologisches Sortieren

Übung Theoretische Grundlagen

1 Aussagenlogik und Mengenlehre

GRAF-SYTECO. Handbuch. Zeichensatzgenerator für AT-Geräte. Erstellt: November SYsteme TEchnischer COmmunikation

Einführung in die Theoretische Informatik

3. Grundlagen der Linearen Programmierung

15 Optimales Kodieren

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

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Themenblock 2: Datenmodellierung mit ERM

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

IT-Basics 2. DI Gerhard Fließ

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt?

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Transkript:

Theoretische nformatik inheit 3 Kontextfreie Sprachen 1. Kontextfreie Grammatiken 2. Pushdown Automaten 3. igenschaften kontextfreier Sprachen

Theoretische nformatik inheit 3.1 Kontextfreie Grammatiken 1. Grammatiken und Ableitungen 2. Ableitungsbäume 3. Mehrdeutigkeiten

Grammatiken für Programmiersprachen Grammatiken beschreiben Aufbau von Sprachen Produktionsregeln generieren nichtdeterministisch alle Worte der Sprache Grammatiken können sehr komplexe Sprachen beschreiben Chomsky Hierarchie klassifiziert Grammatiken nach Freiheitsgraden Typ-3 Grammatiken sind einfach & effizient Umwandelbar in endlichen Automaten und reguläre Ausdrücke rkennung von Worten der Sprache in chtzeit Programmiersprachen können nicht regulär sein Korrekte Klammerausdrücke / Schachtelungen sind nicht regulär Die meisten Programmstrukturen enthalten Schachtelungen Blöcke, if-then-else, arithmetische Ausdrücke,... Syntaxanalyse und Compilation von Programmiersprachen braucht kontextfreie Grammatiken Theoretische nformatik 3: 1 Kontextfreie Grammatiken

Anwendungen kontextfreier Sprachen Alle bedeutenden Computersprachen sind kontextfrei Programmiersprachen Compiler kann kontextfreie Grammatiken effizient verarbeiten Parser kann aus kontextfreier Grammatik automatisch erzeugt werden Standard Unix tool YACC unterstützt schnellen Compilerentwurf Markup Sprachen HTML: Formattierung von Dokumenten mit Links zu Programmaufrufen XML: inheitliche Beschreibung der Semantik von Dokumenten Beide Sprachen erfordern die Mächtigkeit von kontextfreie Grammatiken Mehr in HMU 5.3 Theoretische nformatik 3: 2 Kontextfreie Grammatiken

Kontextfreie Grammatiken Grundbegriffe ine kontextfreie Grammatik (kfg) ist ein 4-Tupel G = (V, T, P, S) mit T endliches Terminalalphabet V endliches Hilfsalphabet mit V T = P V Γ endliche Menge der Produktionen (wobei Γ = V T ) S V Startsymbol Die übliche Schreibweise für Produktionen (A, r) P ist A r ine kompakte Notation für A r 1, A r 2..A r n ist A r 1 r 2.. r n Ableitungbarkeit in G w z x, y Γ. A r P. w=x A y z=x r y w z n N. w n z wobei w 0 z w=z und w n+1 z u Γ. w u u Von G erzeugte Sprache: L(G) {w T S w} n z Theoretische nformatik 3: 3 Kontextfreie Grammatiken

Grammatik für geschachtelte Klammerausdrücke G 4 = ( {S}, {(, )}, {S (S), S ɛ}, S ) Zeige L(G 4 ) = {( k ) k k N} Beweise durch nduktion über Länge der Ableitung k N. w {(, )}. S k+1 w w = ( k ) k Basisfall S 1 w (S w) P w = ɛ w = ( 0 ) 0 nduktionsschritt s gelte v {(, )}. S k+1 v v = ( k ) k S k+2 w S (S) k+1 w v {(, )}. S k+1 v w = (v) v {(, )}. v = ( k ) k w = (v) w = ( k+1 ) k+1 (Annahme) {( k ) k k N} L 2 L 3 Theoretische nformatik 3: 4 Kontextfreie Grammatiken

Kontextfreie Grammatik für Palindrome L(G 5 ) = {w {0, 1} w = w R } G 5 = ({S}, {0, 1}, P, S) mit P = {S ɛ, S 0, S 1, S 0S0, S 1S1} Beweise durch nduktion über Länge der Ableitung k N. w {0, 1}. S k+1 w w = w R w {2k, 2k+1} Basisfall S 1 w (S w) P w {0, 1, ɛ} w = w R w {0, 1} nduktionsschritt s gelte v {0, 1}. S k+1 v v = v R v {2k, 2k+1} S k+2 w S 0S0 k+1 w S 1S1 k+1 w v {0, 1}. S k+1 v w = 0v0 w = 1v1 v {0, 1}. v = v R v {2k, 2k+1} w = 0v0 w = 1v1 w = w R w {2k+2, 2k+3} Theoretische nformatik 3: 5 Kontextfreie Grammatiken

Grammatik für Arithmetische Ausdrücke Ausdrücke über Operatoren + und Bezeichner (dentifier): Buchstabe gefolgt von Buchstaben/Ziffern Buchstaben a, b, Ziffern 0, 1 Ausdrücke (xpressions): Schachtelung mit +, und Klammern G 6 = ({, }, {a, b, 0, 1, +,, (, )}, P, ) mit P = { + () a b a b 0 1 } Theoretische nformatik 3: 6 Kontextfreie Grammatiken

Links- und rechtsseitige Ableitungen Strategie für Auswahl von Produktionen Beliebige Ableitung () (+) (+) (+) (a+) (a+0) (a+00) (a+b00) a (a+b00) Linksseitige Ableitung w L z n w wird die am weitesten links stehende Variable ersetzt L L L a L a () L a (+) L a (+) L a (a+) L a (a+) L a (a+0) L a (a+00) L a (a+b00) Rechtsseitige Ableitung w R z n w wird die am weitesten rechts stehende Variable ersetzt R R () R (+) R (+) R (+0) R (+00) R (+b00) R (+b00) R (a+b00) R (a+b00) R a (a+b00) Theoretische nformatik 3: 7 Kontextfreie Grammatiken

Ableitungsbäume (Parsebäume) Baumdarstellung von Ableitungen Geordneter markierter Baum nnere Knoten mit Variablen A V markiert Wurzel markiert mit Startsymbol Blätter mit Terminalsymbolen a T oder mit ɛ markiert Hat ein innerer Knoten Markierung A und Nachfolger mit Markierungen v 1...v n so ist A v 1...v n P xkurs: Notation für Bäume Baum: Sammlungen von Knoten mit Nachfolgerrelation Nachfolger sind geordnet in Knoten hat maximal einen Vorgänger Wurzel: Knoten ohne Vorgänger Blatt / nnerer Knoten: Knoten ohne/mit Nachfolger Nachkommen: transitive Hülle der Nachfolgerrelation ( ) a + a 0 0 b Theoretische nformatik 3: 8 Kontextfreie Grammatiken

Ableitungsbäume repräsentieren Ableitungen Blätter repräsentieren Terminalworte Auslesen durch Tiefensuche von links nach rechts a (a + b00) Baum repräsentiert Ableitungen S Rekursive rzeugung beginnend mit Wurzel Vorrang für tiefe linke Knoten ergibt Linksableitung L L L a L a () L a (+) L a (+) L a (a+) L a (a+) L a (a+0) L a (a+00) L a (a+b00) Vorrang für tiefe rechte Knoten ergibt Rechtssableitung a ( ) + a 0 0 w es gibt einen Ableitungsbaum mit Blattmarkierung w : Konstruiere Baum induktiv aus Linksableitung von w : xtrahiere Linksableitung von w induktiv aus Baum HMU 5.2 b Theoretische nformatik 3: 9 Kontextfreie Grammatiken

Wann ist der Ableitungsbaum eindeutig? + + c a a b b c a b + c hat zwei Ableitungen in G 6 + + + a + a + a b+ a b+ a b+c a a + a + a b+ a b+ a b+c Beide Ableitungen sind Linksableitungen Grammatik G 6 ist mehrdeutig Worte der Sprache können nicht eindeutig analysiert werden Theoretische nformatik 3: 10 Kontextfreie Grammatiken

Mehrdeutigkeit indeutige Grammatik G = (V, T, P, S) Jedes Wort w L(G) hat genau einen Ableitungsbaum Andernfalls ist G mehrdeutig (ein w L(G) hat mindestens zwei verschiedene Ableitungsbäume) G 6 ist mehrdeutig indeutige Sprache L s gibt eine eindeutige Grammatik G mit L = L(G) Andernfalls ist L inhärent mehrdeutig (eine eindeutige Grammatik kann nicht angegeben werden) Die Sprache von G 6 ist eindeutig {0 i 1 j 2 k i=j j=k} ist inhärent mehrdeutig Buch von Wegener Programmiersprachen mussen eindeutig sein Theoretische nformatik 3: 11 Kontextfreie Grammatiken

Auflösung von Mehrdeutigkeiten G 6 = ({, }, {a, b, 0, 1, +,, (, )}, P, ) mit P = { + (), a b a b 0 1 } G 6 beinhaltet keine Konventionen für und + bindet stärker als + und + werden als linkssassoziativ angesehen Alle anderen Lesarten benötigen Klammern Prioritätsregeln können indeutigkeit erzeugen Niedrigste Prioriät + steht linkssassoziativ außen T erme Höhere Prioriät steht linkssassoziativ innen F aktoren Faktoren können Bezeichner oder Ausdrücke in Klammern sein G 6 = ({, T, F, }, {a, b, 0, 1, +,, (, )}, P, ) mit P = { T +T, T F T F, F () a b a b 0 1 } G 6 ist äquivalent zu G 6 und eindeutig Theoretische nformatik 3: 12 Kontextfreie Grammatiken

indeutigkeit von G 6 P = { T +T, T F T F, F () a b a b 0 1 } Jeder Term muß aus einer Faktorenfolge bestehen Faktorenfolge muß von rechts nach links erzeugt werden Faktoren sind nur Bezeichner oder Ausdrücke in Klammern s gibt nur einen Parsebaum für f 1 f 2... f n Jeder Ausdruck muß aus einer Termfolge bestehen Termefolge muß von rechts nach links erzeugt werden Terme haben keine Ausdrücke als direkte Teile s gibt nur einen Parsebaum für t 1 + t 2 +... + t k + T T T F F F a b c inziger Ableitungsbaum für a b + c Theoretische nformatik 3: 13 Kontextfreie Grammatiken