VU Software Paradigmen / SS 2014

Ähnliche Dokumente
Konstruieren der SLR Parsing Tabelle

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

2.6 Deterministisches Top-Down-Parsen

LL(k)-Analyse. (y) folgt α = β. (x) = start k. (=l> ist ein Linksableitungsschritt)

Fachseminar Compilerbau

LL(1)-Parsing. Ullrich Buschmann, Linda Schaffarczyk, Maurice Schleussinger. Automatische Syntaxanalyse (Parsing)

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

Von der Grammatik zum AST

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

Der Earley-Algorithmus

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

Theoretische Grundlagen der Informatik

Automatentheorie und formale Sprachen

Formale Sprachen. Grammatiken. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marion OSWALD. Grammatiken: Ableitung

1. Übungsblatt 6.0 VU Theoretische Informatik und Logik

Vorlesung Automaten und Formale Sprachen Sommersemester Beispielsprachen. Sprachen

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

Kapitel 5: Syntax-Analyse

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

Grundlagen der Theoretischen Informatik

Das Halteproblem für Turingmaschinen

Was bisher geschah: Formale Sprachen

Grundbegriffe. Grammatiken

Abschnitt 5. Grammatiken

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

Endgültige Gruppeneinteilung Kohorte Innere-BP Sommersemester 2016 (Stand: )

Tutoraufgabe 1 (ɛ-produktionen):

Theoretische Grundlagen der Informatik

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

Alphabet, formale Sprache

Formale Sprachen und Grammatiken

Automaten und formale Sprachen Klausurvorbereitung

Einführung in die Computerlinguistik. Chomskyhierarchie. Dozentin: Wiebke Petersen Wiebke Petersen Einführung CL (SoSe 2010) 1

Grundlagen der Theoretischen Informatik

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

Definition der Greibach-Normalform

Formale Sprachen. Script, Kapitel 4. Grammatiken

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

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Theoretische Informatik I

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

CompB Zusammenfassung

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

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

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

Rekursiv aufzählbare Sprachen

Grundlagen der Theoretischen Informatik

Deterministischer Kellerautomat (DPDA)

Kapitel IV Formale Sprachen und Grammatiken

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

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

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

Theoretische Grundlagen des Software Engineering

I.5. Kontextfreie Sprachen

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

Formale Grundlagen der Wirtschaftsinformatik

Vorname:... Matrikel-Nr.:... Unterschrift:...

Compilerbau Syntaxanalyse 68. LR(1)-Syntaxanalyse

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

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

Typ-1 Sprachen. Die Beispielgrammatik für die Sprache. L = {a n b n c n n 1} hat die folgende Regelmenge:

Kontextfreie Sprachen

Grundlagen der Theoretischen Informatik

Theoretische Informatik I

Transkript:

VU Software Paradigmen 716.060 / SS 2014 Thorsten Ruprechter ruprechter@tugraz.at Institute for Software Technology 1

Organisatorisches Ausgabe: 25.03. (heute) Fragestunde: 22.04. Abgabe: 29.04 (ausgedruckt) Einsichtnahme: wird bekanntgegeben Gruppengröße: 2 tu-graz.lv.swp.gruppensuche gemeinsame Abgabe Institute for Software Technology 2

Inhalt Grammatiken Allgemeines & Produktionsregeln Parse Trees Chomsky-Sprachhierarchie LL(1) Allgemeines FIRST & FOLLOW Parse-Table Scala Institute for Software Technology 3

Grammatik - Allgemeines Definiert mögliche Wörter einer Sprache Grammatik ist 4-Tupel Nonterminale Terminale (unterstrichen) Startsymbol Endliche Menge von Produktionsregeln α β Institute for Software Technology 4

Grammatik Produktionsregel Def.: β kann von α abgeleitet werden α β Aneinanderreihung von Non-Terminalen und Terminalen mindestens ein Non-Terminal Aneinanderreihung von Non-Terminalen und Terminalen inklusive leere Menge Institute for Software Technology 5

Grammatik - Beispiel Institute for Software Technology 6

Grammatik - Sprachhierarchie Chomsky Hierarchie = 4 Ebenen unterscheidet nach Komplexität prod. Sprachen hier von keine Regeln bis strikte Regeln geordnet [Typ 0] allgemein/uneingeschränkt [Typ 1] kontext-sensitiv [Typ 2] kontext-frei [Typ 3] regulär Institute for Software Technology 7

Sprachhierarchie - uneingeschränkt Allgemeine Grammatiken unrestricted Jede gültige Grammatik, welche keine Restriktionen bezüglich der Ableitung aufweist Def: G: keine Restriktionen bezüglich α β Institute for Software Technology 8

Sprachhierarchie kontext-sensitiv alle Regeln von uneingeschränkten Grammatiken erfüllt nicht mehr Symbole produziert als gelöscht = Anzahl Symbole links kleiner gleich Anzahl Symbole rechts Def: G sens : α β Institute for Software Technology 9

Sprachhierarchie kontext-frei alle Regeln von kontext-sensitiven Grammatiken erfüllt zusätzlich: α = genau EIN Non-Terminal Def: G free : α β, α V N Institute for Software Technology 10

Sprachhierarchie regulär alle Regeln von kontext-freien Grammatiken erfüllt Zusätzlich: β = aa oder β = a a = Terminal oder leer (epsilon/ε) A = Non-Terminal Def: α β, α V N, β hat Form aa oder a, mit a V T {ε}, A V N Institute for Software Technology 11

Parse Trees Parser Überprüft, ob Satz in Sprache (= durch Grammatik definiert) vorhanden ist Kann Zeichenkette durch Grammatik geparst werden? Visuelle Darstellung Institute for Software Technology 12

Parse Tree - Beispiel G: ( {E}, { (, ), num, +, * }, E, ) { } E E + E E E * E E ( E ) E num Ist num + num * num in dieser Sprache?? Institute for Software Technology 13

Parse Tree - Beispiel G: ( {E}, { (, ), num, +, * }, E, { E E + E E E * E E ( E ) E num } ) Institute for Software Technology 14

Parse Tree - Beispiel G: ( {E}, { (, ), num, +, * }, E, { E E + E E E * E E ( E ) E num } ) Institute for Software Technology 15

LL(1) - Allgemeines Left to right / Leftmost derivation Kontextfreie Grammatik mit Einschränkungen Keine Linksrekursion (direkt oder indirekt) L La I Jx und J Iy Keine Linksfaktorisierung F ax und F ay Institute for Software Technology 16

LL(1) - Linksrekursion Direkt L La L b Auflösen L bm M am ε Indirekt I J I z J Iy Auflösen in direkte I Iy I z Institute for Software Technology 17

LL(1) - Linksfaktorisierung Mehrdeutigkeit auflösen F xg F xh Auflösen F xe E G H Institute for Software Technology 18

LL(1) Umformen Äquivalenz muss bestehen bleiben G vor = G nach Überprüfe immer, ob beide Grammatiken die exakt selbe Sprache erzeugen Institute for Software Technology 19

LL(1) - Allgemeines Warum? Einfaches Parsing Nächstes Token muss reichen, um Produktionsregel zu identifizieren 1 Token Look Ahead Wie? Möglich durch Hilfe von Parse-Table Dazu notwendig: FIRST- & FOLLOW-Mengen Institute for Software Technology 20

FIRST & FOLLOW FIRST(α) All jene Terminalsymbole, die an erster Stelle von α vorkommen können (inkl. ε) FOLLOW(A) All jene Terminalsymbole, die DIREKT rechts von Nonterminal A stehen können falls A abschließendes (am weitest rechts stehendes) sein kann, ist $ Element v. FOLLOW(A) Institute for Software Technology 21

FIRST(X) - Regeln Wenn Terminal a an erster Stelle von Non-Terminal A steht, inkludiere a in FIRST(A) FIRST-Menge von Terminal = genau dieses Terminal Beispiel: S AB A a FIRST(S) = FIRST(AB) = B b FIRST(A) = FIRST(a) = a Institute for Software Technology 22

FIRST(X) - Regeln Wenn A ε, dann ist ε in FIRST(A) Wenn A ein Nonterminal ist, und unter anderem folgende Regeln existieren... A BC, B ε, C d dann ist d in FIRST(A) Wenn auch C ε gelten würde, müsste FIRST(A) zusätzlich auch ε enthalten Institute for Software Technology 23

FIRST(X) - Regeln Beispiel (Startsymbol A) A BC B b ε C d ε FIRST(A) = FIRST(BC) = FIRST(B) + FIRST(C) = {b, ε} + {d, ε} = {b, d, ε} (weil ε in FIRST(B)) Institute for Software Technology 24

FOLLOW(X) - Regeln Startsymbol (z.b. S) enthält immer $ $ = Endmarker Falls Regel A abc existiert, ist FIRST(C) in FOLLOW(B) enthalten Ausnahme: ε C kann in diesem Fall ein Terminal oder weitere Non-Terminale darstellen Institute for Software Technology 25

FOLLOW(X) - Regeln Falls die Regeln A abc sowie C ε existieren, so ist JEDES Element aus FOLLOW(A) auch in FOLLOW(B) Institute for Software Technology 26

FOLLOW(X) - Beispiel S ABC FOLLOW(S) = {$} A a FOLLOW(C) = {$} B bb B ε C c FOLLOW(A) = FIRST(B)\ε + FIRST(C) = {b, c} FOLLOW(B) = FIRST(C) = {c} (weil ε in FIRST(B)) Institute for Software Technology 27

Parse-Table Terminal1 Terminal2. TerminalN Nonterminal1 Nonterminal2 NonterminaN Institute for Software Technology 28

Parse-Table - Aufbau Trage Regel A B (wenn B nicht ε) in alle Spalten mit Element x aus FIRST(B) ein Ist ε in FIRST(B), dann trage A B in alle Spalten mit Element y aus FOLLOW(A) ein Kann auch als Überprüfung verwendet werden, ob FIRST/FOLLOW richtig Tabelle muss selbe Sprache parsen wie Grammatik Institute for Software Technology 29

Parse-Table S ABC A ac B bb B ε C c Institute for Software Technology 30

Parse-Table - Beispiel S ABC A ac B bb B ε C c Sets FIRST FOLLOW S a $ A a b, c B b, ε c C c b, c, $ Institute for Software Technology 31

Parse-Table Beispiel 1 S ABC A ac B bb B ε C c Sets FIRST FOLLOW S a $ A a b, c B b, ε c C c b, c, $ a b c $ S S ABC A A ac B B bb B ε C C c Institute for Software Technology 32

Parse-Table Beispiel 2 S ABC A ac B bb B ε C c C ε Sets FIRST FOLLOW S a $ A a b, c, $ B b, ε c, $ C c, ε b, c, $ a b c $ S S ABC A A ac B B bb B ε B ε C C ε C c C ε Institute for Software Technology 33

Stack Parse-Tabelle Parsen S A Input (Forts.) Produktion/ Kommentar $ acc$ S ABC $ CBA acc$ A ac $ CBCa acc$ a matched $ CBC cc$ C c $ CBc cc$ siehe nächste Folie siehe nächste Folie a b c $ S ABC A ac B B bb B ε C siehe nächste Folie C c Institute for Software Technology 34

Parse-Tabelle - Parsen S A Stack (Übertrag) a b c $ S ABC A ac B B bb B ε C Input(Übertrag) C c Produktion/ Kommentar $ CBc cc$ c matched $ CB c$ B ε $ C c$ C c $ c c$ c matched $ $ MATCHED Institute for Software Technology 35

Scala Scala Tutorial bereits durchgeführt Dokumente online zugänglich Beispiele von AB-1 sind gute Übung für AB-P! Institute for Software Technology 36

Fragen? VU Softwareparadigmen Thorsten Ruprechter ruprechter@tugraz.at Institute for Software Technology 37