Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Lookup, accept reduce 1 LR(0) Parser Beispielblatt Grammatik 1. Beginne mit State J 0 und Trage das erste Item aus Produktion 0 ein. Der Punkt des Items.

Ähnliche Präsentationen


Präsentation zum Thema: "Lookup, accept reduce 1 LR(0) Parser Beispielblatt Grammatik 1. Beginne mit State J 0 und Trage das erste Item aus Produktion 0 ein. Der Punkt des Items."—  Präsentation transkript:

1 lookup, accept reduce 1 LR(0) Parser Beispielblatt Grammatik 1. Beginne mit State J 0 und Trage das erste Item aus Produktion 0 ein. Der Punkt des Items steht damit zuvorderst. 2. Schliesse den State ab, indem du für jedes Vorkommen eines.X (X steht für ein beliebiges Nonterminal) diejenigen Items unten anhängst, die mit diesem Nonterminal beginnen. (z.Bsp. X  xY) 3. Ziehe für jedes Zeichen, das nach einem Punkt folgt einen Pfeil zu einem neuen State. Wenn genau dieses Item bereits bei einem bestehenden State zuoberst steht, dann wird der Pfeil zu diesem State gezogen. 4. Trage in den neuen State das Item ein, von welchem aus der Pfeil kommt und schiebe den Punkt um eine Stelle weiter. Wenn der Punkt hinter dem letzten Zeichen steht, dann ist der State abgeschlossen. 5. Wiederhole diesen Vorgang solange, bis keine neuen States mehr entstehen.. Automat Stack-Beispiel 1. Beginne bei State 0 des Automaten und trage für jeden weggehenden Pfeil, der ein Terminal entält, in der entsprechenden Spalte der Tabelle einen Shift s x ein. Die Nummer x ist die Nummer des States, zu dem der Pfeil hinzeigt. 2. Falls durch einen Pfeil ein Non-Terminal von einem State weggeht, so trage die Nummer des States wo der Pfeil hinzeigt, im Goto-Teil der Tabelle ein. 3. Falls kein Pfeil von diesem State wegzeigt, so Trage in der Tabelle auf der ganzen Zeile des Action-Teils eine Reduktion r x ein. Die Nummer x ist die Zeilennummer der Grammatik, bei der diejenige Produktion steht, welche in diesem State drinsteht. (Bsp. beim State J 8 wäre es die Produktion 4) Shift-Operationen: s x Reduce-Operationen: r x J0J0 x,x)$ J0J0 (J2J2 x,x)$ ( J0J0 (J2J2,x)$ xJ1J1 J0J0 (J2J2 xJ1J1,x)$ shift 2 shift 1 reduce 2 J0J0 (J2J2 S,x)$ Christian Moser 24. April 2003 J6J6 J0J0 (J2J2 SJ6J6 J0J0 (J2J2 L,x)$ J4J4,x)$,J7J7 J0J0 (J2J2 L J4J4 x)$ J0J0 (J2J2 L J4J4,J7J7 x J1J1 )$ J0J0 (J2J2 L J4J4,J7J7 )$ S J0J0 (J2J2 L J4J4,J7J7 x J1J1 J8J8 )$ S J0J0 (J2J2 L J4J4,J7J7 J8J8 )$ J0J0 (J2J2 L J4J4 )$ stackinputaction begin state lookup reduce 3 state lookup shift 7 shift 1 reduce 2 state lookup reduce 4 state lookup 1. Es liegt bereits J 0 auf dem Stack 2. Man schaut in der Parsetabelle was bei der Zeile (gegeben durch den Status zuoberst auf dem Stack) und der Spalte gegeben durch das vorderste Inputsymbol) für eine Operation ansteht und führt diese aus. Shift: Bei einem Shift s x wird zuerst das vorderste Inputsymbol, dann der neue Status (Bsp. J 3 bei einer Operation s 3 ) auf den Stack geshiftet. Reduce: 1. Bei einem Reduce r x werden doppelt so viele Einträge vom Stack gestrichen, wie die Produktion x Zeichen auf der rechten Seite des Pfeils hat. (Die Nummer x ist die Zahl der Reduktion Bsp. r 5 ) 2. Danach wird das Nontermimal, das auf der linken Seite dieser Produktion steht auf den Stack geshiftet. 3. Im Goto-Teil der Tabelle wird nun anhand des Status der zuoberst auf dem Stack liegt und des Nonterminals aus Punkt 2 der neue Status herausgelesen und eben- falls auf den Stack geshiftet. 3. Wenn in der Tabelle kein Eintrag vorhanden ist, dann ist der String ungültig. Wenn der Eintrag „accept“ erreicht wird, so war das Parsen erfolgreich. J0J0 (J2J2 L J4J4 )J5J5 J0J0 (J2J2 L J4J4 )J5J5 $ $ shift 5 Parsetabelle J0J0 $ S J3J3

2 SLR Parser Beispielblatt Christian Moser 24. April 2003 Grammatik Automat Das Erstellen des SLR-Automats verläuft genau gleich wie beim LR(0)-Parser. Erstellen der Parsetabelle Reduktionen werden nur in die Spalten eingetragen, bei denen das Zeichen im Follow-Set der linken Seite der zu Reduktion vorkommt …das ist der einzige Unterschied zum LR(0)-Parser. Beispiel: Parsetabelle

3 LR(1) Parser Beispielblatt Christian Moser 24. April 2003 Automat Parsetabelle Abschluss Um den Lookahead zu bestimmen, muss aus den Zeichen hinter dem.Nonterminal das First-Set bestimmt werden. Die darin enthaltenen Zeichen kommen in den Lookahead der eingefügten Items. LALR-Parser Für den LALR-Parser wird am besten zuerst ein LR(1) Automat konstruiert. Danach werden die Zustände, welche die selben Items enthalten und sich nur durch die Lookaheads unterscheiden zu einem zusammengefasst. Der neue Lookahead ist die Vereinigungsmenge der beiden ursprünglichen Zustände.


Herunterladen ppt "Lookup, accept reduce 1 LR(0) Parser Beispielblatt Grammatik 1. Beginne mit State J 0 und Trage das erste Item aus Produktion 0 ein. Der Punkt des Items."

Ähnliche Präsentationen


Google-Anzeigen