csci 3136 principles of programming languages
play

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


  1. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ P → ǫ { e } ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( P ) ← Fo ( P ) ∪ ( F ( Q ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( P ) C → cC { p, ǫ } ← ∅∪ ( { q, ǫ }−{ ǫ } ) ∪∅∪ ( { ǫ }−{ ǫ } ) ∪∅ P C → f Q { q, ǫ } { b, e } B C { c, f } 25 / 125

  2. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ P → ǫ { e } ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( P ) ← Fo ( P ) ∪ ( F ( Q ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( P ) C → cC { p, ǫ } ← ∅∪ ( { q, ǫ }−{ ǫ } ) ∪∅∪ ( { ǫ }−{ ǫ } ) ∪∅ P C → f ← { q } Q { q, ǫ } { b, e } B C { c, f } 26 / 125

  3. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 27 / 125

  4. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 28 / 125

  5. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← Fo ( Q ) ∪ ( F ( ǫ ) − { ǫ } ) T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 29 / 125

  6. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← Fo ( Q ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 30 / 125

  7. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← Fo ( Q ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( Q ) C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 31 / 125

  8. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← Fo ( Q ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( Q ) C → cC { p, ǫ } ← ∅ ∪ ∅ ∪ ∅ ∪ ∅ ∪ ∅ P C → f Q { q, ǫ } { b, e } B C { c, f } 32 / 125

  9. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← Fo ( Q ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( Q ) C → cC { p, ǫ } ← ∅ ∪ ∅ ∪ ∅ ∪ ∅ ∪ ∅ P C → f ← ∅ Q { q, ǫ } { b, e } B C { c, f } 33 / 125

  10. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 34 / 125

  11. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( B ) ← T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 35 / 125

  12. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( B ) ← Fo ( B ) ∪ ( F ( ǫ ) − { ǫ } ) T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 36 / 125

  13. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( B ) ← Fo ( B ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( T ) T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 37 / 125

  14. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( B ) ← Fo ( B ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( T ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( C ) − { ǫ } ) ∪ Fo ( A ) C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 38 / 125

  15. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( B ) ← Fo ( B ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( T ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( C ) −{ ǫ } ) ∪ Fo ( A ) ∪ ( F ( ǫ ) −{ ǫ } ) ∪ Fo ( B ) C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 39 / 125

  16. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( B ) ← Fo ( B ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( T ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( C ) −{ ǫ } ) ∪ Fo ( A ) ∪ ( F ( ǫ ) −{ ǫ } ) ∪ Fo ( B ) C → cC { p, ǫ } ← ∅ ∪ ∅ ∪ { ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 40 / 125

  17. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( B ) ← Fo ( B ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( T ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( C ) −{ ǫ } ) ∪ Fo ( A ) ∪ ( F ( ǫ ) −{ ǫ } ) ∪ Fo ( B ) C → cC { p, ǫ } ← ∅ ∪ ∅ ∪ { ǫ } ∪ { c, f } P C → f Q { q, ǫ } { b, e } B C { c, f } 41 / 125

  18. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( B ) ← Fo ( B ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( T ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( C ) − { ǫ } ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( B ) C → cC { p, ǫ } ← ∅ ∪ ∅ ∪ { ǫ } ∪ { c, f } P C → f Q { q, ǫ } { b, e } B C { c, f } 42 / 125

  19. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( B ) ← Fo ( B ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( T ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( C ) − { ǫ } ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( B ) C → cC { p, ǫ } ← ∅ ∪ ∅ ∪ { ǫ } ∪ { c, f } ∪ ∅ ∪ ∅ P C → f Q { q, ǫ } { b, e } B C { c, f } 43 / 125

  20. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ Q → ǫ { f } ∅ f C B → bB { p, q, b, e } • Fo ( B ) ← Fo ( B ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( T ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( C ) − { ǫ } ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( B ) C → cC { p, ǫ } ← ∅ ∪ ∅ ∪ { ǫ } ∪ { c, f } ∪ ∅ ∪ ∅ P C → f ← { ǫ, c, f } Q { q, ǫ } { b, e } B C { c, f } 44 / 125

  21. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 45 / 125

  22. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 46 / 125

  23. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 47 / 125

  24. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 48 / 125

  25. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( P ) ← T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 49 / 125

  26. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( P ) ← Fo ( P ) ∪ ( F ( Q ) − { ǫ } ) T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 50 / 125

  27. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( P ) ← Fo ( P ) ∪ ( F ( Q ) − { ǫ } ) ∪ Fo ( A ) T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 51 / 125

  28. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( P ) ← Fo ( P ) ∪ ( F ( Q ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( P ) C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 52 / 125

  29. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( P ) ← Fo ( P ) ∪ ( F ( Q ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( P ) C → cC { p, ǫ } ← { q } ∪ ( { q, ǫ } − { ǫ } ) P C → f Q { q, ǫ } { b, e } B C { c, f } 53 / 125

  30. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( P ) ← Fo ( P ) ∪ ( F ( Q ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( P ) C → cC { p, ǫ } ← { q }∪ ( { q, ǫ }−{ ǫ } ) ∪{ b, e }∪ ( { ǫ }− P C → f { ǫ } ) Q { q, ǫ } { b, e } B C { c, f } 54 / 125

  31. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( P ) ← Fo ( P ) ∪ ( F ( Q ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( P ) C → cC { p, ǫ } ← { q }∪ ( { q, ǫ }−{ ǫ } ) ∪{ b, e }∪ ( { ǫ }− P C → f { ǫ } ) ∪ { q } Q { q, ǫ } { b, e } B C { c, f } 55 / 125

  32. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( P ) ← Fo ( P ) ∪ ( F ( Q ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( P ) C → cC { p, ǫ } ← { q }∪ ( { q, ǫ }−{ ǫ } ) ∪{ b, e }∪ ( { ǫ }− P C → f { ǫ } ) ∪ { q } Q { q, ǫ } { b, e } ← { q } ∪ { q } ∪ { b, e } ∪ { q } B C { c, f } 56 / 125

  33. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( P ) ← Fo ( P ) ∪ ( F ( Q ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( P ) C → cC { p, ǫ } ← { q }∪ ( { q, ǫ }−{ ǫ } ) ∪{ b, e }∪ ( { ǫ }− P C → f { ǫ } ) ∪ { q } Q { q, ǫ } { b, e } ← { q } ∪ { q } ∪ { b, e } ∪ { q } B ← { q, b, e } C { c, f } 57 / 125

  34. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 58 / 125

  35. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 59 / 125

  36. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← Fo ( Q ) ∪ ( F ( ǫ ) − { ǫ } ) T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 60 / 125

  37. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← Fo ( Q ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 61 / 125

  38. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← Fo ( Q ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( Q ) C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 62 / 125

  39. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← Fo ( Q ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( Q ) C → cC { p, ǫ } ← ∅ ∪ ( { ǫ } − { ǫ } ) P C → f Q { q, ǫ } { b, e } B C { c, f } 63 / 125

  40. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← Fo ( Q ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( Q ) C → cC { p, ǫ } ← ∅∪ ( { ǫ }−{ ǫ } ) ∪{ b, e }∪ ( { ǫ }−{ ǫ } ) P C → f Q { q, ǫ } { b, e } B C { c, f } 64 / 125

  41. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← Fo ( Q ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( Q ) C → cC { p, ǫ } ← ∅ ∪ ( { ǫ } − { ǫ } ) ∪ { b, e } ∪ ( { ǫ } − P C → f { ǫ } ) ∪ ∅ Q { q, ǫ } { b, e } B C { c, f } 65 / 125

  42. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← Fo ( Q ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( Q ) C → cC { p, ǫ } ← ∅ ∪ ( { ǫ } − { ǫ } ) ∪ { b, e } ∪ ( { ǫ } − P C → f { ǫ } ) ∪ ∅ Q { q, ǫ } { b, e } ← ∅ ∪ ∅ ∪ { b, e } ∪ ∅ ∪ ∅ B C { c, f } 66 / 125

  43. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( Q ) ← Fo ( Q ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( Q ) C → cC { p, ǫ } ← ∅ ∪ ( { ǫ } − { ǫ } ) ∪ { b, e } ∪ ( { ǫ } − P C → f { ǫ } ) ∪ ∅ Q { q, ǫ } { b, e } ← ∅ ∪ ∅ ∪ { b, e } ∪ ∅ ∪ ∅ B ← { b, e } C { c, f } 67 / 125

  44. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 68 / 125

  45. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 69 / 125

  46. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( C ) ← T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 70 / 125

  47. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( C ) ← Fo ( C ) ∪ ( F ( ǫ ) − { ǫ } ) T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 71 / 125

  48. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( C ) ← Fo ( C ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 72 / 125

  49. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( C ) ← Fo ( C ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( C ) C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 73 / 125

  50. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( C ) ← Fo ( C ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( C ) C → cC { p, ǫ } ← ∅ ∪ ( { ǫ } − { ǫ } ) P C → f Q { q, ǫ } { b, e } B C { c, f } 74 / 125

  51. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( C ) ← Fo ( C ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( C ) C → cC { p, ǫ } ← ∅∪ ( { ǫ }−{ ǫ } ) ∪{ b, e }∪ ( { ǫ }−{ ǫ } ) P C → f Q { q, ǫ } { b, e } B C { c, f } 75 / 125

  52. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( C ) ← Fo ( C ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( C ) C → cC { p, ǫ } ← ∅ ∪ ( { ǫ } − { ǫ } ) ∪ { b, e } ∪ ( { ǫ } − P C → f { ǫ } ) ∪ ∅ Q { q, ǫ } { b, e } B C { c, f } 76 / 125

  53. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( C ) ← Fo ( C ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( C ) C → cC { p, ǫ } ← ∅ ∪ ( { ǫ } − { ǫ } ) ∪ { b, e } ∪ ( { ǫ } − P C → f { ǫ } ) ∪ ∅ Q { q, ǫ } { b, e } ← ∅ ∪ ∅ ∪ { b, e } ∪ ∅ ∪ ∅ B C { c, f } 77 / 125

  54. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ f C B → bB { p, q, b, e } • Fo ( C ) ← Fo ( C ) ∪ ( F ( ǫ ) − { ǫ } ) ∪ Fo ( A ) ∪ T B → e A { p, q, ǫ, b, e } ( F ( ǫ ) − { ǫ } ) ∪ Fo ( C ) C → cC { p, ǫ } ← ∅ ∪ ( { ǫ } − { ǫ } ) ∪ { b, e } ∪ ( { ǫ } − P C → f { ǫ } ) ∪ ∅ Q { q, ǫ } { b, e } ← ∅ ∪ ∅ ∪ { b, e } ∪ ∅ ∪ ∅ B ← { b, e } C { c, f } 78 / 125

  55. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ { b, e } f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 79 / 125

  56. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ { b, e } f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 80 / 125

  57. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ { b, e } f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 81 / 125

  58. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ { b, e } f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 82 / 125

  59. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ { b, e } f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 83 / 125

  60. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ { b, e } f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 84 / 125

  61. Computing FOLLOW: Example X FIRST( X ) FOLLOW( V ) V T → AB It. 1 It. 2 It. 3 It. 4 A → PQ p { p } T { ǫ } { ǫ } { ǫ } { ǫ } A → BC { q } ∅ { b, e } { b, e } { b, e } q A P → pP b { b } P ∅ { q } { q, b, e } { q, b, e } P → ǫ { e } ∅ ∅ { b, e } { b, e } e Q Q → qQ c { c } B ∅ { ǫ, c, f } { ǫ, c, f } { ǫ, c, f } Q → ǫ { f } ∅ ∅ { b, e } { b, e } f C B → bB { p, q, b, e } T B → e A { p, q, ǫ, b, e } C → cC { p, ǫ } P C → f Q { q, ǫ } { b, e } B C { c, f } 85 / 125

  62. PREDICT Definition 86 / 125

  63. PREDICT Definition • For any A → α ∈ R we define PREDICT( A → α ) as follows: − for all a ∈ Σ ∪ { ǫ } , a ∈ PREDICT( A → α ) iff either a ∈ FIRST ( α ) \{ ǫ } or α ⇒ ∗ ǫ and a ∈ FOLLOW( A ) 87 / 125

  64. 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

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

  66. Computing PREDICT: Example X FIRST( X ) V FOLLOW( V ) Rule R PREDICT( R ) { p } { ǫ } T → AB p T q { q } A { b, e } A → PQ { b } { q, b, e } b P A → BC e { e } Q { b, e } P → pP { c } { ǫ, c, f } c B P → ǫ { f } { b, e } f C Q → qQ P ( T ) ← F ( AB ) − { ǫ } T { p, q, b, e } Q → ǫ A { p, q, ǫ, b, e } B → bB P { p, ǫ } B → e { q, ǫ } Q C → cC B { b, e } C → f { c, f } C 90 / 125

  67. Computing PREDICT: Example X FIRST( X ) V FOLLOW( V ) Rule R PREDICT( R ) { p } { ǫ } T → AB p T q { q } A { b, e } A → PQ { b } { q, b, e } b P A → BC e { e } Q { b, e } P → pP { c } { ǫ, c, f } c B P → ǫ { f } { b, e } f C Q → qQ P ( T ) ← F ( AB ) − { ǫ } T { p, q, b, e } Q → ǫ ← ( F ( A ) − { ǫ } ) A { p, q, ǫ, b, e } B → bB P { p, ǫ } B → e { q, ǫ } Q C → cC B { b, e } C → f { c, f } C 91 / 125

  68. Computing PREDICT: Example X FIRST( X ) V FOLLOW( V ) Rule R PREDICT( R ) { p } { ǫ } T → AB p T q { q } A { b, e } A → PQ { b } { q, b, e } b P A → BC e { e } Q { b, e } P → pP { c } { ǫ, c, f } c B P → ǫ { f } { b, e } f C Q → qQ P ( T ) ← F ( AB ) − { ǫ } T { p, q, b, e } Q → ǫ ← ( F ( A ) − { ǫ } ) ∪ F ( B ) − { ǫ } A { p, q, ǫ, b, e } B → bB P { p, ǫ } B → e { q, ǫ } Q C → cC B { b, e } C → f { c, f } C 92 / 125

  69. Computing PREDICT: Example X FIRST( X ) V FOLLOW( V ) Rule R PREDICT( R ) { p } { ǫ } T → AB p T q { q } A { b, e } A → PQ { b } { q, b, e } b P A → BC e { e } Q { b, e } P → pP { c } { ǫ, c, f } c B P → ǫ { f } { b, e } f C Q → qQ P ( T ) ← F ( AB ) − { ǫ } T { p, q, b, e } Q → ǫ ← ( F ( A ) − { ǫ } ) ∪ F ( B ) − { ǫ } A { p, q, ǫ, b, e } B → bB ← ( { p, q, ǫ, b, e } − { ǫ } ) P { p, ǫ } B → e { q, ǫ } Q C → cC B { b, e } C → f { c, f } C 93 / 125

  70. Computing PREDICT: Example X FIRST( X ) V FOLLOW( V ) Rule R PREDICT( R ) { p } { ǫ } T → AB p T q { q } A { b, e } A → PQ { b } { q, b, e } b P A → BC e { e } Q { b, e } P → pP { c } { ǫ, c, f } c B P → ǫ { f } { b, e } f C Q → qQ P ( T ) ← F ( AB ) − { ǫ } T { p, q, b, e } Q → ǫ ← ( F ( A ) − { ǫ } ) ∪ F ( B ) − { ǫ } A { p, q, ǫ, b, e } B → bB ← ( { p, q, b, e } ) ∪{ b, e } − { ǫ } P { p, ǫ } B → e { q, ǫ } Q C → cC B { b, e } C → f { c, f } C 94 / 125

  71. Computing PREDICT: Example X FIRST( X ) V FOLLOW( V ) Rule R PREDICT( R ) { p } { ǫ } T → AB p T q { q } A { b, e } A → PQ { b } { q, b, e } b P A → BC e { e } Q { b, e } P → pP { c } { ǫ, c, f } c B P → ǫ { f } { b, e } f C Q → qQ P ( T ) ← F ( AB ) − { ǫ } T { p, q, b, e } Q → ǫ ← ( F ( A ) − { ǫ } ) ∪ F ( B ) − { ǫ } A { p, q, ǫ, b, e } B → bB ← ( { p, q, b, e } ) ∪{ b, e } − { ǫ } P { p, ǫ } ← { p, q, b, e } − { ǫ } B → e { q, ǫ } Q C → cC B { b, e } C → f { c, f } C 95 / 125

  72. Computing PREDICT: Example X FIRST( X ) V FOLLOW( V ) Rule R PREDICT( R ) { p } { ǫ } T → AB p T q { q } A { b, e } A → PQ { b } { q, b, e } b P A → BC e { e } Q { b, e } P → pP { c } { ǫ, c, f } c B P → ǫ { f } { b, e } f C Q → qQ P ( T ) ← F ( AB ) − { ǫ } T { p, q, b, e } Q → ǫ ← ( F ( A ) − { ǫ } ) ∪ F ( B ) − { ǫ } A { p, q, ǫ, b, e } B → bB ← ( { p, q, b, e } ) ∪{ b, e } − { ǫ } P { p, ǫ } ← ( { p, q, b, e } − { ǫ } ) ∪ Fo ( T ) B → e { q, ǫ } Q C → cC B { b, e } C → f { c, f } C 96 / 125

  73. Computing PREDICT: Example X FIRST( X ) V FOLLOW( V ) Rule R PREDICT( R ) { p } { ǫ } T → AB p T q { q } A { b, e } A → PQ { b } { q, b, e } b P A → BC e { e } Q { b, e } P → pP { c } { ǫ, c, f } c B P → ǫ { f } { b, e } f C Q → qQ P ( T ) ← F ( AB ) − { ǫ } T { p, q, b, e } Q → ǫ ← ( F ( A ) − { ǫ } ) ∪ F ( B ) − { ǫ } A { p, q, ǫ, b, e } B → bB ← ( { p, q, b, e } ) ∪{ b, e } − { ǫ } P { p, ǫ } ← ( { p, q, b, e } − { ǫ } ) ∪ Fo ( T ) B → e ← { p, q, b, e } { q, ǫ } Q C → cC B { b, e } C → f { c, f } C 97 / 125

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

  75. Computing PREDICT: Example X FIRST( X ) V FOLLOW( V ) Rule R PREDICT( R ) { p } { ǫ } T → AB { p, q, b, e } p T q { q } A { b, e } A → PQ { b } { q, b, e } b P A → BC e { e } Q { b, e } P → pP { c } { ǫ, c, f } c B P → ǫ { f } { b, e } f C Q → qQ P ( A ) ← F ( PQ ) − { ǫ } T { p, q, b, e } Q → ǫ A { p, q, ǫ, b, e } B → bB P { p, ǫ } B → e { q, ǫ } Q C → cC B { b, e } C → f { c, f } C 99 / 125

  76. Computing PREDICT: Example X FIRST( X ) V FOLLOW( V ) Rule R PREDICT( R ) { p } { ǫ } T → AB { p, q, b, e } p T q { q } A { b, e } A → PQ { b } { q, b, e } b P A → BC e { e } Q { b, e } P → pP { c } { ǫ, c, f } c B P → ǫ { f } { b, e } f C Q → qQ P ( A ) ← F ( PQ ) − { ǫ } T { p, q, b, e } Q → ǫ ← ( F ( P ) − { ǫ } ) A { p, q, ǫ, b, e } B → bB P { p, ǫ } B → e { q, ǫ } Q C → cC B { b, e } C → f { c, f } C 100 / 125

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend