Расширенный перевод БНФ в БНФ - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть эта грамматика в обозначении EBNF:

expr -> expr (opt1 | opt2 | opt3) expr

И я хочу преобразовать ее в BNF, чтобы использовать ее в Bison, но я получаю ошибки сдвига / уменьшения в этом:

expr : expr opt1 expr | expr opt2 expr | expr opt3 expr

Думаю, я что-то неправильно понял по пути.Любая помощь?

Спасибо

1 Ответ

3 голосов
/ 02 апреля 2012

Как насчет

expr: expr optexpr expr
optexpr: opt1 | opt2 | opt3

Ошибки сдвига / уменьшения вызваны перекрывающимися префиксами expr.Вводя другое определение, синтаксический анализ выражения expr становится однозначным.

...