I have the following grammar
S -> E | S A | A
E -> if (C) {S} | if (C) {S} else {S}
A -> V := T;
T -> a | b
V -> x | y
C -> V O T | T O V | V O V | T O T
O -> < | >
From this, am I correct in saying this grammar is not LL(1) because for Rule E, "if (C) {S}" can be left-factored out and rule S has a left recursion?
What would be the correct way to fix this? I was thinking something like:
S -> P
P -> ER | AR
R -> AR | ε
E -> if (C) {S} B
B -> else {S}
A -> V := T;
T -> a | b
V -> x | y
C -> V O T | T O V | V O V | T O T
O -> < | >