In: Computer Science
Give the grammar following:
E --> E + T | T
T --> T* F | F
F --> (E) | id
Eliminating the left recursion rules and getting a non-left recursive equivalent grammar.
Solution:
Given grammar,
E -> E + T | T
T -> T * F | F
F -> (E) | id
Explanation:
=>E, T and F are non terminals and (. ) and id are terminals in the given grammar.
=>Production rules E -> E + T and T -> T * F are left recursive because same non terminal exist on the left side of production rule and exactly left of the right side of production rule.
Removing left recursion:
=>If there is left recursive production rule A ->
A
| 
 where A is non terminal, 
 and 
 are set of terminals and non terminals so we can write above
production rule in non-left recursive form as A -> 
A', A' -> 
 | 
A'
So the non-left recursive form of the given grammar is.
E -> TE'
E' -> 
 | +TE'
T -> FT'
T' -> 
 | *FT'
F -> (E) | id
I have explained each and every part with the help of statements attached to the answer above.