syntaxanalyse bottom-up und lr(0)
DESCRIPTION
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) - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/1.jpg)
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Syntaxanalyse Bottom-Up und LR(0)Daniel Matthey
![Page 2: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/2.jpg)
2
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 3: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/3.jpg)
3
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 4: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/4.jpg)
4
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Compileraufbau
Lexikalische Analyse
Syntaxanalyse
Semantische Analyse
Zwischencode-Generator
Code-Optimierer
Code-Generator
![Page 5: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/5.jpg)
5
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 6: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/6.jpg)
6
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Grammatik
Besteht aus:- Terminalen - Nichtterminalen - Produktionen - und einem Startsymbol
![Page 7: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/7.jpg)
7
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Grammatik
Beispiel: E E + E E E * E E ( E ) E id
![Page 8: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/8.jpg)
8
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 9: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/9.jpg)
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
![Page 10: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/10.jpg)
10
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 11: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/11.jpg)
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
![Page 12: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/12.jpg)
12
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Parse-Baum für id + id
E
+E E
E E + E E E * E E ( E ) E id
![Page 13: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/13.jpg)
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
![Page 14: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/14.jpg)
14
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Parse-Baum für id + id
E
+E E
id id
E E + E E E * E E ( E ) E id
![Page 15: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/15.jpg)
15
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 16: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/16.jpg)
16
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Mehrdeutigkeit
E E + E E E * E E ( E ) E id
E
+
EE
* id
Beispiel: id * id + id
id id
E
+
EE
*id id id
![Page 17: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/17.jpg)
17
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 18: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/18.jpg)
18
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Bottom-Up-Parsing
E E + E E E * E E ( E ) E id
+id id
![Page 19: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/19.jpg)
19
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Bottom-Up-Parsing
E E + E E E * E E ( E ) E id
+id id
E
![Page 20: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/20.jpg)
20
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Bottom-Up-Parsing
E E + E E E * E E ( E ) E id
+id id
E E
![Page 21: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/21.jpg)
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 id+
![Page 22: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/22.jpg)
22
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 23: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/23.jpg)
23
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser
Neue Grammatik:
E E + T | TT T * F | FF ( E ) | id
Rechtsableitung zu id * id: E → T → T * F → T * id → F * id → id * id
![Page 24: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/24.jpg)
24
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
![Page 25: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/25.jpg)
25
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Stack Eingabe Aktion
$ id * id $ Verschieben(shift)
![Page 26: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/26.jpg)
26
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Stack Eingabe Aktion
$ id * id $ Verschieben(shift)
$ id * id $ Reduzieren(reduce) durch F → id
![Page 27: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/27.jpg)
27
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Stack Eingabe Aktion
$ id * id $ Verschieben(shift)
$ id * id $ Reduzieren(reduce) durch F → id
$ F * id $ Reduzieren durch T → F
![Page 28: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/28.jpg)
28
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Stack Eingabe Aktion
$ id * id $ Verschieben(shift)
$ id * id $ Reduzieren(reduce) durch F → id
$ F * id $ Reduzieren durch T → F
$ T * id $ Verschieben
![Page 29: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/29.jpg)
29
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Stack Eingabe Aktion
$ id * id $ Verschieben(shift)
$ id * id $ Reduzieren(reduce) durch F → id
$ F * id $ Reduzieren durch T → F
$ T * id $ Verschieben
$ T * id $ Verschieben
![Page 30: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/30.jpg)
30
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Stack Eingabe Aktion
$ 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
![Page 31: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/31.jpg)
31
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Stack Eingabe Aktion
$ 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
![Page 32: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/32.jpg)
32
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Stack Eingabe Aktion
$ 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
![Page 33: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/33.jpg)
33
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Stack Eingabe Aktion
$ 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
![Page 34: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/34.jpg)
34
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 35: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/35.jpg)
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
![Page 36: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/36.jpg)
36
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 37: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/37.jpg)
37
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Items
Statt Grammatiksymbole auf dem Stack nun Zustände, die aus einer Menge von Items bestehenFolgende 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
![Page 38: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/38.jpg)
38
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 39: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/39.jpg)
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) hinzu2. Gibt es ein Item A a.Bb in CLOSURE(I) und eine
Produktion B x, so füge B .x zu CLOSURE(I) hinzu
![Page 40: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/40.jpg)
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
![Page 41: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/41.jpg)
41
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 42: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/42.jpg)
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
![Page 43: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/43.jpg)
43
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Der LR(0)-Automat
E E + T | TT T * F | FF ( E ) | id
DragonBook S.294
![Page 44: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/44.jpg)
44
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Zeile Stack Symbole Eingabe Aktion
(1) 0 $ id * id $ Verschieben zu 5
GOTO(0,id) gibt uns Zustand 5 an
![Page 45: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/45.jpg)
45
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Der LR(0)-Automat
E E + T | TT T * F | FF ( E ) | id
DragonBook S.294
![Page 46: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/46.jpg)
46
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Zeile Stack Symbole Eingabe Aktion
(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
![Page 47: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/47.jpg)
47
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Der LR(0)-Automat
E E + T | TT T * F | FF ( E ) | id
DragonBook S.294
![Page 48: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/48.jpg)
48
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Zeile Stack Symbole Eingabe Aktion
(1) 0 $ id * id $ Verschieben zu 5
(2) 05 $ id * id $ Reduzieren durch F → id
(3) 03 $ F * id $ Reduzieren durch T → F
![Page 49: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/49.jpg)
49
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Der LR(0)-Automat
E E + T | TT T * F | FF ( E ) | id
DragonBook S.294
![Page 50: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/50.jpg)
50
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Zeile Stack Symbole Eingabe Aktion
(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
![Page 51: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/51.jpg)
51
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Der LR(0)-Automat
E E + T | TT T * F | FF ( E ) | id
DragonBook S.294
![Page 52: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/52.jpg)
52
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Zeile Stack Symbole Eingabe Aktion
(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
![Page 53: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/53.jpg)
53
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Der LR(0)-Automat
E E + T | TT T * F | FF ( E ) | id
DragonBook S.294
![Page 54: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/54.jpg)
54
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Zeile Stack Symbole Eingabe Aktion
(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
![Page 55: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/55.jpg)
55
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Zeile Stack Symbole Eingabe Aktion
(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
![Page 56: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/56.jpg)
56
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Zeile Stack Symbole Eingabe Aktion
(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
![Page 57: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/57.jpg)
57
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Shift-Reduce-Parser mit Hilfe des LR(0)-Automaten
E E + T | TT T * F | FF ( E ) | id
Parsen von id * id
Zeile Stack Symbole Eingabe Aktion
(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
![Page 58: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/58.jpg)
58
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 59: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/59.jpg)
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)
![Page 60: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/60.jpg)
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
![Page 61: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/61.jpg)
61
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Agenda
BasicsCompileraufbauGrammatikenAbleitungenBeispiel Parse-BaumMehrdeutigkeit
Bottom-Up-ParsingShift-Reduce-Parser inkl. BeispielLR(0)-SyntaxanalyseItemsDie Funktionen CLOSURE(I) und GOTO(I,X)Der LR(0)-Automat inkl. BeispielParsertabellenBeispiel
![Page 62: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/62.jpg)
62
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Parsertabellen
Zustan
d
ACTION GOTO
- id + * ( ) $ E T F
0 s5 s4 1 2 3
1 s6 acc
2 r2 s7 r2 r2
3 r4 r4 r4 r4 8 2 3
4 s5 s4
5 r6 r6 r6 r6 9 3
6 s5 s4 10
7 s5 s4
8 s6 s11
9 r1 s7 r1 r1
10 r3 r3 r3 r3
11 r5 r5 r5 r5 DragonBook S.303
E E + T | TT T * F | FF ( E ) | id
![Page 63: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/63.jpg)
63
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
LR-Parser mit Hilfe der Parsertabelle
Stack Symbole Eingabe Aktion(1) 0 id * id + id $ Verschieben zu 5
Parsen von id * id
E E + T | TT T * F | FF ( E ) | id
![Page 64: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/64.jpg)
64
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Parsertabellen
E E + T | TT T * F | FF ( E ) | id
Zustan
d
ACTION GOTO
- id + * ( ) $ E T F
0 s5 s4 1 2 3
1 s6 acc
2 r2 s7 r2 r2
3 r4 r4 r4 r4 8 2 3
4 s5 s4
5 r6 r6 r6 r6 9 3
6 s5 s4 10
7 s5 s4
8 s6 s11
9 r1 s7 r1 r1
10 r3 r3 r3 r3
11 r5 r5 r5 r5
![Page 65: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/65.jpg)
65
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
LR-Parser mit Hilfe der Parsertabelle
Parsen von id * id
E E + T | TT T * F | FF ( E ) | id
Stack Symbole Eingabe Aktion(1) 0 id * id + id $ Verschieben zu 5
(2) 05 id * id + id $ Reduzieren durch F → id
![Page 66: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/66.jpg)
66
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Parsertabellen
Zustan
d
ACTION GOTO
- id + * ( ) $ E T F
0 s5 s4 1 2 3
1 s6 acc
2 r2 s7 r2 r2
3 r4 r4 r4 r4 8 2 3
4 s5 s4
5 r6 r6 r6 r6 9 3
6 s5 s4 10
7 s5 s4
8 s6 s11
9 r1 s7 r1 r1
10 r3 r3 r3 r3
11 r5 r5 r5 r5
E E + T | TT T * F | FF ( E ) | id
![Page 67: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/67.jpg)
67
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
LR-Parser mit Hilfe der Parsertabelle
Parsen von id * id
E E + T | TT T * F | FF ( E ) | id
Stack Symbole Eingabe Aktion(1) 0 id * id + id $ Verschieben zu 5
(2) 05 id * id + id $ Reduzieren durch F → id
(3) 03 F * id + id $ Reduzieren durch T → F
![Page 68: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/68.jpg)
68
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Parsertabellen
Zustan
d
ACTION GOTO
- id + * ( ) $ E T F
0 s5 s4 1 2 3
1 s6 acc
2 r2 s7 r2 r2
3 r4 r4 r4 r4 8 2 3
4 s5 s4
5 r6 r6 r6 r6 9 3
6 s5 s4 10
7 s5 s4
8 s6 s11
9 r1 s7 r1 r1
10 r3 r3 r3 r3
11 r5 r5 r5 r5
E E + T | TT T * F | FF ( E ) | id
![Page 69: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/69.jpg)
69
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
LR-Parser mit Hilfe der Parsertabelle
Parsen von id * id
E E + T | TT T * F | FF ( E ) | id
Stack Symbole Eingabe Aktion(1) 0 id * id + id $ Verschieben zu 5
(2) 05 id * id + id $ Reduzieren durch F → id
(3) 03 F * id + id $ Reduzieren durch T → F(4) 02 T * id + id $ Verschieben zu 7
![Page 70: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/70.jpg)
70
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Parsertabellen
Zustan
d
ACTION GOTO
- id + * ( ) $ E T F
0 s5 s4 1 2 3
1 s6 acc
2 r2 s7 r2 r2
3 r4 r4 r4 r4 8 2 3
4 s5 s4
5 r6 r6 r6 r6 9 3
6 s5 s4 10
7 s5 s4
8 s6 s11
9 r1 s7 r1 r1
10 r3 r3 r3 r3
11 r5 r5 r5 r5
E E + T | TT T * F | FF ( E ) | id
![Page 71: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/71.jpg)
71
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
LR-Parser mit Hilfe der Parsertabelle
Parsen von id * id
E E + T | TT T * F | FF ( E ) | id
Stack Symbole Eingabe Aktion(1) 0 id * id + id $ Verschieben zu 5
(2) 05 id * id + id $ Reduzieren durch F → id
(3) 03 F * id + id $ Reduzieren durch T → F(4) 02 T * id + id $ Verschieben zu 7
(5) 027 T * id + id $ Verschieben zu 5
Weitere Tabellen
![Page 72: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/72.jpg)
72
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Parsertabellen
Zustan
d
ACTION GOTO
- id + * ( ) $ E T F
0 s5 s4 1 2 3
1 s6 acc
2 r2 s7 r2 r2
3 r4 r4 r4 r4 8 2 3
4 s5 s4
5 r6 r6 r6 r6 9 3
6 s5 s4 10
7 s5 s4
8 s6 s11
9 r1 s7 r1 r1
10 r3 r3 r3 r3
11 r5 r5 r5 r5
E E + T | TT T * F | FF ( E ) | id
![Page 73: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/73.jpg)
73
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
LR-Parser mit Hilfe der Parsertabelle
Parsen von id * id
E E + T | TT T * F | FF ( E ) | id
Stack Symbole Eingabe Aktion(1) 0 id * id + id $ Verschieben zu 5
(2) 05 id * id + id $ Reduzieren durch F → id
(3) 03 F * id + id $ Reduzieren durch T → F(4) 02 T * id + id $ Verschieben zu 7
(5) 027 T * id + id $ Verschieben zu 5
(6) 0275 T * id + id $ Reduzieren durch F → id
![Page 74: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/74.jpg)
74
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
LR-Parser mit Hilfe der Parsertabelle
Parsen von id * id
E E + T | TT T * F | FF ( E ) | id
Stack Symbole Eingabe Aktion(1) 0 id * id + id $ Verschieben zu 5
(2) 05 id * id + id $ Reduzieren durch F → id
(3) 03 F * id + id $ Reduzieren durch T → F(4) 02 T * id + id $ Verschieben zu 7
(5) 027 T * id + id $ Verschieben zu 5
(6) 0275 T * id + id $ Reduzieren durch F → id
(7) 02710 T * F + id $ Reduzieren durch T → T * F
![Page 75: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/75.jpg)
75
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
LR-Parser mit Hilfe der Parsertabelle
Parsen von id * id
E E + T | TT T * F | FF ( E ) | id
Stack Symbole Eingabe Aktion(1) 0 id * id + id $ Verschieben zu 5
(2) 05 id * id + id $ Reduzieren durch F → id
(3) 03 F * id + id $ Reduzieren durch T → F(4) 02 T * id + id $ Verschieben zu 7
(5) 027 T * id + id $ Verschieben zu 5
(6) 0275 T * id + id $ Reduzieren durch F → id
(7) 02710 T * F + id $ Reduzieren durch T → T * F
(8) 02 T + id $ Reduzieren durch E → T
(9) 01 E + id $ Verschieben
(10) 016 E + id $ Verschieben
(11) 0165 E + id $ Reduzieren durch F → id
(12) 0163 E + F $ Reduzieren durch T → F(13) 0169 E + T $ Reduzieren durch E → E + T
(14) 01 E $ Akzeptieren
![Page 76: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/76.jpg)
76
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Parse-Baum
Reduktionsschritte:F idT FF idT T * FE TF idT FE E + T
F
id +id *
F
T
T
E T
E
F
id
![Page 77: Syntaxanalyse Bottom-Up und LR(0)](https://reader031.vdokument.com/reader031/viewer/2022013101/56815b59550346895dc93f99/html5/thumbnails/77.jpg)
77
Syntaxanalyse Bottom-Up und LR(0)
Daniel Matthey
Fragen?