Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Find FIRST & FOLLOW for the following GrammarnE → E + T|TnT → T ∗ F|FnF → (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) = {$, +, ),∗}
