SlideShare a Scribd company logo
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 : 
First Set (2)
EPrefix(E)
EV Tail
PrefixF
Prefix
Tail+E
Tail 
G0
Red : A Blue : 
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+E
Tail 
G0
Red : A Blue : 
Step 1:
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+E
Tail 
G0
Red : A Blue : 
Step First Set
E Prefix Tail ( ) V F +
Step 1 First(Prefix(E))∪{V} {F, } {+, }
Step 1:
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+E
Tail 
G0
Red : A Blue : 
{F, }
Step 2:
Step First Set
E Prefix Tail ( ) V F +
Step 1 First(Prefix(E))∪{V} {F, } {+, }
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+E
Tail 
G0
Red : A Blue : 
Step 2:
Step First Set
E Prefix Tail ( ) V F +
Step 1 First(Prefix(E))∪{V} {F, } {+, }
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+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:
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+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:
Another Example….
First Set (2)
S  aSe
S  B
B  bBe
B  C
C  cCe
C  d
G0
Red : A Blue : 
S  aSe
S  B
B  bBe
B  C
C  cCe
C  d
G0
First Set (2)
• First (SaSe) = First(a) ={a}
• First (SB) = 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:
S  aSe
S  B
B  bBe
B  C
C  cCe
C  d
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = 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:
S  aSe
S  B
B  bBe
B  C
C  cCe
C  d
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = 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:
S  aSe
S  B
B  bBe
B  C
C  cCe
C  d
G0
First Set (2)
• First (SaSe) = {a}
• First (S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 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)
S  aSe
S  B
B  bBe
B  C
C  cCe
C  d
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = {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)
S  aSe
S  B
B  bBe
B  C
C  cCe
C  d
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = {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:
S  aSe
S  B
B  bBe
B  C
C  cCe
C  d
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = {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}
S  aSe
S  B
B  bBe
B  C
C  cCe
C  d
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = {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}
S  aSe
S  B
B  bBe
B  C
C  cCe
C  d
G0
First Set (2)
• First (SaSe) = {a}
• First (SB) = {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
Another Example….
First Set (2)
S  ABc
A  a
A  
B  b
B  
G0
Red : A Blue : 
First Set (2)
S  ABc
A  a
A  
B  b
B  
G0
Red : A Blue : 
• First (SABc) = First(ABc)
• First (Aa) = First(a)
• First (A  ) = First()∪First()
• First (B  b) = First(b)
• First (B  ) = First()∪First()
Step 1:
First Set (2)
S  ABc
A  a
A  
B  b
B  
G0
Red : A Blue : 
• First (SABc) = First(ABc)
• First (Aa) = {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, }
First Set (2)
S  ABc
A  a
A  
B  b
B  
G0
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:
Step First Set
S A B a b c
Step 1 First(ABc) {a, } {b, }
Step 2 {a} ∪ First(Bc) {a, } {b, }
First Set (2)
S  ABc
A  a
A  
B  b
B  
G0
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:
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, }
First Set (2)
S  ABc
A  a
A  
B  b
B  
G0
Red : A Blue : 
• First (SABc) = {a,b,c}
• First (Aa) = {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
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
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+E
Tail 
G0
Step Follow Set
E Prefix Tail
Step 0 {}  
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+E
Tail 
G0
Step Follow Set
E Prefix Tail
Step 0   
Step 1 Follow(E) ∪ {)} ∪ Follow (Tail)
= {, )}
Follow (Prefix) ∪{(}
={(}
Follow (Tail) ∪ Follow (E)
= {}
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+E
Tail 
G0
Step Follow Set
E Prefix Tail
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)
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+E
Tail 
G0
Step Follow Set
E Prefix Tail
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)
= {, }}
Another Example….
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 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 {}  
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}
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}
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}
Another Example….
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 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 {}  
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}
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}

More Related Content

PPTX
All pair shortest path by Sania Nisar
PPT
Minimizing boolean
KEY
Calculus II - 1
PDF
Sop and pos
PPTX
9. sum and double half-angle formulas-x
PPTX
13. sum and double half-angle formulas-x
PDF
Lesson 8: Curves, Arc Length, Acceleration
All pair shortest path by Sania Nisar
Minimizing boolean
Calculus II - 1
Sop and pos
9. sum and double half-angle formulas-x
13. sum and double half-angle formulas-x
Lesson 8: Curves, Arc Length, Acceleration

Similar to Compiler first set_followset_brief (10)

PPTX
set theory --.pptx
PDF
04 - Sets
PPTX
Chapter 4.pptx compiler design lecture note
PDF
Homework 2 sol
PPTX
Set data structure 2
PDF
SSA slides
PDF
Lect1 No 873503264
PDF
Generarlized operations on fuzzy graphs
set theory --.pptx
04 - Sets
Chapter 4.pptx compiler design lecture note
Homework 2 sol
Set data structure 2
SSA slides
Lect1 No 873503264
Generarlized operations on fuzzy graphs
Ad

Recently uploaded (20)

PDF
Exploratory_Data_Analysis_Fundamentals.pdf
PPTX
Management Information system : MIS-e-Business Systems.pptx
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PPT
Occupational Health and Safety Management System
PPTX
Fundamentals of Mechanical Engineering.pptx
PDF
SMART SIGNAL TIMING FOR URBAN INTERSECTIONS USING REAL-TIME VEHICLE DETECTI...
PDF
BIO-INSPIRED ARCHITECTURE FOR PARSIMONIOUS CONVERSATIONAL INTELLIGENCE : THE ...
PPTX
Module 8- Technological and Communication Skills.pptx
PPT
Total quality management ppt for engineering students
PPTX
Fundamentals of safety and accident prevention -final (1).pptx
PDF
737-MAX_SRG.pdf student reference guides
PDF
UNIT no 1 INTRODUCTION TO DBMS NOTES.pdf
PDF
III.4.1.2_The_Space_Environment.p pdffdf
PPTX
communication and presentation skills 01
PDF
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
PDF
Categorization of Factors Affecting Classification Algorithms Selection
PDF
Accra-Kumasi Expressway - Prefeasibility Report Volume 1 of 7.11.2018.pdf
PDF
Artificial Superintelligence (ASI) Alliance Vision Paper.pdf
PPT
INTRODUCTION -Data Warehousing and Mining-M.Tech- VTU.ppt
PDF
Human-AI Collaboration: Balancing Agentic AI and Autonomy in Hybrid Systems
Exploratory_Data_Analysis_Fundamentals.pdf
Management Information system : MIS-e-Business Systems.pptx
Automation-in-Manufacturing-Chapter-Introduction.pdf
Occupational Health and Safety Management System
Fundamentals of Mechanical Engineering.pptx
SMART SIGNAL TIMING FOR URBAN INTERSECTIONS USING REAL-TIME VEHICLE DETECTI...
BIO-INSPIRED ARCHITECTURE FOR PARSIMONIOUS CONVERSATIONAL INTELLIGENCE : THE ...
Module 8- Technological and Communication Skills.pptx
Total quality management ppt for engineering students
Fundamentals of safety and accident prevention -final (1).pptx
737-MAX_SRG.pdf student reference guides
UNIT no 1 INTRODUCTION TO DBMS NOTES.pdf
III.4.1.2_The_Space_Environment.p pdffdf
communication and presentation skills 01
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
Categorization of Factors Affecting Classification Algorithms Selection
Accra-Kumasi Expressway - Prefeasibility Report Volume 1 of 7.11.2018.pdf
Artificial Superintelligence (ASI) Alliance Vision Paper.pdf
INTRODUCTION -Data Warehousing and Mining-M.Tech- VTU.ppt
Human-AI Collaboration: Balancing Agentic AI and Autonomy in Hybrid Systems
Ad

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 : 
  • 2. First Set (2) EPrefix(E) EV Tail PrefixF Prefix Tail+E Tail  G0 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+E Tail  G0 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+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 (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+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 (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+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 (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+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 (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+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 (SaSe) = First(a) ={a} • First (SB) = 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 (SaSe) = {a} • First (SB) = 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 (SaSe) = {a} • First (SB) = 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 (SaSe) = {a} • First (S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 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 (SaSe) = {a} • First (SB) = {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 (SaSe) = {a} • First (SB) = {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 (SaSe) = {a} • First (SB) = {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 (SaSe) = {a} • First (SB) = {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 (SaSe) = {a} • First (SB) = {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 (SABc) = 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   G0 Red : A Blue :  • First (SABc) = First(ABc) • First (Aa) = {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 (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: 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 (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: 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 (SABc) = {a,b,c} • First (Aa) = {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
  • 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+E Tail  G0 Step Follow Set E Prefix Tail 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+E Tail  G0 Step Follow Set E Prefix Tail 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+E Tail  G0 Step Follow Set E Prefix Tail 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+E Tail  G0 Step Follow Set E Prefix Tail 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) = {, }}
  • 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}