Download presentation
Presentation is loading. Please wait.
Published bySavana Woodhams Modified over 9 years ago
1
Pushdown Automata Consists of –Pushdown stack (can have terminals and nonterminals) –Finite state automaton control Can do one of three actions (based on state and input): –Shift: Move current input from input onto stack –Reduce: If symbols on top of stack match right hand side of some grammar production NT Pop symbols ( ) off of the stack Push left hand side nonterminal ( NT) onto stack –Accept the input string
2
Shift-Reduce Parser Example *(+num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Stack Tokenized Input String 5*(2+3)
3
Shift-Reduce Parser Example *(+num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Grammar Rules
4
SHIFT Shift-Reduce Parser Example *(+num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op *
5
SHIFT Shift-Reduce Parser Example *(+num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op *
6
Shift-Reduce Parser Example *(+num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * REDUCE
7
Shift-Reduce Parser Example *(+num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * REDUCE Expr
8
Shift-Reduce Parser Example *(+num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr SHIFT
9
Shift-Reduce Parser Example (+num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr SHIFT *
10
Shift-Reduce Parser Example (+num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op REDUCE *
11
Shift-Reduce Parser Example (+num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT
12
Shift-Reduce Parser Example +num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT (
13
Shift-Reduce Parser Example +num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT (
14
Shift-Reduce Parser Example +num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT ( num
15
Shift-Reduce Parser Example +num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT ( num REDUCE Expr
16
Shift-Reduce Parser Example +num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT ( num Expr
17
Shift-Reduce Parser Example num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT ( num Expr +
18
Shift-Reduce Parser Example num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT ( num Expr Op REDUCE +
19
Shift-Reduce Parser Example num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT ( num Expr Op +
20
Shift-Reduce Parser Example ) num Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT ( num Expr num Op +
21
Shift-Reduce Parser Example ) num Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT ( num Expr Op + Expr REDUCE num
22
Shift-Reduce Parser Example ) num Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT ( num+ REDUCE num Expr Op Expr
23
Shift-Reduce Parser Example ) num Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT ( num Expr Op + Expr num Expr
24
Shift-Reduce Parser Example num Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * SHIFT ( num Expr Op + Expr num Expr )
25
REDUCE Shift-Reduce Parser Example num Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * ( num Expr Op + Expr num Expr )
26
REDUCE Shift-Reduce Parser Example num Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * ( num Expr Op + Expr num Expr )
27
ACCEPT! Shift-Reduce Parser Example num Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Expr Op * ( num Expr Op + Expr num Expr )
28
* num:5 num:2 + num:3 Input String 5 * (2 + 3)
29
Basic Idea Goal: reconstruct parse tree for input string Read input from left to right Build tree in a bottom-up fashion Use stack to hold pending sequences of terminals and nonterminals
30
Potential Conflicts Reduce/Reduce Conflict –Top of the stack may match RHS of multiple productions –Which production to use in the reduction? Shift/Reduce Conflict –Stack may match RHS of production –But that may not be the right match –May need to shift an input and later find a different reduction
31
Conflicts Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Original Grammar Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * New Grammar
32
Conflicts -num Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op *
33
Conflicts -num SHIFT Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op *
34
Conflicts -num SHIFT num Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op *
35
Conflicts -num SHIFT Expr REDUCE num Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op *
36
Conflicts -num SHIFT Expr num Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op *
37
Conflicts num SHIFT Expr num - Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op *
38
Shift/Reduce/Reduce Conflict num Expr num - Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * Options: Shift Reduce
39
Shift/Reduce/Reduce Conflict num Expr num - Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * What Happens if Choose Reduce REDUCE
40
Shift/Reduce/Reduce Conflict num Expr num- Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * What Happens if Choose Reduce SHIFT Expr
41
Shift/Reduce/Reduce Conflict Expr num- Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * What Happens if Choose Reduce SHIFT Expr num
42
Shift/Reduce/Reduce Conflict Expr num- Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * What Happens if Choose Reduce REDUCE Expr num
43
Shift/Reduce/Reduce Conflict Expr num- Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * What Happens if Choose Reduce FAILS! Expr num
44
Shift/Reduce/Reduce Conflict num Expr num - Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * Both of These Actions Work Reduce Shift
45
Shift/Reduce/Reduce Conflict num Expr num - Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * What Happens if Choose Reduce
46
Shift/Reduce/Reduce Conflict num Expr num Op Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * What Happens if Choose Reduce - REDUCE
47
Shift/Reduce/Reduce Conflict Expr num Op Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * What Happens if Choose Reduce - SHIFT num
48
Shift/Reduce/Reduce Conflict Expr num Op Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * What Happens if Choose Reduce - REDUCE Expr num
49
Shift/Reduce/Reduce Conflict Expr num Op Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * What Happens if Choose Reduce - REDUCE Expr num Expr
50
Shift/Reduce/Reduce Conflict Expr num Op Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * What Happens if Choose Reduce - ACCEPT Expr num Expr
51
num Expr num - Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * SHIFT Conflicts What Happens if Choose Shift
52
Expr num - Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * SHIFT num Conflicts What Happens if Choose Shift
53
Expr num - Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * REDUCE Expr Conflicts num What Happens if Choose Shift
54
Expr num- Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * REDUCE Expr Conflicts num Expr What Happens if Choose Shift
55
Expr num- Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * ACCEPT Expr Conflicts num Expr What Happens if Choose Shift
56
Shift/Reduce/Reduce Conflict num Expr num - Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * This Shift/Reduce Conflict Reflects Ambiguity in Grammar
57
Shift/Reduce/Reduce Conflict num Expr num - Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * This Shift/Reduce Conflict Reflects Ambiguity in Grammar Eliminate by Hacking Grammar
58
Shift/Reduce/Reduce Conflict num Expr num - Expr Expr Op Expr Expr Expr - Expr Expr (Expr) Expr Expr - Expr num Op + Op - Op * This Shift/Reduce Conflict Can Be Eliminated By Lookahead of One Symbol Parser Generator Should Handle It
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.