An Easy Explaination Of First And Follow Sets (original) (raw)
We Want to make First sets so first we list the sets we need
FIRST(E) = {}
FIRST(E') = {}
FIRST(T) = {}
FIRST(T') = {}
FIRST(F) = {}
First We apply rule 2 to T' → ε and E' → ε
FIRST(E) = {}
FIRST(E') = {ε}
FIRST(T) = {}
FIRST(T') = {ε}
FIRST(F) = {}
First We apply rule 3 to T' → *FT' this rule tells us that we can add everything in First(*FT') into First(T')
Since First(*) useing rule 1 is * we can add * to First(T')
FIRST(E) = {}
FIRST(E') = {+,ε}
FIRST(T) = {}
FIRST(T') = {*,ε}
FIRST(F) = {}
First We apply rule 3 to T' → *FT' this rule tells us that we can add everything in First(*FT') into First(T')
Since First(*) useing rule 1 is * we can add * to First(T')
FIRST(E) = {}
FIRST(E') = {+,ε}
FIRST(T) = {}
FIRST(T') = {*,ε}
FIRST(F) = {}
Two more productions begin with terminals F → (E) and F → id If we apply rule 3 to these we get...
FIRST(E) = {}
FIRST(E') = {+,ε}
FIRST(T) = {}
FIRST(T') = {*,ε}
FIRST(F) = {'(',id}
Next we apply rule 3 to T → FT' once again this tells us that we can add First(FT') to First(T)
Since First(F) doesn't contain ε that means that First(FT') is just First(F)
FIRST(E) = {}
FIRST(E') = {+,ε}
FIRST(T) = {'(',id}
FIRST(T') = {*,ε}
FIRST(F) = {'(',id}
Lastly we apply rule 3 to E → TE' once again this tells us that we can add First(TE') to First(E)
Since First(T) doesn't contain ε that means that First(TE') is just First(T)
FIRST(E) = {'(',id}
FIRST(E') = {+,ε}
FIRST(T) = {'(',id}
FIRST(T') = {*,ε}
FIRST(F) = {'(',id}
Doing anything else doesn't change the sets so we are done!
We want to make Follow sets so first we list the sets we need
FOLLOW(E) = {}
FOLLOW(E') = {}
FOLLOW(T) ={}
FOLLOW(T') = {}
FOLLOW(F) = {}
The First thing we do is Add $ to the start Symbol 'E'
FOLLOW(E) = {$}
FOLLOW(E') = {}
FOLLOW(T) ={}
FOLLOW(T') = {}
FOLLOW(F) = {}
Next we apply rule 2 to E' →+TE' This says that everything in First(E') except forε should be in Follow(T)
FOLLOW(E) = {$}
FOLLOW(E') = {}
FOLLOW(T) ={+}
FOLLOW(T') = {}
FOLLOW(F) = {}
Next we apply rule 3 to E →TE' This says that we should add everything in Follow(E) into Follow(E')
FOLLOW(E) = {$}
FOLLOW(E') = {$}
FOLLOW(T) ={+}
FOLLOW(T') = {}
FOLLOW(F) = {}
Next we apply rule 3 to T → FT' This says that we should add everything in Follow(T) into Follow(T')
FOLLOW(E) = {$}
FOLLOW(E') = {$}
FOLLOW(T) ={+}
FOLLOW(T') = {+}
FOLLOW(F) = {}
Now we apply rule 2 to T' →*FT' This says that everything in First(T') except for ε should be in Follow(F)
FOLLOW(E) = {$}
FOLLOW(E') = {$}
FOLLOW(T) ={+}
FOLLOW(T') = {+}
FOLLOW(F) = {*}
Now we apply rule 2 to F → (E) This says that everything in First(')') should be in Follow(E)
FOLLOW(E) = {$,)}
FOLLOW(E') = {$}
FOLLOW(T) ={+}
FOLLOW(T') = {+}
FOLLOW(F) = {*}
Next we apply rule 3 to E → TE' This says that we should add everything in Follow(E) into Follow(E')
FOLLOW(E) = {$,)}
FOLLOW(E') = {$,)}
FOLLOW(T) = {+}
FOLLOW(T') = {+}
FOLLOW(F) = {*}
Next we apply rule 4 to E' → +TE' This says that we should add everything in Follow(E') into Follow(T) (because First(E') contains ε)
FOLLOW(E) = {$,)}
FOLLOW(E') = {$,)}
FOLLOW(T) = {+,$,)}
FOLLOW(T') = {+}
FOLLOW(F) = {*}
Next we apply rule 3 to T → FT' This says that we should add everything in Follow(T) into Follow(T')
FOLLOW(E) = {$,)}
FOLLOW(E') = {$,)}
FOLLOW(T) = {+,$,)}
FOLLOW(T') = {+,$,)}
FOLLOW(F) = {*}
Finaly we apply rule 4 to T' → *FT' This says that we should add everything in Follow(T') into Follow(F)
FOLLOW(E) = {$,)}
FOLLOW(E') = {$,)}
FOLLOW(T) = {+,$,)}
FOLLOW(T') = {+,$,)}
FOLLOW(F) = {*,+,$,)}