Operationen auf Grammatiken

Ähnliche Dokumente
Grundlagen der Programmierung 2 (Comp-D)

LR-Parser, Shift-Reduce-Verfahren

Fachseminar Compilerbau

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

Stackmaschine; Speicheradressierung

LR Parsing. Prinzip: Entwicklung des Parsebaums bottom up, von links nach rechts (Abb. 2.52)

Earley Parser. Flutura Mestani

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

2.1 Allgemeines. Was ist eine Sprache? Beispiele:

Grundlagen der Programmierung 2 (Comp-C)

Kellerautomat (1/4) Kellerautomat (2/4) Kellerautomat (3/4) Kellerautomat (4/4)

Software Entwicklung 1

1 Formale Sprachen, reguläre und kontextfreie Grammatiken

Lexikalische Analyse, Tokenizer, Scanner

Grundlagen der Programmierung

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik

Grundlagen der Theoretischen Informatik

6 Kontextfreie Grammatiken

Grundlagen der Programmierung 2 (Comp-C)

Klammersprache Definiere

Grundlagen der Programmierung 3 A

VU Software Paradigmen / SS 2014

Compilerbau. Bachelor-Programm. im SoSe Prof. Dr. Joachim Fischer Dr. Klaus Ahrens Dr. Andreas Kunert Dipl.-Inf.

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

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

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

2.2 Syntax, Semantik und Simulation

Äquivalente Grammatiken / attributierte Grammatik

Vorlesung Automaten und Formale Sprachen Sommersemester Beispielsprachen. Sprachen

Syntaktische Analyse (Parsen) Grundlagen der Programmierung. Syntaktische Analyse eines Programms. Syntaktische Analyse bzgl einer CFG

Compiler: Parser. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München. Letzte Änderung:

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

Phasen eines Compilers. Grundlagen der Programmierung 2. Programm für heute. LR-Parser, Shift-Reduce-Verfahren. Schiebe-Reduziere-Parser

Definition der Greibach-Normalform

Ogden s Lemma (T6.4.2)

LR-Parsing. Präsentation vom 19. Dez Adriana Kosior, Sandra Pyka & Michael Weidauer. Automatische Syntaxanalyse (Parsing) Wintersemester 12/13

Ein Fragment von Pascal

Automaten und formale Sprachen Klausurvorbereitung

Einführung - Parser. Was ist ein Parser?

Formale Sprachen, reguläre und kontextfreie Grammatiken

Informatik III - WS07/08

Theoretische Grundlagen der Informatik

Übung zu Grundlagen des Übersetzerbaus

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

Syntaktische Analyse (Parsen)

Compiler; Übersetzungsprogramme. Grundlagen der Programmierung 3 A. Compiler für Programmiersprachen. Phasen eines Compilers

Grundlagen der Programmierung 2. Operationale Semantik

Compilerbau 12. Übungsblatt, Sommersemester 2015 Abgabetermin:

Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie

Grundlagen der Theoretischen Informatik

Theoretische Grundlagen der Informatik

Satz (Abschluß unter der Stern-Operation)

Einführung in die Computerlinguistik Chart-Parsing

Grundlagen der Programmierung 3 A

Konstruieren der SLR Parsing Tabelle

Shift Reduce Parser (Bottom up Parser) Historie Grundbegriffe Tabellengesteuerter LR(1) Parser Konstruktion der Elementmengen Tabellenkonstruktion

2.1 Grundlagen: Kontextfreie Grammatiken

Vorlesung Programmieren

I.5. Kontextfreie Sprachen

Dyck-Sprachen & Syntax-Analyse

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

Mehrdeutige Grammatiken

9.4 Grundlagen des Compilerbaus

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012

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

Compiler, Übersetzer. Allgemeine Erklärung / Definition

Grundlagen der Programmierung 2 (Comp-A)

Informatik III. Christian Schindelhauer Wintersemester 2006/07 5. Vorlesung

Aussagenlogik: Syntax von Aussagen

Theoretische Informatik I

(Prüfungs-)Aufgaben zu formale Sprachen

3 Syntax von Programmiersprachen

Shift Reduce Parser (Bottom up Parser) Historie Grundbegriffe Tabellengesteuerter LR(1) Parser Konstruktion der Elementmengen Tabellenkonstruktion

3.1 Reservierte Wörter

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

Übersicht. 3 3 Kontextfreie Sprachen

Alphabet, formale Sprache

Compilerbau Syntaxanalyse 68. LR(1)-Syntaxanalyse

Universität Karlsruhe (TH)

3 Syntax von Programmiersprachen

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

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

5. Syntaxanalyse und der Parser-Generator yacc. 5.5 Aufsteigende Analyse. Absteigende Analyse versus aufsteigende Analyse. 5.5 Aufsteigende Analyse

Grammatiken und ANTLR

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 18/19

VU Software Paradigmen / SS 2014

VU Software Paradigmen / SS 2012

Kapitel 3. Kontextfreie Sprachen. Induktive Charakterisierung der Sprache L der korrekten Klammerausdrücke: (w) L, falls w L vw L, falls v, w L

2.4 Kontextsensitive und Typ 0-Sprachen

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

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

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I

Dank. 1 Ableitungsbäume. 2 Umformung von Grammatiken. 3 Normalformen. 4 Pumping-Lemma für kontextfreie Sprachen. 5 Pushdown-Automaten (PDAs)

Das Postsche Korrespondenzproblem

Softwareparadigmen VU / SS 2018

Transkript:

Operationen auf Grammatiken Ziel: Normalisierungen, Vereinfachungen, Elimination bestimmter Konstrukte Erzeugen eines Parsers Transformation G 1 G 2 mit L(G 1 ) = L(G 2 ) I.a. Parsebaum 1 (w) Parsebaum 2 (w) Es soll gelten: opsemantik 1 (w) = opsemantik 2 (w) Das erfordert: Semantik-Abbildung von G 1 nach G 2 Effekte: Grammatik kann sich vergrößern Parser kann effizienter werden P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 1

Normalisierungen G ist in Chomsky-Normalform, wenn alle Produktionen von der Form A ::= a oder A ::= BC sind, wobei A, B und C Nichtterminale, a Terminalsymbol G ist in Greibach-Normalform, wenn alle Produktionen von der Form A ::= ab 1... B k sind, wobei A, B i Nichtterminale und a Terminalsymbol P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 2

Elimination der Epsilon-Produktionen Epsilon-Elimination: G 1 G 2 Ziel: In G 2 sollen keine Regeln der Form A ::= ε vorkommen Eigenschaften: L(G 1 ) \ {ε} = L(G 2 ) Bottom-Up-Parsing kann effizienter werden Grammatik (Anzahl Regeln) kann exponentiell wachsen. P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 3

Elimination der Epsilon-Produktionen Vorgehen: 1. Klassifiziere Nichtterminale A in G 1 Benutze dazu Fixpunktiteration A ist löschbar wenn ε L(A) A ist leer wenn L(A) {ε} A ist nicht löschbar wenn weder ε L(A) noch L(A) =. P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 4

Elimination der Epsilon-Produktionen 2. Erzeuge neue Regelmenge zu G 2 für alle G 1 -Regeln A X 1... X n : In G 2 sind alle Regeln A α 1... α n mit: a.) wenn X i nicht löschbar, dann α i = X i ; b.) wenn X i löschbar, dann α i = ε oder α i = X i c.) wenn X i leer ist, dann α i = ε; d.) die neue rechte Seite darf nicht ε sein. P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 5

Elimination der Epsilon-Produktionen (2) Eigenschaften Epsilon-Elimination erzeugt G 2 mit L(G 1 ) \ {ε} = L(G 2 ) Anzahl der Regeln kann exponentiell wachsen. Herleitungsbäume werden durch die Elimination verändert Die Semantik-Abbildung kann angepasst werden: I.a. spielen ε-resultate keine Rolle. analog zu neutralem Element einer Operation P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 6

Elimination der Epsilon-Produktionen: Beispiel Grammatik zu positiven ganzen Zahlen: Zahl ::= Ziffer Zahl ε Ziffer ::= 1... 9 0 Zahl ist löschbar Nach ε-elimination: Zahl ::= Ziffer Zahl Ziffer Ziffer ::= 1... 9 0 P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 7

Epsilon-Elimination: Effekt auf Parsebäume S ::= Zahl Zahl ::= Ziffer Zahl ε Ziffer ::= 1... 9 0 G 1 -Parsebaum für das Wort 12: Zahl 1 Ziffer 1 Zahl 1 1 Ziffer 2 Zahl 2 2 ε P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 8

Semantik für G 1 -Parsebäume S λ(x, y). y Zahl 1 λx, (y1, y2). (10 y1, y1 x + y2) Zahl 2 λx. (1, 0) Ziffer n λx. n ( Alternativ: λx. wert(x) ) Haskell: \x ->(read [x])::int Zahl 1 :: Int->(Int,Int)->(Int,Int). interne Darstellung der Semantik durch Paare: 1. Komponente ist die 10-er Potenz, die der Stelligkeit entspricht, 2. Komponente ist der Zahlenwert des rechten Baumes. ε entspricht dem Wert 0. P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 9

Parsebaum zu G 2 Nach ε-elimination: S ::= Zahl Zahl ::= Ziffer Zahl Ziffer Ziffer ::= 1... 9 0 Zahl 1 Ziffer 1 Zahl 2 1 Ziffer 2 2 P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 10

Semantik für G 2 -Parsebäume S λ(x, y). y Zahl 1 λx, (y1, y2). (10 y1, y1 x + y2) Zahl 2 λx. (10, x) Ziffer n λx. wert(x) Epsilon-Elimination: Zahlberechnung muss verändert werden. P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 11

Elimination von Links-Rekursionen Bei rekursiv absteigenden Parsern: Linksrekursion in der Grammatik bewirkt eine Endlosschleife Bespiel für direkte Links-Rekursion: A ::= Aw Parserfunktion: parsea ein = parsea ein... parsew rest P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 12

Links-Rekursionen Beispielgrammatik Expr ::= Expr + Term Term Term ::= 0... 9 Der rekursiv absteigende Parser dazu terminiert nicht Abhilfe: Umbau der Grammatik bei gleicher erzeugter Sprache P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 13

Links-Rekursionen Definition Eine Grammatik G ist linksrekursiv, wenn es eine Folge von Nichtterminalen A 1,..., A n gibt und eine Folge von Regeln der Grammatik der Form A 1 ::= A 2 w 1, A 2 ::= A 3 w 2,..., A n ::= A 1 w n. Bei linksrekursiven G. terminiert der rekursive absteigende Parser nicht (Links-)Rekursion ist durchaus sinnvoll, aber inkompatibel mit der Methode des rekursiven Abstiegs. P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 14

Elimination der Links-Rekursionen Beispiel A ::= Aα β sind die Regeln zu Nichtterminal A, β startet nicht mit A, und αβ ε. Grammatiktransformation: Erzeuge neues Nichtterminal B Ersetze obige Regeln durch: A ::= β βb B ::= α B α In der neuen Grammatik sind A, B nicht linksrekursiv. P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 15

Elimination von Linksrekursion Begründung für die Korrektheit die formalen Sprache zu A bleibt erhalten: Vorher: A ::= Aα β die formale Sprache zu A entspricht β(α). Nachher: A ::= β βb B ::= α B α formale Sprache zu B: entspricht (α) +. formale Sprache zu A: entspricht β(α). P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 16

Elimination von Linksrekursion: Syntaxbäume Beispiel Syntaxbäume vorher und nachher: R RA R α β RB β α α RB α ε P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 17

L.R.- Elimination Semantik-Transformation? Möglichkeit A: Parsebaum 2 Parsebaum 1 D.h.: Abbildung auf die Parsebäume vor der Transformation Möglichkeit B: Beobachtung: Regel entspricht assoziativem Operator mit neutralem Element: erlaube Umklammerung und ε als neutrales Element P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 18

L.R. Elimination: Syntaxbäume Semantische Abbildung: φ(r) = φ(ra) = φ(rb), Herleitungsbaum vorher: f(f(β, α ), α ) Herleitungsbaum nachher: f(β, f(α, f(α, ε ))). Der semantische Wert ist gleich, wenn ε neutrales Element für f, und f assoziativ ist. f könnte sein: +,, append, concat Beachte * auf Float ist nicht assoziativ wg. Rundung Benutzung der Assoziativität von * verändert in diesem Fall die operationale Semantik P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 19

Beispiel: L.R.-Elimination Expr ::= Expr Term Term Term ::= 0... 9 Nach Elimination der Linksrekursion: Expr ::= Term ExprB Term ExprB ::= Term Term ExprB Term ::= 0... 9 Vorher: 1 2 3 wird als ((1 2) 3) geklammert Nachher: als (1 (2 3)). Falsch! Abhilfe interpretiere als 1 + ( 2) + ( 3) P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 20

Beispiel: L.R.-Elimination indirekte Links-Rekursion: A ::= Sa b S ::= Bc Ad e B ::= f... rekursiver absteigender Parser: Schleife bei bd Erkennung bei fa P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 21

Linksrekusion Es gilt: Ein Grammatik ist links-rekursiv, wenn es für ein Nichtterminal A und einen String α eine Herleitung A + Aα gibt. Es gilt auch: Jede Linksrekursivität kann durch Transformation der Grammatik beseitigt werden unter Beibehaltung der erzeugten formalen Sprache. Aber: andere Herleitungsbäume P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 22

Beseitigung von Mehrdeutigkeiten Klassisches Beispiel: dangling else Stmt ::= if Expr then Stmt else Stmt if Expr then Stmt other Diese Grammatik ist mehrdeutig: if E 1 then if E 2 then S 1 else S 2 hat zwei Parsebäume ifthenelse ifthen ifthen E 1 S 2 E 1 ifthenelse E 2 S 1 E 2 S 1 S 2 P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 23

Beseitigung von Mehrdeutigkeiten Diese Mehrdeutigkeiten kann man als Fehler beim Hinschreiben der Grammatik ansehen. Ändere die Grammatik: Semantik: (Prinzip): gleich erzeugte Sprache aber keine Mehrdeutigkeit mehr else gehört jeweils zum letzten freien then Neue Grammatik: Halbes-IF, Ganzes-IF S ::= HIF GIF HIF ::= if Expr then S GIF ::= if Expr then GIF else S other P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 24

Links-Faktorisierung Problem der rekursiv absteigenden Parser: Gleiche Anfänge von rechten Seiten von Regeln Bewirkt Suche nach der richtigen Alternative Kann exponentielle Verschlechterung der Effizienz bedeuten. Abhilfe: Zusammenfassen der Anfänge der Regelalternativen A ::= αβ 1 αβ 2 wird umgewandelt in: A ::= αb B ::= β 1 β 2 P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 25

Linksfaktorisierung: Beispiel H ::= if Expr then H if Expr then G else H kann man umwandeln in Ifethen ::= if Expr then H2 ::= H G else H H ::= Ifethen H2 P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 26

Linksfaktorisierung: Bemerkungen optimiert rekursiv-absteigende Parser, da unnötiges Zurücksetzen verhindert wird. Semantik: kann leicht angepasst werden, Parsebäumen sind struktur-ähnlich Sinnvoll: Zusammenfassen gleicher Anfänge rechter Seiten von Regeln für verschiedene Nichtterminale Ausklammern auch über mehrere Regeln P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 27

Linksfaktorisierung: Beispiel S ::= HIF GIF HIF ::= if Expr then S GIF ::= if Expr then GIF else S wird zu: S ::= IET IET ::= if Expr then IET2 IET2 ::= HIF2 GIF2 HIF2 ::= S GIF2 ::= GIF else S GIF ::= if Expr then GIF else S Die formalen Sprachen dazu sind gleich Anzahl der Nichtterminale hat sich etwa verdoppelt. P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 28

Bemerkungen zur Fehlererkennung Die Fehlererkennung und -meldung sollte spezifisch sein und möglichst genau die Ursache und Stelle melden. Die Fehlermeldung: Keine Alternativen mehr gefunden in etwa ab Zeile... ist fast ohne Wert Bei deterministischen Parsern: Der Fehlerort ist klar; die Fehlerursache ist auch meist spezifisch genug P raktische Informatik 2, SS 2005, F olien Kap.4, 3, (16. Juni2005) Seite 29