Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey.

Ähnliche Präsentationen


Präsentation zum Thema: "Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey."—  Präsentation transkript:

1 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey

2 2 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

3 3 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

4 4 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Compileraufbau Lexikalische Analyse Syntaxanalyse Semantische Analyse Zwischencode -Generator Code- Optimierer Code- Generator

5 5 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

6 6 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Grammatik Besteht aus: - Terminalen - Nichtterminalen - Produktionen - und einem Startsymbol

7 7 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Grammatik Beispiel: E E + E E E * E E ( E ) E id

8 8 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

9 9 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Ableitungen E E + E E + id id + id E E + E id + E id + id E E + E E E * E E ( E ) E id

10 10 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

11 11 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Parse-Baum für id + id E E E + E E E * E E ( E ) E id

12 12 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Parse-Baum für id + id E +EE E E + E E E * E E ( E ) E id

13 13 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Parse-Baum für id + id E + E E id E E + E E E * E E ( E ) E id

14 14 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Parse-Baum für id + id E + E E id E E + E E E * E E ( E ) E id

15 15 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

16 16 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Mehrdeutigkeit E E + E E E * E E ( E ) E id E + E E * id Beispiel: id * id + id id E + E E *

17 17 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

18 18 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Bottom-Up-Parsing E E + E E E * E E ( E ) E id + id

19 19 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Bottom-Up-Parsing E E + E E E * E E ( E ) E id + id E

20 20 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Bottom-Up-Parsing E E + E E E * E E ( E ) E id + id E E

21 21 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Bottom-Up-Parsing E E + E E E * E E ( E ) E id E E E id +

22 22 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

23 23 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey 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

24 24 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser E E + T | T T T * F | F F ( E ) | id Parsen von id * id

25 25 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser E E + T | T T T * F | F F ( E ) | id Parsen von id * id StackEingabeAktion $id * id $Verschieben(shift)

26 26 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser E E + T | T T T * F | F F ( E ) | id Parsen von id * id StackEingabeAktion $id * id $Verschieben(shift) $ id* id $Reduzieren(reduce) durch F id

27 27 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser E E + T | T T T * F | F F ( E ) | id Parsen von id * id StackEingabeAktion $id * id $Verschieben(shift) $ id* id $Reduzieren(reduce) durch F id $ F* id $Reduzieren durch T F

28 28 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser E E + T | T T T * F | F F ( E ) | id Parsen von id * id StackEingabeAktion $id * id $Verschieben(shift) $ id* id $Reduzieren(reduce) durch F id $ F* id $Reduzieren durch T F $ T* id $Verschieben

29 29 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser E E + T | T T T * F | F F ( E ) | id Parsen von id * id StackEingabeAktion $id * id $Verschieben(shift) $ id* id $Reduzieren(reduce) durch F id $ F* id $Reduzieren durch T F $ T* id $Verschieben $ T *id $Verschieben

30 30 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser E E + T | T T T * F | F F ( E ) | id Parsen von id * id StackEingabeAktion $id * id $Verschieben(shift) $ id* id $Reduzieren(reduce) durch F id $ F* id $Reduzieren durch T F $ T* id $Verschieben $ T *id $Verschieben $ T * id$Reduzieren durch F id

31 31 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser E E + T | T T T * F | F F ( E ) | id Parsen von id * id StackEingabeAktion $id * id $Verschieben(shift) $ id* id $Reduzieren(reduce) durch F id $ F* id $Reduzieren durch T F $ T* id $Verschieben $ T *id $Verschieben $ T * id$Reduzieren durch F id $ T * F$Reduzieren durch T T * F

32 32 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser E E + T | T T T * F | F F ( E ) | id Parsen von id * id StackEingabeAktion $id * id $Verschieben(shift) $ id* id $Reduzieren(reduce) durch F id $ F* id $Reduzieren durch T F $ T* id $Verschieben $ T *id $Verschieben $ T * id$Reduzieren durch F id $ T * F$Reduzieren durch T T * F $ T$Reduzieren durch E T

33 33 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser E E + T | T T T * F | F F ( E ) | id Parsen von id * id StackEingabeAktion $id * id $Verschieben(shift) $ id* id $Reduzieren(reduce) durch F id $ F* id $Reduzieren durch T F $ T* id $Verschieben $ T *id $Verschieben $ T * id$Reduzieren durch F id $ T * F$Reduzieren durch T T * F $ T$Reduzieren durch E T $ E$Akzeptieren Angelehnt an DragonBook S.286

34 34 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

35 35 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey 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

36 36 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

37 37 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey 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

38 38 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

39 39 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey CLOSURE(I) Bildet eine Hülle von einer Menge von Items durch: 1.Füge I zu CLOSURE(I) hinzu 2.Gibt es ein Item A a.Bb in CLOSURE(I) und eine Produktion B x, so füge B.x zu CLOSURE(I) hinzu

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

41 41 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

42 42 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey LR(0)-Automat Zunächst Erweiterung der Grammatik zu: E E E E + E E E * E E ( E ) E id

43 43 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Der LR(0)-Automat E E + T | T T T * F | F F ( E ) | id DragonBook S.294

44 44 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten E E + T | T T T * F | F F ( E ) | id Parsen von id * id ZeileStackSymboleEingabeAktion (1)0$id * id $Verschieben zu 5 GOTO(0,id) gibt uns Zustand 5 an

45 45 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Der LR(0)-Automat E E + T | T T T * F | F F ( E ) | id DragonBook S.294

46 46 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten E E + T | T T T * F | F F ( E ) | id Parsen von id * id ZeileStackSymboleEingabeAktion (1)0$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

47 47 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Der LR(0)-Automat E E + T | T T T * F | F F ( E ) | id DragonBook S.294

48 48 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten E E + T | T T T * F | F F ( E ) | id Parsen von id * id ZeileStackSymboleEingabeAktion (1)0$id * id $Verschieben zu 5 (2)05$ id* id $Reduzieren durch F id (3)03$ F* id $Reduzieren durch T F

49 49 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Der LR(0)-Automat E E + T | T T T * F | F F ( E ) | id DragonBook S.294

50 50 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten E E + T | T T T * F | F F ( E ) | id Parsen von id * id ZeileStackSymboleEingabeAktion (1)0$id * id $Verschieben zu 5 (2)05$ id* id $Reduzieren durch F id (3)03$ F* id $ Reduzieren durch T F (4)02$ T* id $Verschieben zu 7

51 51 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Der LR(0)-Automat E E + T | T T T * F | F F ( E ) | id DragonBook S.294

52 52 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten E E + T | T T T * F | F F ( E ) | id Parsen von id * id ZeileStackSymboleEingabeAktion (1)0$id * id $Verschieben zu 5 (2)05$ id* id $Reduzieren durch F id (3)03$ F* id $ Reduzieren durch T F (4)02$ T* id $Verschieben zu 7 (5)027$ T *id $Verschieben zu 5

53 53 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Der LR(0)-Automat E E + T | T T T * F | F F ( E ) | id DragonBook S.294

54 54 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten E E + T | T T T * F | F F ( E ) | id Parsen von id * id ZeileStackSymboleEingabeAktion (1)0$id * id $Verschieben zu 5 (2)05$ id* id $Reduzieren durch F id (3)03$ F* id $ Reduzieren durch T F (4)02$ T* id $Verschieben zu 7 (5)027$ T *id $Verschieben zu 5 (6)0275$ T * id$Reduzieren durch F id

55 55 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten E E + T | T T T * F | F F ( E ) | id Parsen von id * id ZeileStackSymboleEingabeAktion (1)0$id * id $Verschieben zu 5 (2)05$ id* id $Reduzieren durch F id (3)03$ F* id $ Reduzieren durch T F (4)02$ T* id $Verschieben zu 7 (5)027$ T *id $Verschieben zu 5 (6)0275$ T * id$Reduzieren durch F id (7)02710$ T * F$Reduzieren durch T T * F

56 56 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten E E + T | T T T * F | F F ( E ) | id Parsen von id * id ZeileStackSymboleEingabeAktion (1)0$id * id $Verschieben zu 5 (2)05$ id* id $Reduzieren durch F id (3)03$ F* id $ Reduzieren durch T F (4)02$ T* id $Verschieben zu 7 (5)027$ T *id $Verschieben zu 5 (6)0275$ T * id$Reduzieren durch F id (7)02710$ T * F$Reduzieren durch T T * F (8)02$ T$Reduzieren durch E T

57 57 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten E E + T | T T T * F | F F ( E ) | id Parsen von id * id ZeileStackSymboleEingabeAktion (1)0$id * id $Verschieben zu 5 (2)05$ id* id $Reduzieren durch F id (3)03$ F* id $ Reduzieren durch T F (4)02$ T* id $Verschieben zu 7 (5)027$ T *id $Verschieben zu 5 (6)0275$ T * id$Reduzieren durch F id (7)02710$ T * F$Reduzieren durch T T * F (8)02$ T$Reduzieren durch E T (9)01$ E$Akzeptieren DragonBook S.298

58 58 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

59 59 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Parsertabellen Jeder Parser besteht aus: - Eingabe - Ausgabe - Stack - Treiberprogramm - Parsertabelle mit zwei Teilen (ACTION und GOTO)

60 60 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey 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

61 61 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Agenda Basics 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

62 62 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Parsertabellen ZustandACTIONGOTO -id+*()$ETF 0s5s4123 1s6acc 2r2s7r2 3r s5s4 5r6 93 6s5s410 7s5s4 8s6s11 9r1s7r1 10r3 11r5 DragonBook S.303 E E + T | T T T * F | F F ( E ) | id

63 63 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey LR-Parser mit Hilfe der Parsertabelle StackSymboleEingabeAktion (1)0id * id + id $Verschieben zu 5 Parsen von id * id E E + T | T T T * F | F F ( E ) | id

64 64 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Parsertabellen E E + T | T T T * F | F F ( E ) | id ZustandACTIONGOTO -id+*()$ETF 0s5s4123 1s6acc 2r2s7r2 3r s5s4 5r6 93 6s5s410 7s5s4 8s6s11 9r1s7r1 10r3 11r5

65 65 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey LR-Parser mit Hilfe der Parsertabelle Parsen von id * id E E + T | T T T * F | F F ( E ) | id StackSymboleEingabeAktion (1)0id * id + id $Verschieben zu 5 (2)05id* id + id $Reduzieren durch F id

66 66 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Parsertabellen ZustandACTIONGOTO -id+*()$ETF 0s5s4123 1s6acc 2r2s7r2 3r s5s4 5r6 93 6s5s410 7s5s4 8s6s11 9r1s7r1 10r3 11r5 E E + T | T T T * F | F F ( E ) | id

67 67 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey LR-Parser mit Hilfe der Parsertabelle Parsen von id * id E E + T | T T T * F | F F ( E ) | id StackSymboleEingabeAktion (1)0id * id + id $Verschieben zu 5 (2)05id* id + id $Reduzieren durch F id (3)03F* id + id $ Reduzieren durch T F

68 68 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Parsertabellen ZustandACTIONGOTO -id+*()$ETF 0s5s4123 1s6acc 2r2s7r2 3r s5s4 5r6 93 6s5s410 7s5s4 8s6s11 9r1s7r1 10r3 11r5 E E + T | T T T * F | F F ( E ) | id

69 69 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey LR-Parser mit Hilfe der Parsertabelle Parsen von id * id E E + T | T T T * F | F F ( E ) | id StackSymboleEingabeAktion (1)0id * id + id $Verschieben zu 5 (2)05id* id + id $Reduzieren durch F id (3)03F* id + id $ Reduzieren durch T F (4)02T* id + id $Verschieben zu 7

70 70 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Parsertabellen ZustandACTIONGOTO -id+*()$ETF 0s5s4123 1s6acc 2r2s7r2 3r s5s4 5r6 93 6s5s410 7s5s4 8s6s11 9r1s7r1 10r3 11r5 E E + T | T T T * F | F F ( E ) | id

71 71 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey LR-Parser mit Hilfe der Parsertabelle Parsen von id * id E E + T | T T T * F | F F ( E ) | id StackSymboleEingabeAktion (1)0id * id + id $Verschieben zu 5 (2)05id* id + id $Reduzieren durch F id (3)03F* id + id $ Reduzieren durch T F (4)02T* id + id $Verschieben zu 7 (5)027T *id + id $Verschieben zu 5 Weitere Tabellen

72 72 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Parsertabellen ZustandACTIONGOTO -id+*()$ETF 0s5s4123 1s6acc 2r2s7r2 3r s5s4 5r6 93 6s5s410 7s5s4 8s6s11 9r1s7r1 10r3 11r5 E E + T | T T T * F | F F ( E ) | id

73 73 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey LR-Parser mit Hilfe der Parsertabelle Parsen von id * id E E + T | T T T * F | F F ( E ) | id StackSymboleEingabeAktion (1)0id * id + id $Verschieben zu 5 (2)05id* id + id $Reduzieren durch F id (3)03F* id + id $ Reduzieren durch T F (4)02T* id + id $Verschieben zu 7 (5)027T *id + id $Verschieben zu 5 (6)0275T * id + id $Reduzieren durch F id

74 74 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey LR-Parser mit Hilfe der Parsertabelle Parsen von id * id E E + T | T T T * F | F F ( E ) | id StackSymboleEingabeAktion (1)0id * id + id $Verschieben zu 5 (2)05id* id + id $Reduzieren durch F id (3)03F* id + id $ Reduzieren durch T F (4)02T* id + id $Verschieben zu 7 (5)027T *id + id $Verschieben zu 5 (6)0275T * id + id $Reduzieren durch F id (7)02710T * F+ id $Reduzieren durch T T * F

75 75 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey LR-Parser mit Hilfe der Parsertabelle Parsen von id * id E E + T | T T T * F | F F ( E ) | id StackSymboleEingabeAktion (1)0id * id + id $Verschieben zu 5 (2)05id* id + id $Reduzieren durch F id (3)03F* id + id $ Reduzieren durch T F (4)02T* id + id $Verschieben zu 7 (5)027T *id + id $Verschieben zu 5 (6)0275T * id + id $Reduzieren durch F id (7)02710T * F+ id $Reduzieren durch T T * F (8)02T+ id $Reduzieren durch E T (9)01E+ id $Verschieben (10)016E +id $Verschieben (11)0165E + id$Reduzieren durch F id (12)0163E + F$ Reduzieren durch T F (13)0169E + T$Reduzieren durch E E + T (14)01E$Akzeptieren

76 76 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Parse-Baum Reduktionsschritte: F id T F F id T T * F E T F id T F E E + T F id + * F T T E T E F

77 77 Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Fragen?


Herunterladen ppt "Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey Syntaxanalyse Bottom-Up und LR(0) Daniel Matthey."

Ähnliche Präsentationen


Google-Anzeigen