Usuń niejednoznaczność w składni abstrakcyjnej w innych, aby napisać Prolog parsera DCG
P => Program K => Blokuj
S => Jedno polecenie
C => Polecenia
E => Wyrażenie
B => Boolean-expr
I => Identyfikator
N> Liczebnik
P :: = K.
K :: = początek końca C
C :: = C1; C2 | S
S :: = I: = E | jeśli (B) to S | jeśli (B) to S1 inaczej S2 | podczas gdy (B) robi S | powtarzaj C do (B) | K | drukuj E
E :: = - E | E1 + E2 | E1 - E2 | E1 E2 | E1 div E2 | E1 mod E2 | (E) | I | N
B :: = E1 = E2 | E1> E2 | E1 <E2 | E1! = E2 | nie B | B1 i B2 | B1 lub B2 | (B)
Powinienem usunąć dwuznaczności w E i B, abym mógł napisać parser DCG w prologu.