Presentation is loading. Please wait.

Presentation is loading. Please wait.

First Set First (  =A  ) = First(A), if ∉ First(A) First(A) – { } ∪ First(  ), if ∈ First(A) We will use some examples for this operation… Red : A Blue.

Similar presentations


Presentation on theme: "First Set First (  =A  ) = First(A), if ∉ First(A) First(A) – { } ∪ First(  ), if ∈ First(A) We will use some examples for this operation… Red : A Blue."— Presentation transcript:

1 First Set First (  =A  ) = First(A), if ∉ First(A) First(A) – { } ∪ First(  ), if ∈ First(A) We will use some examples for this operation… Red : A Blue : 

2 First Set (2) E  Prefix(E) E  V Tail Prefix  F Prefix  Tail  Tail  G0G0 Red : A Blue : 

3 First Set (2) First ( E  Prefix (E) )=First( Prefix (E) ) ? = { Waiting operation } – We don’t know First(Prefix) at this moment. – So we keep the operation of First(Prefix(E)) until we know First(Prefix). First ( E  V Tail )= First( V ) = { V } First ( Prefix  F )= First( F ) = { F } First ( Prefix  )= First( ) - { } ∪ First( ) = { } First ( Tail  + E )= First( + ) = { + } First ( Tail  )= First( ) - { } ∪ First( ) = { } E  Prefix(E) E  V Tail Prefix  F Prefix  Tail  Tail  G0G0 Red : A Blue :  Step 1:

4 First Set (2) First ( E  Prefix (E) )=First( Prefix (E) ) ? = { Waiting operation } – We don’t know First(Prefix) at this moment. – So we keep the operation of First(Prefix(E)) until we know First(Prefix). First ( E  V Tail )= { V } First ( Prefix  F )= { F } First ( Prefix  )= { } First ( Tail  + E )= { + } First ( Tail  )= { } E  Prefix(E) E  V Tail Prefix  F Prefix  Tail  Tail  G0G0 Red : A Blue :  StepFirst Set EPrefixTail()VF+ Step 1 First( Prefix(E) ) ∪ {V} {F, }{+, } Step 1:

5 First Set (2) First ( E  Prefix (E) )=First( Prefix (E) ) ? = { Waiting operation } – In this step, we know First( Prefix ). – So we replace the First( Prefix ) with { F, }. First ( E  V Tail )= { V } First ( Prefix  F )= { F } First ( Prefix  )= { } First ( Tail  + E )= { + } First ( Tail  )= { } E  Prefix(E) E  V Tail Prefix  F Prefix  Tail  Tail  G0G0 Red : A Blue :  { F, } Step 2: StepFirst Set EPrefixTail()VF+ Step 1 First( Prefix(E) ) ∪ {V} {F, }{+, }

6 First Set (2) First ( E  Prefix (E) )=First( Prefix (E) ) = {F, } = {F, } - { } ∪ First ( (E) ) = {F, (} First ( E  V Tail )= { V } First ( Prefix  F )= { F } First ( Prefix  )= { } First ( Tail  + E )= { + } First ( Tail  )= { } E  Prefix(E) E  V Tail Prefix  F Prefix  Tail  Tail  G0G0 Red : A Blue :  Step 2: StepFirst Set EPrefixTail()VF+ Step 1 First( Prefix(E) ) ∪ {V} {F, }{+, }

7 First Set (2) First ( E  Prefix (E) )= {F, (} First ( E  V Tail )= { V } First ( Prefix  F )= { F } First ( Prefix  )= { } First ( Tail  + E )= { + } First ( Tail  )= { } E  Prefix(E) E  V Tail Prefix  F Prefix  Tail  Tail  G0G0 Red : A Blue :  StepFirst Set EPrefixTail()VF+ Step 1 First( Prefix(E) ) ∪ {V} {F, }{+, } Step 2 {F, (} ∪ {V} ={F, (, V} {F, }{+, } Step 2:

8 First Set (2) First ( E  Prefix (E) )= { F, ( } First ( E  V Tail )= { V } First ( Prefix  F )= { F } First ( Prefix  )= { } First ( Tail  + E )= { + } First ( Tail  )= { } E  Prefix(E) E  V Tail Prefix  F Prefix  Tail  Tail  G0G0 StepFirst Set EPrefixTail()VF+ Step 1 First( Prefix(E) ) ∪ {V} {F, }{+, } Step 2 {F, (} ∪ {V} ={F, (, V} {F, }{+, } Step 3 {F, (, V} {F, }{+, } {(}{)}{V}{F}{+} If no more change… The first set of a terminal symbol is itself Red : A Blue :  Step 3:

9 Another Example….

10 First Set (2) S  aSe S  B B  bBe B  C C  cCe C  d G0G0 Red : A Blue : 

11 S  aSe S  B B  bBe B  C C  cCe C  d G0G0 First Set (2) First ( S  a Se )= First( a ) ={ a } First ( S  B )= First( B ) First ( B  bBe )= First( b )={ b } First ( B  C )= First( C ) First ( C  c Ce )= First( c ) ={ c } First ( C  d )= First( d )={ d } Red : A Blue :  Step 1:

12 S  aSe S  B B  bBe B  C C  cCe C  d G0G0 First Set (2) First ( S  a Se )= { a } First ( S  B )= First( B ) First ( B  bBe )= { b } First ( B  C )= First( C ) First ( C  c Ce )= { c } First ( C  d )= { d } Red : A Blue :  StepFirst Set SBCabcd Step 1 {a} ∪ First( B ) {b} ∪ First( C ) {c, d} Step 1:

13 S  aSe S  B B  bBe B  C C  cCe C  d G0G0 First Set (2) First ( S  a Se )= { a } First ( S  B )= First( B ) = { b } ∪ First( C ) First ( B  bBe )= { b } First ( B  C )= First( C ) First ( C  c Ce )= { c } First ( C  d )= { d } Red : A Blue :  StepFirst Set SBCabcd Step 1 {a} ∪ First( B ) {b} ∪ First( C ) {c, d} Step 2:

14 S  aSe S  B B  bBe B  C C  cCe C  d G0G0 First Set (2) First ( S  a Se )= { a } First ( S  B )= { b } ∪ First( C ) First ( B  bBe )= { b } First ( B  C )= First( C ) First ( C  c Ce )= { c } First ( C  d )= { d } Red : A Blue :  Step 2: StepFirst Set SBCabcd Step 1 {a} ∪ First( B ) {b} ∪ First( C ) {c, d} Step 2 {a} ∪ {b} ∪ First( C )

15 S  aSe S  B B  bBe B  C C  cCe C  d G0G0 First Set (2) First ( S  a Se )= { a } First ( S  B )= { b } ∪ First( C ) First ( B  bBe )= { b } First ( B  C )= First( C ) = { c, d } First ( C  c Ce )= { c } First ( C  d )= { d } Red : A Blue :  Step 2: StepFirst Set SBCabcd Step 1 {a} ∪ First( B ) {b} ∪ First( C ) {c, d} Step 2 {a} ∪ {b} ∪ First( C )

16 S  aSe S  B B  bBe B  C C  cCe C  d G0G0 First Set (2) First ( S  a Se )= { a } First ( S  B )= { b } ∪ First( C ) First ( B  bBe )= { b } First ( B  C )= { c, d } First ( C  c Ce )= { c } First ( C  d )= { d } Red : A Blue :  StepFirst Set SBCabcd Step 1 {a} ∪ First( B ) {b} ∪ First( C ) {c, d} Step 2 {a} ∪ {b} ∪ First( C ) {b} ∪ {c, d} = {b,c,d} {c, d} Step 2:

17 S  aSe S  B B  bBe B  C C  cCe C  d G0G0 First Set (2) First ( S  a Se )= { a } First ( S  B )= { b } ∪ First( C ) = { b } ∪ { c, d } First ( B  bBe )= { b } First ( B  C )= { c, d } First ( C  c Ce )= { c } First ( C  d )= { d } Red : A Blue :  Step 3: StepFirst Set SBCabcd Step 1 {a} ∪ First( B ) {b} ∪ First( C ) {c, d} Step 2 {a} ∪ {b} ∪ First( C ) {b} ∪ {c, d} = {b,c,d} {c, d}

18 S  aSe S  B B  bBe B  C C  cCe C  d G0G0 First Set (2) First ( S  a Se )= { a } First ( S  B )= { b, c, d } First ( B  bBe )= { b } First ( B  C )= { c, d } First ( C  c Ce )= { c } First ( C  d )= { d } Red : A Blue :  Step 3: StepFirst Set SBCabcd Step 1 {a} ∪ First( B ) {b} ∪ First( C ) {c, d} Step 2 {a} ∪ {b} ∪ First( C ) {b} ∪ {c, d} = {b,c,d} {c, d} Step 3 {a} ∪ {b} ∪ {c, d} = {a,b,c,d} {b} ∪ {c, d} = {b,c,d} {c, d}

19 S  aSe S  B B  bBe B  C C  cCe C  d G0G0 First Set (2) First ( S  a Se )= { a } First ( S  B )= { b, c, d } First ( B  bBe )= { b } First ( B  C )= { c, d } First ( C  c Ce )= { c } First ( C  d )= { d } Red : A Blue :  Step 3: StepFirst Set SBCabcd Step 1 {a} ∪ First( B ) {b} ∪ First( C ) {c, d} Step 2 {a} ∪ {b} ∪ First( C ) {b} ∪ {c, d} = {b,c,d} {c, d} Step 3 {a} ∪ {b} ∪ {c, d} = {a,b,c,d} {b} ∪ {c, d} = {b,c,d} {c, d}{a}{b}{c}{d} If no more change… The first set of a terminal symbol is itself

20 Another Example….

21 First Set (2) S  ABc A  a A  B  b B  G0G0 Red : A Blue : 

22 First Set (2) S  ABc A  a A  B  b B  G0G0 Red : A Blue :  First ( S  A Bc )= First( ABc ) First ( A  a )= First( a ) First ( A  )= First( ) ∪ First( ) First ( B  b )= First( b ) First ( B  )= First( ) ∪ First( ) Step 1:

23 First Set (2) S  ABc A  a A  B  b B  G0G0 Red : A Blue :  First ( S  A Bc )= First( ABc ) First ( A  a )= { a } First ( A  )= { } First ( B  b )= { b } First ( B  )= { } Step 1: StepFirst Set SABabc Step 1 First( ABc ) {a, }{b, }

24 First Set (2) S  ABc A  a A  B  b B  G0G0 Red : A Blue :  First ( S  ABc )= First( ABc ) = { a, } = { a, } - { } ∪ First( Bc ) = { a } ∪ First( Bc ) First ( A  a )= { a } First ( A  )= { } First ( B  b )= { b } First ( B  )= { } Step 2: StepFirst Set SABabc Step 1 First( ABc ) {a, }{b, } Step 2 {a} ∪ First( Bc ) {a, }{b, }

25 First Set (2) S  ABc A  a A  B  b B  G0G0 Red : A Blue :  First ( S  ABc )= { a } ∪ First( Bc ) = { a } ∪ { b, } = { a } ∪ { b, } - { } ∪ First( c ) = { a } ∪ { b,c } First ( A  a )= { a } First ( A  )= { } First ( B  b )= { b } First ( B  )= { } Step 3: StepFirst Set SABabc Step 1 First( ABc ) {a, }{b, } Step 2 {a} ∪ First( Bc ) {a, }{b, } Step 3 {a} ∪ {b, c}= {a,b,c} {a, }{b, }

26 First Set (2) S  ABc A  a A  B  b B  G0G0 Red : A Blue :  First ( S  A Bc )= { a,b,c } First ( A  a )= { a } First ( A  )= { } First ( B  b )= { b } First ( B  )= { } Step 3: StepFirst Set SABabc Step 1 First( ABc ) {a, }{b, } Step 2 {a} ∪ First( Bc ) {a, }{b, } Step 3 {a} ∪ {b, c}= {a,b,c} {a, }{b, } {a}{b}{c} If no more change… The first set of a terminal symbol is itself

27 Follow Set Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  ) We will use some examples for this operation… E…AE…A

28 E  …A  Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  ) Step 0: E  Prefix(E) E  V Tail Prefix  F Prefix  Tail  Tail  G0G0 StepFollow Set EPrefixTail Step 0 { } 

29 E  …A  Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  ) Step 1: From “E  Prefix(E) “, We can get… Follow (Prefix) = Follow (Prefix) ∪ First(() = Follow (Prefix) ∪ {(} and Follow (E) = Follow (E) ∪ First()) = Follow (E) ∪ {)} From “E  VTail “, We can get… Follow (Tail) = Follow (Tail) ∪ First( ) = Follow (Tail) ∪ { } = Follow (Tail) ∪ Follow (E) From “Tail  +E “, We can get… Follow (E) = Follow (E) ∪ First( ) = Follow (E) ∪ { } = Follow (E) ∪ Follow (Tail) E  Prefix(E) E  V Tail Prefix  F Prefix  Tail  Tail  G0G0 StepFollow Set EPrefixTail Step 0  Step 1 Follow(E) ∪ {)} ∪ Follow (Tail) = {, )} Follow (Prefix) ∪ {(} ={(} Follow (Tail) ∪ Follow (E) = { }

30 E  …A  Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  ) E  Prefix(E) E  V Tail Prefix  F Prefix  Tail  Tail  G0G0 StepFollow Set EPrefixTail Step 0  Step 1 Follow(E) ∪ {)} ∪ Follow (Tail) = {, )} Follow (Prefix) ∪ {(} ={(} Follow (Tail) ∪ Follow (E) = { } Step 2 Follow(E) ∪ {)} ∪ Follow (Tail) = {, )} Follow (Prefix) ∪ {(} ={(} Follow (Tail) ∪ Follow (E) = {, }} Step 2: From “E  Prefix(E) “, We can get… Follow (Prefix) = Follow (Prefix) ∪ First(() = Follow (Prefix) ∪ {(} and Follow (E) = Follow (E) ∪ First()) = Follow (E) ∪ {)} From “E  VTail “, We can get… Follow (Tail) = Follow (Tail) ∪ First( ) = Follow (Tail) ∪ { } = Follow (Tail) ∪ Follow (E) From “Tail  +E “, We can get… Follow (E) = Follow (E) ∪ First( ) = Follow (E) ∪ { } = Follow (E) ∪ Follow (Tail)

31 E  …A  Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  ) Step 3: E  Prefix(E) E  V Tail Prefix  F Prefix  Tail  Tail  G0G0 StepFollow Set EPrefixTail Step 0  Step 1 Follow(E) ∪ {)} ∪ Follow (Tail) = {, )} Follow (Prefix) ∪ {(} ={(} Follow (Tail) ∪ Follow (E) = { } Step 2 Follow(E) ∪ {)} ∪ Follow (Tail) = {, )} Follow (Prefix) ∪ {(} ={(} Follow (Tail) ∪ Follow (E) = {, }} Step 3 Follow(E) ∪ {)} ∪ Follow (Tail) = {, )} Follow (Prefix) ∪ {(} ={(} Follow (Tail) ∪ Follow (E) = {, }}

32 Another Example….

33 S  aSe S  B B  bBe B  C C  cCe C  d G0G0 E  …A  Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  )

34 Step 0: S  aSe S  B B  bBe B  C C  cCe C  d G0G0 E  …A  Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  ) StepFollow Set SBC Step 0 { } 

35 Step 1: S  aSe S  B B  bBe B  C C  cCe C  d G0G0 S  aSe  Follow (S) = Follow (S) ∪ {e} S  B  Follow (B ) = Follow (B) ∪ Follow (S) B  bBe  Follow (B) = Follow (B) ∪ {e} B  C  Follow (C)  = Follow (C) ∪ Follow (B) C  cCe  Follow (C) = Follow (C) ∪ {e} C  d => No Non-Terminal E  …A  Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  ) StepFollow Set SBC Step 0  Step 1 Follow(S) ∪ {e} = {, e} Follow (B) ∪ Follow(S) ∪ {e} ={, e} Follow (C) ∪ Follow(B) ∪ {e} = {e}

36 Step 2: S  aSe S  B B  bBe B  C C  cCe C  d G0G0 S  aSe  Follow (S) = Follow (S) ∪ {e} S  B  Follow (B ) = Follow (B) ∪ Follow (S) B  bBe  Follow (B) = Follow (B) ∪ {e} B  C  Follow (C)  = Follow (C) ∪ Follow (B) C  cCe  Follow (C) = Follow (C) ∪ {e} C  d => No Non-Terminal E  …A  Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  ) StepFollow Set SBC Step 0  Step 1 Follow(S) ∪ {e} = {, e} Follow (B) ∪ Follow(S) ∪ {e} ={, e} Follow (C) ∪ Follow(B) ∪ {e} = {e} Step 2 Follow(S) ∪ {e} = {, e} Follow (B) ∪ Follow(S) ∪ {e} ={, e} Follow (C) ∪ Follow(B) ∪ {e} ={, e}

37 Step 3: S  aSe S  B B  bBe B  C C  cCe C  d G0G0 E  …A  Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  ) StepFollow Set SBC Step 0  Step 1 Follow(S) ∪ {e} = {, e} Follow (B) ∪ Follow(S) ∪ {e} ={, e} Follow (C) ∪ Follow(B) ∪ {e} = {e} Step 2 Follow(S) ∪ {e} = {, e} Follow (B) ∪ Follow(S) ∪ {e} ={, e} Follow (C) ∪ Follow(B) ∪ {e} ={, e} Step 3 Follow(S) ∪ {e} = {, e} Follow (B) ∪ Follow(S) ∪ {e} ={, e} Follow (C) ∪ Follow(B) ∪ {e} ={, e}

38 Another Example….

39 S  ABc A  a A  B  b B  G0G0 E  …A  Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  )

40 Step 0: S  ABc A  a A  B  b B  G0G0 E  …A  Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  ) StepFollow Set SAB Step 0 { } 

41 Step 1: S  ABc  Follow (A) = Follow (A) ∪ First (Bc) = Follow (A) ∪ {b,c} S  ABc  Follow (B) = Follow (B) ∪ {c} A  a  No Non-Terminal A  => No Non-Terminal B  b => No Non-Terminal B  => No Non-Terminal S  ABc A  a A  B  b B  G0G0 E  …A  Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  ) StepFollow Set SAB Step 0 { }  Step 1 { } Follow (A) ∪ {b,c} = {b,c}Follow (B) ∪ {c} = {c}

42 Step 2: S  ABc  Follow (A) = Follow (A) ∪ First (Bc) = Follow (A) ∪ {b,c} S  ABc  Follow (B) = Follow (B) ∪ {c} A  a  No Non-Terminal A  => No Non-Terminal B  b => No Non-Terminal B  => No Non-Terminal S  ABc A  a A  B  b B  G0G0 E  …A  Follow (A) = Follow(A) ∪ First(  ), if ∉ First(  ) Follow(A) ∪ First(  ) – { } ∪ Follow(E), if ∈ First(  ) StepFollow Set SAB Step 0 { }  Step 1 { } Follow (A) ∪ {b,c} = {b,c}Follow (B) ∪ {c} = {c} Step 2 { } Follow (A) ∪ {b,c} = {b,c}Follow (B) ∪ {c} = {c}


Download ppt "First Set First (  =A  ) = First(A), if ∉ First(A) First(A) – { } ∪ First(  ), if ∈ First(A) We will use some examples for this operation… Red : A Blue."

Similar presentations


Ads by Google