★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
Compiler first set_followset_brief
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 :
3. First Set (2)
• First (EPrefix(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 (EV Tail) = First(V) = {V}
• First (PrefixF) = First(F) = {F}
• First (Prefix )= First() - {} ∪First() = {}
• First (Tail+E) = First(+) = {+}
• First (Tail ) = First() - {} ∪First() = {}
EPrefix(E)
EV Tail
PrefixF
Prefix
Tail+E
Tail
G0
Red : A Blue :
Step 1:
4. First Set (2)
• First (EPrefix(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 (EV Tail) = {V}
• First (PrefixF) = {F}
• First (Prefix )= {}
• First (Tail+E) = {+}
• First (Tail ) = {}
EPrefix(E)
EV Tail
PrefixF
Prefix
Tail+E
Tail
G0
Red : A Blue :
Step First Set
E Prefix Tail ( ) V F +
Step 1 First(Prefix(E))∪{V} {F, } {+, }
Step 1:
5. First Set (2)
• First (EPrefix(E))=First(Prefix(E)) ? = {Waiting operation}
– In this step, we know First(Prefix).
– So we replace the First(Prefix) with {F, }.
• First (EV Tail) = {V}
• First (PrefixF) = {F}
• First (Prefix )= {}
• First (Tail+E) = {+}
• First (Tail ) = {}
EPrefix(E)
EV Tail
PrefixF
Prefix
Tail+E
Tail
G0
Red : A Blue :
{F, }
Step 2:
Step First Set
E Prefix Tail ( ) V F +
Step 1 First(Prefix(E))∪{V} {F, } {+, }
6. First Set (2)
• First (EPrefix(E))=First(Prefix(E)) = {F, }
= {F, } - {} ∪ First((E)) = {F, (}
• First (EV Tail) = {V}
• First (PrefixF) = {F}
• First (Prefix )= {}
• First (Tail+E) = {+}
• First (Tail ) = {}
EPrefix(E)
EV Tail
PrefixF
Prefix
Tail+E
Tail
G0
Red : A Blue :
Step 2:
Step First Set
E Prefix Tail ( ) V F +
Step 1 First(Prefix(E))∪{V} {F, } {+, }
7. First Set (2)
• First (EPrefix(E))= {F, (}
• First (EV Tail) = {V}
• First (PrefixF) = {F}
• First (Prefix )= {}
• First (Tail+E) = {+}
• First (Tail ) = {}
EPrefix(E)
EV Tail
PrefixF
Prefix
Tail+E
Tail
G0
Red : A Blue :
Step First Set
E Prefix Tail ( ) V F +
Step 1 First(Prefix(E))∪{V} {F, } {+, }
Step 2 {F, (} ∪ {V} ={F, (, V} {F, } {+, }
Step 2:
8. First Set (2)
• First (EPrefix(E))= {F, (}
• First (EV Tail) = {V}
• First (PrefixF) = {F}
• First (Prefix )= {}
• First (Tail+E) = {+}
• First (Tail ) = {}
EPrefix(E)
EV Tail
PrefixF
Prefix
Tail+E
Tail
G0
Step First Set
E Prefix Tail ( ) V F +
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:
10. First Set (2)
S aSe
S B
B bBe
B C
C cCe
C d
G0
Red : A Blue :
11. S aSe
S B
B bBe
B C
C cCe
C d
G0
First Set (2)
• First (SaSe) = First(a) ={a}
• First (SB) = First(B)
• First (B bBe) = First(b)={b}
• First (B C) = First(C)
• First (C cCe) = 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
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = First(B)
• First (B bBe) = {b}
• First (B C) = First(C)
• First (C cCe) = {c}
• First (C d) = {d}
Red : A Blue :
Step First Set
S B C a b c d
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
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = First(B) = {b}∪First(C)
• First (B bBe) = {b}
• First (B C) = First(C)
• First (C cCe) = {c}
• First (C d) = {d}
Red : A Blue :
Step First Set
S B C a b c d
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
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = {b}∪First(C)
• First (B bBe) = {b}
• First (B C) = First(C)
• First (C cCe) = {c}
• First (C d) = {d}
Red : A Blue :
Step 2:
Step First Set
S B C a b c d
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
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = {b}∪First(C)
• First (B bBe) = {b}
• First (B C) = First(C) = {c, d}
• First (C cCe) = {c}
• First (C d) = {d}
Red : A Blue :
Step 2:
Step First Set
S B C a b c d
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
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = {b}∪First(C)
• First (B bBe) = {b}
• First (B C) = {c, d}
• First (C cCe) = {c}
• First (C d) = {d}
Red : A Blue :
Step First Set
S B C a b c d
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
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = {b}∪First(C) = {b}∪ {c, d}
• First (B bBe) = {b}
• First (B C) = {c, d}
• First (C cCe) = {c}
• First (C d) = {d}
Red : A Blue :
Step 3:
Step First Set
S B C a b c d
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
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = {b, c, d}
• First (B bBe) = {b}
• First (B C) = {c, d}
• First (C cCe) = {c}
• First (C d) = {d}
Red : A Blue :
Step 3:
Step First Set
S B C a b c d
Step
1
{a}∪First(B) {b}∪First(C) {c, d}
Step
2
{a}∪ {b}∪First(C) {b}∪{c, d} = {b,c,d} {c, d}
19. S aSe
S B
B bBe
B C
C cCe
C d
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = {b, c, d}
• First (B bBe) = {b}
• First (B C) = {c, d}
• First (C cCe) = {c}
• First (C d) = {d}
Red : A Blue :
Step 3:
Step First Set
S B C a b c d
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
21. First Set (2)
S ABc
A a
A
B b
B
G0
Red : A Blue :
22. First Set (2)
S ABc
A a
A
B b
B
G0
Red : A Blue :
• First (SABc) = First(ABc)
• First (Aa) = 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
G0
Red : A Blue :
• First (SABc) = First(ABc)
• First (Aa) = {a}
• First (A ) = {}
• First (B b) = {b}
• First (B ) = {}
Step 1:
Step First Set
S A B a b c
Step 1 First(ABc) {a, } {b, }
24. First Set (2)
S ABc
A a
A
B b
B
G0
Red : A Blue :
• First (SABc) = First(ABc) = {a, }
= {a, } - {} ∪ First(Bc)
= {a} ∪ First(Bc)
• First (Aa) = {a}
• First (A ) = {}
• First (B b) = {b}
• First (B ) = {}
Step 2:
Step First Set
S A B a b c
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
G0
Red : A Blue :
• First (SABc) = {a} ∪ First(Bc)
= {a} ∪{b, }
= {a} ∪{b, } - {} ∪First(c)
= {a} ∪{b,c}
• First (Aa) = {a}
• First (A ) = {}
• First (B b) = {b}
• First (B ) = {}
Step 3:
Step First Set
S A B a b c
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
G0
Red : A Blue :
• First (SABc) = {a,b,c}
• First (Aa) = {a}
• First (A ) = {}
• First (B b) = {b}
• First (B ) = {}
Step 3:
Step First Set
S A B a b c
Step
1
First(ABc) {a, } {b, }
Step
2
{a} ∪ First(Bc) {a, } {b, }
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
33. S aSe
S B
B bBe
B C
C cCe
C d
G0
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
G0
E…A
Follow (A) = Follow(A) ∪ First() , if ∉ First()
Follow(A) ∪First() – {} ∪Follow(E) , if ∈ First()
Step Follow Set
S B C
Step 0 {}
35. Step 1:
S aSe
S B
B bBe
B C
C cCe
C d
G0
• 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()
Step Follow Set
S B C
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
G0
• 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()
Step Follow Set
S B C
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
G0
E…A
Follow (A) = Follow(A) ∪ First() , if ∉ First()
Follow(A) ∪First() – {} ∪Follow(E) , if ∈ First()
Step Follow Set
S B C
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}
39. S ABc
A a
A
B b
B
G0
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
G0
E…A
Follow (A) = Follow(A) ∪ First() , if ∉ First()
Follow(A) ∪First() – {} ∪Follow(E) , if ∈ First()
Step Follow Set
S A B
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
G0
E…A
Follow (A) = Follow(A) ∪ First() , if ∉ First()
Follow(A) ∪First() – {} ∪Follow(E) , if ∈ First()
Step Follow Set
S A B
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
G0
E…A
Follow (A) = Follow(A) ∪ First() , if ∉ First()
Follow(A) ∪First() – {} ∪Follow(E) , if ∈ First()
Step Follow Set
S A B
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}