Search code examples
compiler-construction

Compiler Construction - Follow set of a grammar


I have following grammar

E -> TX
X -> +E
     |epsilon
T -> intY
     | (E)
Y -> *T
     | epsilon

Is the below Follow set is correct for above grammar?

   E = {$, )}
   X = {$, )}
   T = {int, (, $}
   Y = {int, (, $}

Solution

  • First

    First(E) -> {int, (}
    First(X) -> {+, epl}
    First(T) -> {int, (}
    First(Y) -> {*, epl}
    

    Follow

    Follow(E) -> {$, )}
    Follow(X) -> {Follow(E)}
    Follow(T) -> {First(X) - epl, Follow(E)} -> {+, $, )} 
    Follow(Y) -> {Follow(T)}
    

    Why Follow(E) in Follow(T)? because First(X) has epsilon ->which give us E -> T production