Как я могу проверить неоднозначность в этой грамматике: - - PullRequest
0 голосов
/ 12 мая 2019

E-> EE + / E (E) / ID

Проверьте, является ли данная грамматика неоднозначной. Кроме того, было бы очень полезно, если бы вы могли рассказать мне процесс устранения неоднозначности.

Я пытался создать дерево разбора для него, но не мог понять, как на самом деле сделать это, чтобы найти неоднозначный случай

1 Ответ

1 голос
/ 13 мая 2019

Bison генерирует синтаксический анализатор LALR (1) для этой грамматики без каких-либо конфликтов синтаксического анализатора.Грамматика LALR (1) без конфликтов синтаксического анализа не может быть неоднозначной, поэтому маловероятно, что вы сможете найти неоднозначность.

Для справки, использованный мною ввод бизона:

%%
E: E E '+'
 | E '(' E ')'
 | 'i'

Если вы обработаете это с флагом -v, bison создаст файл отчета, который содержит полный конечный автомат.(Есть восемь состояний плюс начальное состояние.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...