Remover Ambiguidade na sintaxe abstrata em outros para escrever o parser do DCG
P => Programa K => Bloco
S => comando único
C => Comandos
E => Expressão
B => Boolean-expr
I => Identificador
N> Numeral
P :: = K.
K :: = começar C fim
C :: = C1; C2 | S
S :: = I: = E | se (B) então S | se (B) então S1 mais S2 | enquanto (B) do S | repita C até (B) | K | imprimir E
E :: = - E | E1 + E2 | E1 - E2 | E1 E2 | E1 div E2 | E1 mod E2 | (E) | Eu | N
B :: = E1 = E2 | E1> E2 | E1 <E2 | E1! = E2 | não B | B1 e B2 | B1 ou B2 | (B)
Eu devo remover ambiguidades em E e B para que eu possa escrever um analisador DCG em prólogo.