- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find FIRST & FOLLOW for the following Grammar
E → E + T|T
T → T ∗ F|F
F → (E)|id
Solution
Computation of FIRST
E → E + T|T
Since FIRST (E) does not contain ε.
∴ FIRST (E) = FIRST(E + T) = FIRST(E)
As, E → T
∴ FIRST (E) = {FIRST(T)} (1)
T → T ∗ F|F
As FIRST (T) does not contain ε or T does not derive ε.
∴ FIRST (T) = FIRST(T ∗ F) = {FIRST(T)}
As, T → F (FIRST(T) = {FIRST(F)} (2)
F → (E)|id
∴ By Rule (3)of FIRST
FIRST (F) = {(, id} (3)
From (1), (2) & (3)
FIRST (F) = {(, id} (3)
FIRST (T) = {FIRST(F)} (2)
FIRST (E) = {FIRST(T)} (1)
∴ FIRST (E) = FIRST(T) = FIRST(F) = {(, id}
Computation of FOLLOW
E → E + T|T
T → T ∗ F|F
F → (E) |id
Apply Rule (1) FOLLOW (E) = {$} (1)
- ð„ → ð„ + ð“|ð“
Applying Rule (2) of FOLLOW
E → | Ε | E | + | T |
A → | α | B | Β |
𛼠= ε, B = E, β = +T
Since FIRST (β) = FIRST (+T) = {+} does not contain ε
∴ ð‘ð®ð¥ðž(ðŸðš) ð¨ðŸ ð…ðŽð‹ð‹ðŽð–
∴ FOLLOW(E) = FIRST(+T) = {+}
∴ FOLLOW(E) = {+} (2)
Applying Rule (3) of FOLLOW
E → | Ε + | T |
A → | α | B |
FOLLOW (T) = {FOLLOW (E)} (3)
- ð“ → ð“ * ð…
Applying Rule (2)
T → | Ε | T | *F |
A → | α | B | β |
∴ A = T, α = ε, B = T, β =∗ F
Since FIRST (β) = {∗} does not contain ε.
∴ ð‘ð®ð¥ðž (ðŸðš)ð¨ðŸ ð…ðŽð‹ð‹ðŽð–
∴ FOLLOW(T) = FIRST(∗ F)
∴ FOLLOW(T) = {∗} (4)
Applying Rule (3)
T → | T* | F |
A → | α | B |
FOLLOW(F) = {FOLLOW(T)} (5)
- F → (E)
Applying Rule (2)
F → | ( | E | ) |
A → | α | B | β |
Since FIRST (β) = {)} does not contain ε.
∴ ð‘ð®ð¥ðž (ðŸðš)ð¨ðŸ ð…ðŽð‹ð‹ðŽð–
∴ FOLLOW(E) = FIRST()).
∴ FOLLOW(E) = {)} (6)
Rule (3) cannot be applied to this production
It has ) at the right end corner.
But in rule (3) we should have a non-terminal at the right end corner.
i.e., we cannot compare A → α B with F → (E).
Combining all 6 statements, we get
FOLLOW (E) = {$} (1)
FOLLOW (E) = {+} (2)
FOLLOW (T) = {FOLLOW (E)} (3)
FOLLOW (T) = {∗} (4)
FOLLOW (F) = {FOLLOW (T)} (5)
FOLLOW (E) = {)} (6)
∴ From rule (1), (2) & (6)
FOLLOW (E) = {$, +, )}
∴ From rule (3), (4) & (5)
FOLLOW (T) = FOLLOW (F) = {$, +, ),∗}