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.

questionAnswers(2)

yourAnswerToTheQuestion