Download presentation
Presentation is loading. Please wait.
Published byJoy joyce Asp Modified over 10 years ago
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…AE…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}
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.