Здравствуйте, я не понимаю, почему существует конфликт в производстве assgnStmt. Я использую coco/R, и я получаю «предупреждение LL1 в assgnStmt: ID запускает & преемника удаляемой структуры». Спасибо.грамматика LL (1) конфликты
COMPILER program
CHARACTERS
Letter= 'a'..'z'.
Digit= '0'..'9'.
TOKENS
NUM= Digit {Digit}.
ID= Letter {Letter}.
PRODUCTIONS
program
= stmts
.
stmts = assgnStmt { assgnStmt ';' } .
assgnStmt
= {ID "==" } expr
.
expr = term { ('+' | '-') term } .
term = factor { ('*' | '/' ) factor } .
factor
= '(' expr ')'
| ID
| NUM
.
END program.
Я добавил, что является более общим, оставляя семантический анализ правильной работы. –
blob
Да, я должен был упомянуть этот вариант. Во всяком случае, я надеюсь, что ответ немного помог. – rici