Presentation is loading. Please wait.

Presentation is loading. Please wait.

Pushdown Automata Consists of –Pushdown stack (can have terminals and nonterminals) –Finite state automaton control Can do one of three actions (based.

Similar presentations


Presentation on theme: "Pushdown Automata Consists of –Pushdown stack (can have terminals and nonterminals) –Finite state automaton control Can do one of three actions (based."— Presentation transcript:

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


Download ppt "Pushdown Automata Consists of –Pushdown stack (can have terminals and nonterminals) –Finite state automaton control Can do one of three actions (based."

Similar presentations


Ads by Google