Syntaxanalyse Bottom-Up und LR(0)

Slides:



Advertisements
Ähnliche Präsentationen
Anzahl der ausgefüllten und eingesandten Fragebögen: 211
Advertisements

Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Die Projektgruppe heißt Sie herzlichst willkommen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Erkennen Sie die Kirchenkreise Heiteres Ratespiel Kirchen aus der Region.
Gliederung 1. Grundlagen der Bottom-Up-Syntaxanalyse
Telefonnummer.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Workshop zur Medienarbeit der katholischen Kirche Aspekte des Religionsmonitors Berlin, 02. April 2008.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
Statistiken und Tabellen
Kapitel 4 Syntaktische Analyse: LR Parsing.
EF: Standards + H2O red = H2O.
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Differentielles Paar UIN rds gm UIN
Maxwell-Boltzmann Ausgewählte Themen des analogen Schaltungsentwurfs
Prof. Dr. Bernhard Wasmayr
Studienverlauf im Ausländerstudium
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Prof. Dr. Bernhard Wasmayr VWL 2. Semester
AWA 2007 Natur und Umwelt Natürlich Leben
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
1 Status Index Politikergebnisse Management Index Reformfähigkeit Exekutivkapazität Beteiligungskompetenz Gestaltungsfähigkeit Ressourceneffizienz Internationale.
Prof. Dr. Günter Gerhardinger Soziale Arbeit mit Einzelnen und Familien Übersicht über die Lehrveranstaltung Grundlegende Bestimmungsfaktoren der Praxis.
20:00.
„Küsse deine Freunde“ – FlexKom-App teilen
Zusatzfolien zu B-Bäumen
WIRTSCHAFTSLAGE NOCH SCHWIERIG
In der Schule.
Eine Einführung in die CD-ROM
GBI Genios Wiso wiso bietet Ihnen das umfassendste Angebot deutsch- und englischsprachiger Literatur für die Wirtschafts- und Sozialwissenschaften. Wir.
Dokumentation der Umfrage
für Weihnachten oder als Tischdekoration für das ganze Jahr
Where Europe does business Lück, JDZB | Seite © GfW NRW 252 a.
Wir üben die Malsätzchen
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
Addieren und Subtrahieren von Dezimalzahlen
Der Ablauf eines Clear Rex Klärzyklus
PROCAM Score Alter (Jahre)
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Geometrische Aufgaben
Symmetrische Blockchiffren DES – der Data Encryption Standard
Retuschen.ppt Die folgende Schau zeigt die Möglichkeiten, mit PhotoDraw Digitalbilder zu retuschieren. Vergleichen Sie jeweils zwei Bildpaare durch fleissiges.
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Parkplatz-Orga Diese Version ist vom finale Version!
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Kamin- und Kachelöfen in Oberösterreich
Zusammengestellt von OE3DSB
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
1 Arbeitsgemeinschaft Biologische Psychiatrie Verordnungsgewohnheiten von Psychopharmaka Statuserhebung 2005 W.Günther G.Laux T.Messer N.Müller M.Schmauss.
Technische Frage Technische Frage Bitte löse die folgende Gleichung:
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Unternehmensbewertung Thomas Hering ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List of Figures Tabellenübersicht.
Forschungsprojekt Statistik 2013 „Jugend zählt“ – Folie 1 Statistik 2013 „Jugend zählt“: Daten zur Arbeit mit Kindern und Jugendlichen.
AGOF facts & figures: Branchenpotenziale im Internet Q2 2014: Parfum & Kosmetik Basis: internet facts / mobile facts 2014-I.
Bürgermeister Absolute Stimmen Gesamt. Bürgermeister Prozentuale Aufteilung Gesamt.
Folie Einzelauswertung der Gemeindedaten
J-Team: Gymnasium Ulricianum Aurich und MTV Aurich Ein Projekt im Rahmen von UlricianumBewegt.de Euro haben wir schon…  8000 mal habt ihr bereits.
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
Einführung in die Volkswirtschaftslehre, Mikroökonomie und Wettbewerbspolitik Lothar Wildmann ISBN: © 2014 Oldenbourg Wissenschaftsverlag.
Sehen, Hören, Schmecken: wenn uns unsere Sinne täuschen
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
 Präsentation transkript:

Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

Zwischencode-Generator Compileraufbau Lexikalische Analyse Syntaxanalyse Semantische Analyse Zwischencode-Generator Code-Optimierer Code-Generator

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

Grammatik Besteht aus: Terminalen Nichtterminalen Produktionen und einem Startsymbol

Grammatik Beispiel: E  E + E E  E * E E  ( E ) E  id

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

Ableitungen E → E + E → E + id → id + id E → E + E → id + E → id + id

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

Parse-Baum für id + id E E  E + E E  E * E E  ( E ) E  id

Parse-Baum für id + id E E + E E  E + E E  E * E E  ( E ) E  id

Parse-Baum für id + id E E + E id E  E + E E  E * E E  ( E ) E  id

Parse-Baum für id + id E E + E id id E  E + E E  E * E E  ( E )

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

Mehrdeutigkeit Beispiel: id * id + id E E E E E E id id + id id id +

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

Bottom-Up-Parsing id + id E  E + E E  E * E E  ( E ) E  id

Bottom-Up-Parsing E id + id E  E + E E  E * E E  ( E ) E  id

Bottom-Up-Parsing E E id + id E  E + E E  E * E E  ( E ) E  id

Bottom-Up-Parsing E E E id + id E  E + E E  E * E E  ( E ) E  id

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

Shift-Reduce-Parser Neue Grammatik: E  E + T | T T  T * F | F F  ( E ) | id Rechtsableitung zu id * id: E → T → T * F → T * id → F * id → id * id

Shift-Reduce-Parser Parsen von id * id E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser Parsen von id * id Stack Eingabe Aktion $ Verschieben(shift) E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser Parsen von id * id Stack Eingabe Aktion $ Verschieben(shift) $ id * id $ Reduzieren(reduce) durch F → id E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser Parsen von id * id Stack Eingabe Aktion $ Verschieben(shift) $ id * id $ Reduzieren(reduce) durch F → id $ F Reduzieren durch T → F E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser Parsen von id * id Stack Eingabe Aktion $ Verschieben(shift) $ id * id $ Reduzieren(reduce) durch F → id $ F Reduzieren durch T → F $ T Verschieben E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser Parsen von id * id Stack Eingabe Aktion $ Verschieben(shift) $ id * id $ Reduzieren(reduce) durch F → id $ F Reduzieren durch T → F $ T Verschieben $ T * id $ E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser Parsen von id * id Stack Eingabe Aktion $ Verschieben(shift) $ id * id $ Reduzieren(reduce) durch F → id $ F Reduzieren durch T → F $ T Verschieben $ T * id $ $ T * id Reduzieren durch F → id E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser Parsen von id * id Stack Eingabe Aktion $ Verschieben(shift) $ id * id $ Reduzieren(reduce) durch F → id $ F Reduzieren durch T → F $ T Verschieben $ T * id $ $ T * id Reduzieren durch F → id $ T * F Reduzieren durch T → T * F E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser Parsen von id * id Stack Eingabe Aktion $ Verschieben(shift) $ id * id $ Reduzieren(reduce) durch F → id $ F Reduzieren durch T → F $ T Verschieben $ T * id $ $ T * id Reduzieren durch F → id $ T * F Reduzieren durch T → T * F Reduzieren durch E → T E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser Parsen von id * id Stack Eingabe Aktion $ Verschieben(shift) $ id * id $ Reduzieren(reduce) durch F → id $ F Reduzieren durch T → F $ T Verschieben $ T * id $ $ T * id Reduzieren durch F → id $ T * F Reduzieren durch T → T * F Reduzieren durch E → T $ E Akzeptieren Angelehnt an DragonBook S.286 E  E + T | T T  T * F | F F  ( E ) | id

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

LR(0)-Syntaxanalyse LL(k) und LR(k)-Sprachen: erste Buchstabe steht für die Eingabe zweiter Buchstabe steht für umgekehrte Ableitung k wird Lookahead genannt

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

Items Statt Grammatiksymbole auf dem Stack nun Zustände, die aus einer Menge von Items bestehen Folgende Items, für die Entscheidungsunterstützung, enthält die Produktion T  T * F: T  .T * F T  T .* F T  T * .F T  T * F. Wir sehen 3 verschiedene Fälle

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

CLOSURE(I) Bildet eine Hülle von einer Menge von Items durch: Füge I zu CLOSURE(I) hinzu Gibt es ein Item A  a.Bb in CLOSURE(I) und eine Produktion B  x, so füge B  .x zu CLOSURE(I) hinzu

GOTO(I,X) Spezifiziert einen Folgezustand innerhalb eines LR(0)-Automaten anhand der gegebenen Informationen I: Item Menge und X: Grammatiksymbol

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

LR(0)-Automat Zunächst Erweiterung der Grammatik zu: E‘  E E  E + E E  id

Der LR(0)-Automat E  E + T | T T  T * F | F F  ( E ) | id DragonBook S.294 E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten Parsen von id * id Zeile Stack Symbole Eingabe Aktion (1) $ id * id $ Verschieben zu 5 GOTO(0,id) gibt uns Zustand 5 an E  E + T | T T  T * F | F F  ( E ) | id

Der LR(0)-Automat E  E + T | T T  T * F | F F  ( E ) | id DragonBook S.294 E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten Parsen von id * id Zeile Stack Symbole Eingabe Aktion (1) $ id * id $ Verschieben zu 5 (2) 05 $ id * id $ Reduzieren durch F → id Gibt es keinen Folgezustand, weiß der Parser, dass er reduzieren soll. Bei einer Reduktion wird zunächst der Produktionsrumpf vom Stack entfernt und der Produktionskopf verschoben. Zustand 5  0  3 E  E + T | T T  T * F | F F  ( E ) | id

Der LR(0)-Automat E  E + T | T T  T * F | F F  ( E ) | id DragonBook S.294 E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten Parsen von id * id Zeile Stack Symbole Eingabe Aktion (1) $ id * id $ Verschieben zu 5 (2) 05 $ id * id $ Reduzieren durch F → id (3) 03 $ F Reduzieren durch T → F E  E + T | T T  T * F | F F  ( E ) | id

Der LR(0)-Automat E  E + T | T T  T * F | F F  ( E ) | id DragonBook S.294 E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten Parsen von id * id Zeile Stack Symbole Eingabe Aktion (1) $ id * id $ Verschieben zu 5 (2) 05 $ id * id $ Reduzieren durch F → id (3) 03 $ F Reduzieren durch T → F (4) 02 $ T Verschieben zu 7 E  E + T | T T  T * F | F F  ( E ) | id

Der LR(0)-Automat E  E + T | T T  T * F | F F  ( E ) | id DragonBook S.294 E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten Parsen von id * id Zeile Stack Symbole Eingabe Aktion (1) $ id * id $ Verschieben zu 5 (2) 05 $ id * id $ Reduzieren durch F → id (3) 03 $ F Reduzieren durch T → F (4) 02 $ T Verschieben zu 7 (5) 027 $ T * id $ E  E + T | T T  T * F | F F  ( E ) | id

Der LR(0)-Automat E  E + T | T T  T * F | F F  ( E ) | id DragonBook S.294 E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten Parsen von id * id Zeile Stack Symbole Eingabe Aktion (1) $ id * id $ Verschieben zu 5 (2) 05 $ id * id $ Reduzieren durch F → id (3) 03 $ F Reduzieren durch T → F (4) 02 $ T Verschieben zu 7 (5) 027 $ T * id $ (6) 0275 $ T * id E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten Parsen von id * id Zeile Stack Symbole Eingabe Aktion (1) $ id * id $ Verschieben zu 5 (2) 05 $ id * id $ Reduzieren durch F → id (3) 03 $ F Reduzieren durch T → F (4) 02 $ T Verschieben zu 7 (5) 027 $ T * id $ (6) 0275 $ T * id (7) 02710 $ T * F Reduzieren durch T → T * F E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten Parsen von id * id Zeile Stack Symbole Eingabe Aktion (1) $ id * id $ Verschieben zu 5 (2) 05 $ id * id $ Reduzieren durch F → id (3) 03 $ F Reduzieren durch T → F (4) 02 $ T Verschieben zu 7 (5) 027 $ T * id $ (6) 0275 $ T * id (7) 02710 $ T * F Reduzieren durch T → T * F (8) Reduzieren durch E → T E  E + T | T T  T * F | F F  ( E ) | id

Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten Parsen von id * id Zeile Stack Symbole Eingabe Aktion (1) $ id * id $ Verschieben zu 5 (2) 05 $ id * id $ Reduzieren durch F → id (3) 03 $ F Reduzieren durch T → F (4) 02 $ T Verschieben zu 7 (5) 027 $ T * id $ (6) 0275 $ T * id (7) 02710 $ T * F Reduzieren durch T → T * F (8) Reduzieren durch E → T (9) 01 $ E Akzeptieren DragonBook S.298 E  E + T | T T  T * F | F F  ( E ) | id

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

Parsertabellen Jeder Parser besteht aus: Eingabe Ausgabe Stack Treiberprogramm Parsertabelle mit zwei Teilen (ACTION und GOTO)

ACTION(i,a) Gibt dem Parser konkrete Entscheidungen an: Eingabe von Zustand i und Terminal a Ergebnisse können sein: shift j reduce accept error

Agenda Basics Bottom-Up-Parsing Compileraufbau Grammatiken Ableitungen Beispiel Parse-Baum Mehrdeutigkeit Bottom-Up-Parsing Shift-Reduce-Parser inkl. Beispiel LR(0)-Syntaxanalyse Items Die Funktionen CLOSURE(I) und GOTO(I,X) Der LR(0)-Automat inkl. Beispiel Parsertabellen Beispiel

Parsertabellen Zustand ACTION GOTO - id + * ( ) $ E T F s5 s4 1 2 3 s6 s5 s4 1 2 3 s6 acc r2 s7 r4 8 4 5 r6 9 6 10 7 s11 r1 r3 11 r5 DragonBook S.303 E  E + T | T T  T * F | F F  ( E ) | id

LR-Parser mit Hilfe der Parsertabelle Parsen von id * id Stack Symbole Eingabe Aktion (1) id * id + id $ Verschieben zu 5 E  E + T | T T  T * F | F F  ( E ) | id

Parsertabellen Zustand ACTION GOTO - id + * ( ) $ E T F s5 s4 1 2 3 s6 s5 s4 1 2 3 s6 acc r2 s7 r4 8 4 5 r6 9 6 10 7 s11 r1 r3 11 r5 E  E + T | T T  T * F | F F  ( E ) | id

LR-Parser mit Hilfe der Parsertabelle Parsen von id * id Stack Symbole Eingabe Aktion (1) id * id + id $ Verschieben zu 5 (2) 05 id * id + id $ Reduzieren durch F → id E  E + T | T T  T * F | F F  ( E ) | id

Parsertabellen Zustand ACTION GOTO - id + * ( ) $ E T F s5 s4 1 2 3 s6 s5 s4 1 2 3 s6 acc r2 s7 r4 8 4 5 r6 9 6 10 7 s11 r1 r3 11 r5 E  E + T | T T  T * F | F F  ( E ) | id

LR-Parser mit Hilfe der Parsertabelle Parsen von id * id Stack Symbole Eingabe Aktion (1) id * id + id $ Verschieben zu 5 (2) 05 id * id + id $ Reduzieren durch F → id (3) 03 F Reduzieren durch T → F E  E + T | T T  T * F | F F  ( E ) | id

Parsertabellen Zustand ACTION GOTO - id + * ( ) $ E T F s5 s4 1 2 3 s6 s5 s4 1 2 3 s6 acc r2 s7 r4 8 4 5 r6 9 6 10 7 s11 r1 r3 11 r5 E  E + T | T T  T * F | F F  ( E ) | id

LR-Parser mit Hilfe der Parsertabelle Parsen von id * id Stack Symbole Eingabe Aktion (1) id * id + id $ Verschieben zu 5 (2) 05 id * id + id $ Reduzieren durch F → id (3) 03 F Reduzieren durch T → F (4) 02 T Verschieben zu 7 E  E + T | T T  T * F | F F  ( E ) | id

Parsertabellen Zustand ACTION GOTO - id + * ( ) $ E T F s5 s4 1 2 3 s6 s5 s4 1 2 3 s6 acc r2 s7 r4 8 4 5 r6 9 6 10 7 s11 r1 r3 11 r5 E  E + T | T T  T * F | F F  ( E ) | id

LR-Parser mit Hilfe der Parsertabelle Parsen von id * id Stack Symbole Eingabe Aktion (1) id * id + id $ Verschieben zu 5 (2) 05 id * id + id $ Reduzieren durch F → id (3) 03 F Reduzieren durch T → F (4) 02 T Verschieben zu 7 (5) 027 T * id + id $ Weitere Tabellen E  E + T | T T  T * F | F F  ( E ) | id

Parsertabellen Zustand ACTION GOTO - id + * ( ) $ E T F s5 s4 1 2 3 s6 s5 s4 1 2 3 s6 acc r2 s7 r4 8 4 5 r6 9 6 10 7 s11 r1 r3 11 r5 E  E + T | T T  T * F | F F  ( E ) | id

LR-Parser mit Hilfe der Parsertabelle Parsen von id * id Stack Symbole Eingabe Aktion (1) id * id + id $ Verschieben zu 5 (2) 05 id * id + id $ Reduzieren durch F → id (3) 03 F Reduzieren durch T → F (4) 02 T Verschieben zu 7 (5) 027 T * id + id $ (6) 0275 T * id + id $ E  E + T | T T  T * F | F F  ( E ) | id

LR-Parser mit Hilfe der Parsertabelle Parsen von id * id Stack Symbole Eingabe Aktion (1) id * id + id $ Verschieben zu 5 (2) 05 id * id + id $ Reduzieren durch F → id (3) 03 F Reduzieren durch T → F (4) 02 T Verschieben zu 7 (5) 027 T * id + id $ (6) 0275 T * id + id $ (7) 02710 T * F Reduzieren durch T → T * F E  E + T | T T  T * F | F F  ( E ) | id

LR-Parser mit Hilfe der Parsertabelle Parsen von id * id Stack Symbole Eingabe Aktion (1) id * id + id $ Verschieben zu 5 (2) 05 id * id + id $ Reduzieren durch F → id (3) 03 F Reduzieren durch T → F (4) 02 T Verschieben zu 7 (5) 027 T * id + id $ (6) 0275 T * id + id $ (7) 02710 T * F Reduzieren durch T → T * F (8) Reduzieren durch E → T (9) 01 E Verschieben (10) 016 E + id $ (11) 0165 E + id $ (12) 0163 E + F (13) 0169 E + T Reduzieren durch E → E + T (14) Akzeptieren E  E + T | T T  T * F | F F  ( E ) | id

Parse-Baum Reduktionsschritte: F  id T  F T  T * F E  T E  E + T

Fragen?