CSCI 3136 Principles of Programming Languages Syntactic Analysis - - PowerPoint PPT Presentation

csci 3136 principles of programming languages
SMART_READER_LITE
LIVE PREVIEW

CSCI 3136 Principles of Programming Languages Syntactic Analysis - - PowerPoint PPT Presentation

CSCI 3136 Principles of Programming Languages Syntactic Analysis and Context-Free Grammars - 6 Summer 2013 Faculty of Computer Science Dalhousie University 1 / 74 Push-Down Automata: Formal Definition A push-down automaton (PDA) is a 6-tuple:


slide-1
SLIDE 1

CSCI 3136 Principles of Programming Languages

Syntactic Analysis and Context-Free Grammars - 6

Summer 2013 Faculty of Computer Science Dalhousie University

1 / 74

slide-2
SLIDE 2

Push-Down Automata: Formal Definition

A push-down automaton (PDA) is a 6-tuple: (Q, Σ, Γ, δ, q0, F)

  • Q: a finite set of states
  • Σ: input alphabet (set of terminals)
  • Γ: stack alphabet
  • δ: a set of transition rules

Q × (Σ ∪ {ǫ}) × (Γ ∪ {ǫ}) → Q × Γ∗

currentState, inputSymbol, headOfStack → newState, pushSymbolsOnStack

  • q0: the start state
  • F: the set of accepting states

2 / 74

slide-3
SLIDE 3

Graph Representation of PDA

3 / 74

slide-4
SLIDE 4

Graph Representation of PDA

  • each state is a node

4 / 74

slide-5
SLIDE 5

Graph Representation of PDA

  • each state is a node
  • for each transition

δ(q1, a, s → q2, α)

5 / 74

slide-6
SLIDE 6

Graph Representation of PDA

  • each state is a node
  • for each transition

δ(q1, a, s → q2, α)

  • there is an edge from q1 to q2 with label (a, s)/α

q1 q2

(a, s)/α

6 / 74

slide-7
SLIDE 7

Computation in a PDA

7 / 74

slide-8
SLIDE 8

Computation in a PDA

  • start in state q0

8 / 74

slide-9
SLIDE 9

Computation in a PDA

  • start in state q0
  • if in state q1

q1

9 / 74

slide-10
SLIDE 10

Computation in a PDA

  • start in state q0
  • if in state q1, a is the next input symbol

Input: abbc . . .

q1

10 / 74

slide-11
SLIDE 11

Computation in a PDA

  • start in state q0
  • if in state q1, a is the next input symbol, s is on the top of

the stack Input: abbc . . . s p q q . . . Stack

q1

11 / 74

slide-12
SLIDE 12

Computation in a PDA

  • start in state q0
  • if in state q1, a is the next input symbol, s is on the top of

the stack, and δ(q1, a, s → q2, α) is a transition Input: abbc . . . s p q q . . . Stack

q1 q2

(a, s)/α

12 / 74

slide-13
SLIDE 13

Computation in a PDA

  • start in state q0
  • if in state q1, a is the next input symbol, s is on the top of

the stack, and δ(q1, a, s → q2, α) is a transition, then we can read a Input: abbc . . . s p q q . . . Stack

q1 q2

(a, s)/α

Input: bbc . . .

13 / 74

slide-14
SLIDE 14

Computation in a PDA

  • start in state q0
  • if in state q1, a is the next input symbol, s is on the top of

the stack, and δ(q1, a, s → q2, α) is a transition, then we can read a, pop s, push α (e.g., α = xy) on stack, and change state to q2 Input: abbc . . . s p q q . . . Stack

q1 q2

(a, s)/α

Input: bbc . . . x y p q q . . . Stack

14 / 74

slide-15
SLIDE 15

Computation in a PDA

  • start in state q0
  • if in state q1, a is the next input symbol, s is on the top of

the stack, and δ(q1, a, s → q2, α) is a transition, then we can read a, pop s, push α (e.g., α = xy) on stack, and change state to q2 Before Input: abbc . . . s p q q . . . Stack

q1 q2

(a, s)/α

After Input: bbc . . . x y p q q . . . Stack

15 / 74

slide-16
SLIDE 16

How does a PDA Accept?

Two modes of acceptance

  • Accept by empty stack:
  • Consume all the input, and
  • Have an empty stack at the end

(Set of final states is irrelevant)

  • Accept by final state:
  • Consume all the input, and
  • Reach a final state

16 / 74

slide-17
SLIDE 17

Graph Representation of DPDA

Rule R PREDICT(R) S → E$ {n, (} E → TT ′ {n, (} T ′ → AE {+, −} T ′ → ǫ {$, )} T → FF ′ {n, (} F ′ → MT {∗, /} F ′ → ǫ {+, −, $, )} F → n {n} F → (E) {(} A → + {+} A → − {−} M → ∗ {∗} M → / {/}

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/− . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

17 / 74

slide-18
SLIDE 18

Parsing LL(1) Lang. using DPDA

Input: 2 + (4 − 1) ∗ 3$ S Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

18 / 74

slide-19
SLIDE 19

Parsing LL(1) Lang. using DPDA

Input: 2 + (4 − 1) ∗ 3$ S Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

19 / 74

slide-20
SLIDE 20

Parsing LL(1) Lang. using DPDA

Input: 2 + (4 − 1) ∗ 3$ E $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

20 / 74

slide-21
SLIDE 21

Parsing LL(1) Lang. using DPDA

Input: 2 + (4 − 1) ∗ 3$ T T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

21 / 74

slide-22
SLIDE 22

Parsing LL(1) Lang. using DPDA

Input: 2 + (4 − 1) ∗ 3$ F F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

22 / 74

slide-23
SLIDE 23

Parsing LL(1) Lang. using DPDA

Input: 2 + (4 − 1) ∗ 3$ n F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

23 / 74

slide-24
SLIDE 24

Parsing LL(1) Lang. using DPDA

Input: +(4 − 1) ∗ 3$ F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

24 / 74

slide-25
SLIDE 25

Parsing LL(1) Lang. using DPDA

Input: +(4 − 1) ∗ 3$ F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

25 / 74

slide-26
SLIDE 26

Parsing LL(1) Lang. using DPDA

Input: +(4 − 1) ∗ 3$ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

26 / 74

slide-27
SLIDE 27

Parsing LL(1) Lang. using DPDA

Input: +(4 − 1) ∗ 3$ A E $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

27 / 74

slide-28
SLIDE 28

Parsing LL(1) Lang. using DPDA

Input: +(4 − 1) ∗ 3$ + E $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

28 / 74

slide-29
SLIDE 29

Parsing LL(1) Lang. using DPDA

Input: (4 − 1) ∗ 3$ E $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

29 / 74

slide-30
SLIDE 30

Parsing LL(1) Lang. using DPDA

Input: (4 − 1) ∗ 3$ E $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

30 / 74

slide-31
SLIDE 31

Parsing LL(1) Lang. using DPDA

Input: (4 − 1) ∗ 3$ T T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

31 / 74

slide-32
SLIDE 32

Parsing LL(1) Lang. using DPDA

Input: (4 − 1) ∗ 3$ F F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

32 / 74

slide-33
SLIDE 33

Parsing LL(1) Lang. using DPDA

Input: (4 − 1) ∗ 3$ ( E ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

33 / 74

slide-34
SLIDE 34

Parsing LL(1) Lang. using DPDA

Input: 4 − 1) ∗ 3$ E ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

34 / 74

slide-35
SLIDE 35

Parsing LL(1) Lang. using DPDA

Input: 4 − 1) ∗ 3$ E ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

35 / 74

slide-36
SLIDE 36

Parsing LL(1) Lang. using DPDA

Input: 4 − 1) ∗ 3$ T T ′ ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

36 / 74

slide-37
SLIDE 37

Parsing LL(1) Lang. using DPDA

Input: 4 − 1) ∗ 3$ F F ′ T ′ ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

37 / 74

slide-38
SLIDE 38

Parsing LL(1) Lang. using DPDA

Input: 4 − 1) ∗ 3$ n F ′ T ′ ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

38 / 74

slide-39
SLIDE 39

Parsing LL(1) Lang. using DPDA

Input: −1) ∗ 3$ F ′ T ′ ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

39 / 74

slide-40
SLIDE 40

Parsing LL(1) Lang. using DPDA

Input: −1) ∗ 3$ F ′ T ′ ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

40 / 74

slide-41
SLIDE 41

Parsing LL(1) Lang. using DPDA

Input: −1) ∗ 3$ T ′ ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

41 / 74

slide-42
SLIDE 42

Parsing LL(1) Lang. using DPDA

Input: −1) ∗ 3$ A E ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

42 / 74

slide-43
SLIDE 43

Parsing LL(1) Lang. using DPDA

Input: −1) ∗ 3$ − E ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

43 / 74

slide-44
SLIDE 44

Parsing LL(1) Lang. using DPDA

Input: 1) ∗ 3$ E ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

44 / 74

slide-45
SLIDE 45

Parsing LL(1) Lang. using DPDA

Input: 1) ∗ 3$ E ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

45 / 74

slide-46
SLIDE 46

Parsing LL(1) Lang. using DPDA

Input: 1) ∗ 3$ T T ′ ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

46 / 74

slide-47
SLIDE 47

Parsing LL(1) Lang. using DPDA

Input: 1) ∗ 3$ F F ′ T ′ ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

47 / 74

slide-48
SLIDE 48

Parsing LL(1) Lang. using DPDA

Input: 1) ∗ 3$ n F ′ T ′ ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

48 / 74

slide-49
SLIDE 49

Parsing LL(1) Lang. using DPDA

Input: ) ∗ 3$ F ′ T ′ ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

49 / 74

slide-50
SLIDE 50

Parsing LL(1) Lang. using DPDA

Input: ) ∗ 3$ F ′ T ′ ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

50 / 74

slide-51
SLIDE 51

Parsing LL(1) Lang. using DPDA

Input: ) ∗ 3$ T ′ ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

51 / 74

slide-52
SLIDE 52

Parsing LL(1) Lang. using DPDA

Input: ) ∗ 3$ ) F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

52 / 74

slide-53
SLIDE 53

Parsing LL(1) Lang. using DPDA

Input: ∗3$ F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

53 / 74

slide-54
SLIDE 54

Parsing LL(1) Lang. using DPDA

Input: ∗3$ F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

54 / 74

slide-55
SLIDE 55

Parsing LL(1) Lang. using DPDA

Input: ∗3$ M T T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

55 / 74

slide-56
SLIDE 56

Parsing LL(1) Lang. using DPDA

Input: ∗3$ ∗ T T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

56 / 74

slide-57
SLIDE 57

Parsing LL(1) Lang. using DPDA

Input: 3$ T T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

57 / 74

slide-58
SLIDE 58

Parsing LL(1) Lang. using DPDA

Input: 3$ T T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

58 / 74

slide-59
SLIDE 59

Parsing LL(1) Lang. using DPDA

Input: 3$ F F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

59 / 74

slide-60
SLIDE 60

Parsing LL(1) Lang. using DPDA

Input: 3$ n F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

60 / 74

slide-61
SLIDE 61

Parsing LL(1) Lang. using DPDA

Input: $ F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

61 / 74

slide-62
SLIDE 62

Parsing LL(1) Lang. using DPDA

Input: $ F ′ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

62 / 74

slide-63
SLIDE 63

Parsing LL(1) Lang. using DPDA

Input: $ T ′ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

63 / 74

slide-64
SLIDE 64

Parsing LL(1) Lang. using DPDA

Input: $ $ Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

64 / 74

slide-65
SLIDE 65

Parsing LL(1) Lang. using DPDA

Input: Stack

q0 q$ qn q( q) q+ q− q/ q∗

($, ǫ)/ǫ (ǫ, $)/ǫ (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ (n, ǫ)/ǫ (ǫ, n)/ǫ (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/n . . . . . . (ǫ, S)/E$ (ǫ, E)/TT ′ (ǫ, T)/FF ′ (ǫ, F)/(E) . . . . . . (ǫ, T ′)/ǫ (ǫ, F ′)/ǫ . . .. . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, T ′)/AE (ǫ, F ′)/ǫ (ǫ, A)/+ . . . . . . (ǫ, F ′)/MT (ǫ, M)/∗ . . . . . . (ǫ, F ′)/MT (ǫ, M)//

65 / 74

slide-66
SLIDE 66

Parsing LL(1) Languages using DPDA

Implementation

66 / 74

slide-67
SLIDE 67

Parsing LL(1) Languages using DPDA

Implementation

  • Using nested case statements

− Level 1: Branch on current state − Level 2: Branch on current input symbol − Level 3: Branch on current stack symbol

Some similarity to recursive-descent parsing. Instead of recursion, maintain the stack explicitly.

67 / 74

slide-68
SLIDE 68

Parsing LL(1) Languages using DPDA

Implementation

  • Using nested case statements

− Level 1: Branch on current state − Level 2: Branch on current input symbol − Level 3: Branch on current stack symbol

Some similarity to recursive-descent parsing. Instead of recursion, maintain the stack explicitly.

  • Table-driven

− 3-d table mapping (state, input symbol, stack symbol) triples to strings to be pushed onto the stack.

68 / 74

slide-69
SLIDE 69

Parsing LL(1) Languages using DPDA

Implementation

  • Using nested case statements

− Level 1: Branch on current state − Level 2: Branch on current input symbol − Level 3: Branch on current stack symbol

Some similarity to recursive-descent parsing. Instead of recursion, maintain the stack explicitly.

  • Table-driven

− 3-d table mapping (state, input symbol, stack symbol) triples to strings to be pushed onto the stack.

Generating the parser

  • Hand-coded
  • Automatic generation from grammar

69 / 74

slide-70
SLIDE 70

Important Theorems (PDA)

70 / 74

slide-71
SLIDE 71

Important Theorems (PDA)

  • A language is context-free iff it can be recognized using a

PDA.

71 / 74

slide-72
SLIDE 72

Important Theorems (PDA)

  • A language is context-free iff it can be recognized using a

PDA.

  • Non-deterministic PDA are more powerful than deterministic
  • nes.

72 / 74

slide-73
SLIDE 73

Important Theorems (PDA)

  • A language is context-free iff it can be recognized using a

PDA.

  • Non-deterministic PDA are more powerful than deterministic
  • nes.
  • CFL recognized by a DPDA is called Deterministic CFL

73 / 74

slide-74
SLIDE 74

Important Theorems (PDA)

  • A language is context-free iff it can be recognized using a

PDA.

  • Non-deterministic PDA are more powerful than deterministic
  • nes.
  • CFL recognized by a DPDA is called Deterministic CFL
  • LL(k) and LR(k) languages are deterministic CFLs.

74 / 74