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 - 4 Summer 2013 Faculty of Computer Science Dalhousie University 1 / 125 FOLLOW( X ) Definition 2 / 125 FOLLOW( X ) Definition For any A V we


slide-1
SLIDE 1

CSCI 3136 Principles of Programming Languages

Syntactic Analysis and Context-Free Grammars - 4

Summer 2013 Faculty of Computer Science Dalhousie University

1 / 125

slide-2
SLIDE 2

FOLLOW(X) Definition

2 / 125

slide-3
SLIDE 3

FOLLOW(X) Definition

  • For any A ∈ V we define FOLLOW(A) to be the set

consisting of each terminal that can follow A in some string derivable from S; and including ǫ, if a string ending in A can be derived.

3 / 125

slide-4
SLIDE 4

FOLLOW(X) Definition

  • For any A ∈ V we define FOLLOW(A) to be the set

consisting of each terminal that can follow A in some string derivable from S; and including ǫ, if a string ending in A can be derived. Formally:

− for all a ∈ Σ, a ∈ FOLLOW(A) iff S ⇒∗ αAaβ, for some α, β ∈ (V ∪ Σ)∗ − ǫ ∈ FOLLOW(A) iff S ⇒∗ αA, for some α ∈ (V ∪ Σ)∗

4 / 125

slide-5
SLIDE 5

Computing FOLLOW

  • FOLLOW(S):= {ǫ}
  • FOLLOW(X):=∅, for all X ∈ V \{S}
  • Repeat until no FOLLOW(X) set changes any more:
  • For each production A → αBβ: (i.e., all rules with a B in r.h.s.)
  • FOLLOW(B):= FOLLOW(B) ∪ (FIRST(β)\{ǫ})
  • If ǫ ∈ FIRST(β), then FOLLOW(B):=FOLLOW(B) ∪

FOLLOW(A)

5 / 125

slide-6
SLIDE 6

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f}

6 / 125

slide-7
SLIDE 7

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T A P Q B C

7 / 125

slide-8
SLIDE 8

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} A P Q B C

8 / 125

slide-9
SLIDE 9

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} A ∅ P ∅ Q ∅ B ∅ C ∅

9 / 125

slide-10
SLIDE 10

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ P ∅ Q ∅ B ∅ C ∅

10 / 125

slide-11
SLIDE 11

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ P ∅ Q ∅ B ∅ C ∅

  • Fo(A) ←

11 / 125

slide-12
SLIDE 12

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ P ∅ Q ∅ B ∅ C ∅

  • Fo(A) ← Fo(A) ∪ (F(B) − {ǫ})

12 / 125

slide-13
SLIDE 13

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ P ∅ Q ∅ B ∅ C ∅

  • Fo(A) ← Fo(A) ∪ (F(B) − {ǫ})∪Fo(T)

13 / 125

slide-14
SLIDE 14

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ P ∅ Q ∅ B ∅ C ∅

  • Fo(A) ← Fo(A) ∪ (F(B) − {ǫ})∪Fo(T)

← ∅ ∪ {b, e}

14 / 125

slide-15
SLIDE 15

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ P ∅ Q ∅ B ∅ C ∅

  • Fo(A) ← Fo(A) ∪ (F(B) − {ǫ})

← ∅ ∪ {b, e}

15 / 125

slide-16
SLIDE 16

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ P ∅ Q ∅ B ∅ C ∅

  • Fo(A) ← Fo(A) ∪ (F(B) − {ǫ})

← ∅ ∪ {b, e} ← {b, e}

16 / 125

slide-17
SLIDE 17

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ Q ∅ B ∅ C ∅

17 / 125

slide-18
SLIDE 18

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ Q ∅ B ∅ C ∅

  • Fo(P) ←

18 / 125

slide-19
SLIDE 19

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ Q ∅ B ∅ C ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})

19 / 125

slide-20
SLIDE 20

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ Q ∅ B ∅ C ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A)

20 / 125

slide-21
SLIDE 21

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ Q ∅ B ∅ C ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(P)

21 / 125

slide-22
SLIDE 22

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ Q ∅ B ∅ C ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(P) ← ∅ ∪ ({q, ǫ} − {ǫ})

22 / 125

slide-23
SLIDE 23

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ Q ∅ B ∅ C ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(P) ← ∅ ∪ ({q, ǫ} − {ǫ}) ∪ ∅

23 / 125

slide-24
SLIDE 24

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ Q ∅ B ∅ C ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(P) ← ∅∪({q, ǫ}−{ǫ})∪∅∪({ǫ}−{ǫ})

24 / 125

slide-25
SLIDE 25

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ Q ∅ B ∅ C ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(P) ← ∅∪({q, ǫ}−{ǫ})∪∅∪({ǫ}−{ǫ})∪∅

25 / 125

slide-26
SLIDE 26

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ Q ∅ B ∅ C ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(P) ← ∅∪({q, ǫ}−{ǫ})∪∅∪({ǫ}−{ǫ})∪∅ ← {q}

26 / 125

slide-27
SLIDE 27

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ B ∅ C ∅

27 / 125

slide-28
SLIDE 28

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ B ∅ C ∅

  • Fo(Q) ←

28 / 125

slide-29
SLIDE 29

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ B ∅ C ∅

  • Fo(Q) ← Fo(Q) ∪ (F(ǫ) − {ǫ})

29 / 125

slide-30
SLIDE 30

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ B ∅ C ∅

  • Fo(Q) ← Fo(Q) ∪ (F(ǫ) − {ǫ})∪Fo(A)

30 / 125

slide-31
SLIDE 31

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ B ∅ C ∅

  • Fo(Q) ← Fo(Q) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(Q)

31 / 125

slide-32
SLIDE 32

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ B ∅ C ∅

  • Fo(Q) ← Fo(Q) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(Q) ← ∅ ∪ ∅ ∪ ∅ ∪ ∅ ∪ ∅

32 / 125

slide-33
SLIDE 33

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ B ∅ C ∅

  • Fo(Q) ← Fo(Q) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(Q) ← ∅ ∪ ∅ ∪ ∅ ∪ ∅ ∪ ∅ ← ∅

33 / 125

slide-34
SLIDE 34

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1 It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ C ∅

34 / 125

slide-35
SLIDE 35

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ C ∅

  • Fo(B) ←

35 / 125

slide-36
SLIDE 36

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ C ∅

  • Fo(B) ← Fo(B) ∪ (F(ǫ) − {ǫ})

36 / 125

slide-37
SLIDE 37

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ C ∅

  • Fo(B) ← Fo(B) ∪ (F(ǫ) − {ǫ})∪Fo(T)

37 / 125

slide-38
SLIDE 38

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ C ∅

  • Fo(B) ← Fo(B) ∪ (F(ǫ) − {ǫ})∪Fo(T) ∪

(F(C) − {ǫ})∪Fo(A)

38 / 125

slide-39
SLIDE 39

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ C ∅

  • Fo(B) ← Fo(B) ∪ (F(ǫ) − {ǫ})∪Fo(T) ∪

(F(C)−{ǫ})∪Fo(A)∪(F(ǫ)−{ǫ})∪Fo(B)

39 / 125

slide-40
SLIDE 40

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ C ∅

  • Fo(B) ← Fo(B) ∪ (F(ǫ) − {ǫ})∪Fo(T) ∪

(F(C)−{ǫ})∪Fo(A)∪(F(ǫ)−{ǫ})∪Fo(B) ← ∅ ∪ ∅ ∪ {ǫ}

40 / 125

slide-41
SLIDE 41

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ C ∅

  • Fo(B) ← Fo(B) ∪ (F(ǫ) − {ǫ})∪Fo(T) ∪

(F(C)−{ǫ})∪Fo(A)∪(F(ǫ)−{ǫ})∪Fo(B) ← ∅ ∪ ∅ ∪ {ǫ} ∪ {c, f}

41 / 125

slide-42
SLIDE 42

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ C ∅

  • Fo(B) ← Fo(B) ∪ (F(ǫ) − {ǫ})∪Fo(T) ∪

(F(C) − {ǫ}) ∪ (F(ǫ) − {ǫ})∪Fo(B) ← ∅ ∪ ∅ ∪ {ǫ} ∪ {c, f}

42 / 125

slide-43
SLIDE 43

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ C ∅

  • Fo(B) ← Fo(B) ∪ (F(ǫ) − {ǫ})∪Fo(T) ∪

(F(C) − {ǫ}) ∪ (F(ǫ) − {ǫ})∪Fo(B) ← ∅ ∪ ∅ ∪ {ǫ} ∪ {c, f} ∪ ∅ ∪ ∅

43 / 125

slide-44
SLIDE 44

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ C ∅

  • Fo(B) ← Fo(B) ∪ (F(ǫ) − {ǫ})∪Fo(T) ∪

(F(C) − {ǫ}) ∪ (F(ǫ) − {ǫ})∪Fo(B) ← ∅ ∪ ∅ ∪ {ǫ} ∪ {c, f} ∪ ∅ ∪ ∅ ← {ǫ, c, f}

44 / 125

slide-45
SLIDE 45

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅

45 / 125

slide-46
SLIDE 46

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

46 / 125

slide-47
SLIDE 47

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} P ∅ {q} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

47 / 125

slide-48
SLIDE 48

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

48 / 125

slide-49
SLIDE 49

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(P) ←

49 / 125

slide-50
SLIDE 50

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})

50 / 125

slide-51
SLIDE 51

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A)

51 / 125

slide-52
SLIDE 52

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(P)

52 / 125

slide-53
SLIDE 53

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(P) ← {q} ∪ ({q, ǫ} − {ǫ})

53 / 125

slide-54
SLIDE 54

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(P) ← {q}∪({q, ǫ}−{ǫ})∪{b, e}∪({ǫ}− {ǫ})

54 / 125

slide-55
SLIDE 55

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(P) ← {q}∪({q, ǫ}−{ǫ})∪{b, e}∪({ǫ}− {ǫ}) ∪ {q}

55 / 125

slide-56
SLIDE 56

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(P) ← {q}∪({q, ǫ}−{ǫ})∪{b, e}∪({ǫ}− {ǫ}) ∪ {q} ← {q} ∪ {q} ∪ {b, e} ∪ {q}

56 / 125

slide-57
SLIDE 57

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(P) ← Fo(P) ∪ (F(Q) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(P) ← {q}∪({q, ǫ}−{ǫ})∪{b, e}∪({ǫ}− {ǫ}) ∪ {q} ← {q} ∪ {q} ∪ {b, e} ∪ {q} ← {q, b, e}

57 / 125

slide-58
SLIDE 58

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

58 / 125

slide-59
SLIDE 59

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(Q) ←

59 / 125

slide-60
SLIDE 60

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(Q) ← Fo(Q) ∪ (F(ǫ) − {ǫ})

60 / 125

slide-61
SLIDE 61

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(Q) ← Fo(Q) ∪ (F(ǫ) − {ǫ})∪Fo(A)

61 / 125

slide-62
SLIDE 62

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(Q) ← Fo(Q) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(Q)

62 / 125

slide-63
SLIDE 63

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(Q) ← Fo(Q) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(Q) ← ∅ ∪ ({ǫ} − {ǫ})

63 / 125

slide-64
SLIDE 64

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(Q) ← Fo(Q) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(Q) ← ∅∪({ǫ}−{ǫ})∪{b, e}∪({ǫ}−{ǫ})

64 / 125

slide-65
SLIDE 65

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(Q) ← Fo(Q) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(Q) ← ∅ ∪ ({ǫ} − {ǫ}) ∪ {b, e} ∪ ({ǫ} − {ǫ}) ∪ ∅

65 / 125

slide-66
SLIDE 66

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(Q) ← Fo(Q) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(Q) ← ∅ ∪ ({ǫ} − {ǫ}) ∪ {b, e} ∪ ({ǫ} − {ǫ}) ∪ ∅ ← ∅ ∪ ∅ ∪ {b, e} ∪ ∅ ∪ ∅

66 / 125

slide-67
SLIDE 67

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ B ∅ {ǫ, c, f} C ∅ ∅

  • Fo(Q) ← Fo(Q) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(Q) ← ∅ ∪ ({ǫ} − {ǫ}) ∪ {b, e} ∪ ({ǫ} − {ǫ}) ∪ ∅ ← ∅ ∪ ∅ ∪ {b, e} ∪ ∅ ∪ ∅ ← {b, e}

67 / 125

slide-68
SLIDE 68

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} C ∅ ∅

68 / 125

slide-69
SLIDE 69

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅

69 / 125

slide-70
SLIDE 70

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅

  • Fo(C) ←

70 / 125

slide-71
SLIDE 71

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅

  • Fo(C) ← Fo(C) ∪ (F(ǫ) − {ǫ})

71 / 125

slide-72
SLIDE 72

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅

  • Fo(C) ← Fo(C) ∪ (F(ǫ) − {ǫ})∪Fo(A)

72 / 125

slide-73
SLIDE 73

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅

  • Fo(C) ← Fo(C) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(C)

73 / 125

slide-74
SLIDE 74

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅

  • Fo(C) ← Fo(C) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(C) ← ∅ ∪ ({ǫ} − {ǫ})

74 / 125

slide-75
SLIDE 75

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅

  • Fo(C) ← Fo(C) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(C) ← ∅∪({ǫ}−{ǫ})∪{b, e}∪({ǫ}−{ǫ})

75 / 125

slide-76
SLIDE 76

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅

  • Fo(C) ← Fo(C) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(C) ← ∅ ∪ ({ǫ} − {ǫ}) ∪ {b, e} ∪ ({ǫ} − {ǫ}) ∪ ∅

76 / 125

slide-77
SLIDE 77

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅

  • Fo(C) ← Fo(C) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(C) ← ∅ ∪ ({ǫ} − {ǫ}) ∪ {b, e} ∪ ({ǫ} − {ǫ}) ∪ ∅ ← ∅ ∪ ∅ ∪ {b, e} ∪ ∅ ∪ ∅

77 / 125

slide-78
SLIDE 78

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅

  • Fo(C) ← Fo(C) ∪ (F(ǫ) − {ǫ})∪Fo(A) ∪

(F(ǫ) − {ǫ})∪Fo(C) ← ∅ ∪ ({ǫ} − {ǫ}) ∪ {b, e} ∪ ({ǫ} − {ǫ}) ∪ ∅ ← ∅ ∪ ∅ ∪ {b, e} ∪ ∅ ∪ ∅ ← {b, e}

78 / 125

slide-79
SLIDE 79

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅ {b, e}

79 / 125

slide-80
SLIDE 80

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅ {b, e}

80 / 125

slide-81
SLIDE 81

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} {b, e} P ∅ {q} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅ {b, e}

81 / 125

slide-82
SLIDE 82

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} {b, e} P ∅ {q} {q, b, e} {q, b, e} Q ∅ ∅ {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅ {b, e}

82 / 125

slide-83
SLIDE 83

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} {b, e} P ∅ {q} {q, b, e} {q, b, e} Q ∅ ∅ {b, e} {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} C ∅ ∅ {b, e}

83 / 125

slide-84
SLIDE 84

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} {b, e} P ∅ {q} {q, b, e} {q, b, e} Q ∅ ∅ {b, e} {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} {ǫ, c, f} C ∅ ∅ {b, e}

84 / 125

slide-85
SLIDE 85

Computing FOLLOW: Example

T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V)

  • It. 1
  • It. 2
  • It. 3
  • It. 4

T {ǫ} {ǫ} {ǫ} {ǫ} A ∅ {b, e} {b, e} {b, e} P ∅ {q} {q, b, e} {q, b, e} Q ∅ ∅ {b, e} {b, e} B ∅ {ǫ, c, f} {ǫ, c, f} {ǫ, c, f} C ∅ ∅ {b, e} {b, e}

85 / 125

slide-86
SLIDE 86

PREDICT Definition

86 / 125

slide-87
SLIDE 87

PREDICT Definition

  • For any A → α ∈ R we define PREDICT(A → α) as follows:

− for all a ∈ Σ ∪ {ǫ}, a ∈ PREDICT(A → α) iff either a ∈FIRST(α)\{ǫ}

  • r α ⇒∗ ǫ and a ∈FOLLOW(A)

87 / 125

slide-88
SLIDE 88

Computing PREDICT

  • PREDICT(A → α):=∅, for every production A → α
  • For every production A → α:

− PREDICT(A → α):=FIRST(α)\{ǫ} − If ǫ ∈ FIRST(α), then PREDICT(A → α):=PREDICT(A → α)∪ FOLLOW(A)

88 / 125

slide-89
SLIDE 89

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

89 / 125

slide-90
SLIDE 90

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(T) ← F(AB) − {ǫ}

Rule R PREDICT(R) T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

90 / 125

slide-91
SLIDE 91

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(T) ← F(AB) − {ǫ} ← (F(A) − {ǫ})

Rule R PREDICT(R) T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

91 / 125

slide-92
SLIDE 92

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(T) ← F(AB) − {ǫ} ← (F(A) − {ǫ})∪F(B) − {ǫ}

Rule R PREDICT(R) T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

92 / 125

slide-93
SLIDE 93

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(T) ← F(AB) − {ǫ} ← (F(A) − {ǫ})∪F(B) − {ǫ} ← ({p, q, ǫ, b, e} − {ǫ})

Rule R PREDICT(R) T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

93 / 125

slide-94
SLIDE 94

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(T) ← F(AB) − {ǫ} ← (F(A) − {ǫ})∪F(B) − {ǫ} ← ({p, q, b, e})∪{b, e} − {ǫ}

Rule R PREDICT(R) T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

94 / 125

slide-95
SLIDE 95

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(T) ← F(AB) − {ǫ} ← (F(A) − {ǫ})∪F(B) − {ǫ} ← ({p, q, b, e})∪{b, e} − {ǫ} ← {p, q, b, e} − {ǫ}

Rule R PREDICT(R) T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

95 / 125

slide-96
SLIDE 96

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(T) ← F(AB) − {ǫ} ← (F(A) − {ǫ})∪F(B) − {ǫ} ← ({p, q, b, e})∪{b, e} − {ǫ} ← ({p, q, b, e} − {ǫ}) ∪ Fo(T)

Rule R PREDICT(R) T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

96 / 125

slide-97
SLIDE 97

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(T) ← F(AB) − {ǫ} ← (F(A) − {ǫ})∪F(B) − {ǫ} ← ({p, q, b, e})∪{b, e} − {ǫ} ← ({p, q, b, e} − {ǫ}) ∪ Fo(T) ← {p, q, b, e}

Rule R PREDICT(R) T → AB A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

97 / 125

slide-98
SLIDE 98

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

98 / 125

slide-99
SLIDE 99

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(A) ← F(PQ) − {ǫ}

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

99 / 125

slide-100
SLIDE 100

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(A) ← F(PQ) − {ǫ} ← (F(P) − {ǫ})

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

100 / 125

slide-101
SLIDE 101

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(A) ← F(PQ) − {ǫ} ← (F(P) − {ǫ})∪F(Q) − {ǫ}

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

101 / 125

slide-102
SLIDE 102

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(A) ← F(PQ) − {ǫ} ← (F(P) − {ǫ})∪F(Q) − {ǫ} ← ({p, ǫ} − {ǫ})

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

102 / 125

slide-103
SLIDE 103

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(A) ← F(PQ) − {ǫ} ← (F(P) − {ǫ})∪F(Q) − {ǫ} ← ({p})∪{q, ǫ} − {ǫ}

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

103 / 125

slide-104
SLIDE 104

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(A) ← F(PQ) − {ǫ} ← (F(P) − {ǫ})∪F(Q) − {ǫ} ← ({p, q, ǫ}) − {ǫ}

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

104 / 125

slide-105
SLIDE 105

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(A) ← F(PQ) − {ǫ} ← (F(P) − {ǫ})∪F(Q) − {ǫ} ← ({p, q, ǫ}) − {ǫ}∪Fo(A)

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

105 / 125

slide-106
SLIDE 106

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(A) ← F(PQ) − {ǫ} ← (F(P) − {ǫ})∪F(Q) − {ǫ} ← ({p, q, ǫ}) − {ǫ}∪Fo(A) ← {p, q} ∪ {b, e}

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

106 / 125

slide-107
SLIDE 107

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(A) ← F(PQ) − {ǫ} ← (F(P) − {ǫ})∪F(Q) − {ǫ} ← ({p, q, ǫ}) − {ǫ}∪Fo(A) ← {p, q} ∪ {b, e} ← {p, q, b, e}

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

107 / 125

slide-108
SLIDE 108

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

108 / 125

slide-109
SLIDE 109

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

109 / 125

slide-110
SLIDE 110

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

110 / 125

slide-111
SLIDE 111

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(P) ← F(ǫ) − {ǫ}

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

111 / 125

slide-112
SLIDE 112

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(P) ← F(ǫ) − {ǫ} ← ({ǫ} − {ǫ})

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

112 / 125

slide-113
SLIDE 113

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(P) ← F(ǫ) − {ǫ} ← ({ǫ} − {ǫ})∪Fo(P)

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

113 / 125

slide-114
SLIDE 114

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(P) ← F(ǫ) − {ǫ} ← ({ǫ} − {ǫ})∪Fo(P) ← ∅ ∪ {q, b, e}

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

114 / 125

slide-115
SLIDE 115

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e}

P(P) ← F(ǫ) − {ǫ} ← ({ǫ} − {ǫ})∪Fo(P) ← ∅ ∪ {q, b, e} ← {q, b, e}

Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ Q → qQ Q → ǫ B → bB B → e C → cC C → f

115 / 125

slide-116
SLIDE 116

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ {q, b, e} Q → qQ Q → ǫ B → bB B → e C → cC C → f

116 / 125

slide-117
SLIDE 117

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ {q, b, e} Q → qQ {q} Q → ǫ B → bB B → e C → cC C → f

117 / 125

slide-118
SLIDE 118

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ {q, b, e} Q → qQ {q} Q → ǫ {b, e} B → bB B → e C → cC C → f

118 / 125

slide-119
SLIDE 119

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ {q, b, e} Q → qQ {q} Q → ǫ {b, e} B → bB {b} B → e C → cC C → f

119 / 125

slide-120
SLIDE 120

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ {q, b, e} Q → qQ {q} Q → ǫ {b, e} B → bB {b} B → e {e} C → cC C → f

120 / 125

slide-121
SLIDE 121

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ {q, b, e} Q → qQ {q} Q → ǫ {b, e} B → bB {b} B → e {e} C → cC {c} C → f

121 / 125

slide-122
SLIDE 122

Computing PREDICT: Example

X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ {q, b, e} Q → qQ {q} Q → ǫ {b, e} B → bB {b} B → e {e} C → cC {c} C → f {f}

122 / 125

slide-123
SLIDE 123

Computing PREDICT: Example

A grammar is LL(1) if the predictor sets of all productions with the same LHS are disjoint. X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ {q, b, e} Q → qQ {q} Q → ǫ {b, e} B → bB {b} B → e {e} C → cC {c} C → f {f}

123 / 125

slide-124
SLIDE 124

Computing PREDICT: Example

A grammar is LL(1) if the predictor sets of all productions with the same LHS are disjoint. X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ {q, b, e} Q → qQ {q} Q → ǫ {b, e} B → bB {b} B → e {e} C → cC {c} C → f {f}

124 / 125

slide-125
SLIDE 125

Computing PREDICT: Example

A grammar is LL(1) if the predictor sets of all productions with the same LHS are disjoint. X FIRST(X) p {p} q {q} b {b} e {e} c {c} f {f} T {p, q, b, e} A {p, q, ǫ, b, e} P {p, ǫ} Q {q, ǫ} B {b, e} C {c, f} V FOLLOW(V ) T {ǫ} A {b, e} P {q, b, e} Q {b, e} B {ǫ, c, f} C {b, e} The grammar is not LL(1). Rule R PREDICT(R) T → AB {p, q, b, e} A → PQ {p, q, b, e} A → BC {b, e} P → pP {p} P → ǫ {q, b, e} Q → qQ {q} Q → ǫ {b, e} B → bB {b} B → e {e} C → cC {c} C → f {f}

125 / 125