Hello everyone,
I'm really struggling with this problem:
Suppose we have the following grammar fragment for a language that allows an assignment to appear in any context in which an expression is expected: the value of the expression is the right-hand side of the assignment, which is placed into the left-hand-side as a side effect.
expr --> id := expr
--> term term_tail
term_tail --> + term term_tail | e
term --> factor factor_tail
factor_tail --> * factor factor_tail | e
factor --> ( expr ) | id
The question asks to discuss why it is not LL(1) and what can be done to make it so.
I am thinking that there is a left recursion conflict here but I'm really not sure. I can see that in the first line the assignment operator basically assigns expr to itself which causes a conflict. I couldn't figure it out beyond that (and what I figured out is probably wrong as well! :) ).
I am not looking for quick solutions here just a general direction or some informative explanation so that I may better understand this material
Thank you so much for your help!!