2011-02-01 6 views
0

Прошло некоторое время с тех пор, как я работал с CFG. В любом случае, у меня есть определенная грамматика, которая проходит все операции правильно, но в конце (я исключил другие стандартные математические операции).CFG арифметический приоритет/неопределенность

S :: = S + T | S-T | T

T :: = nonterminal | ID | -S | (S)

за все, что у меня есть. Я знаю, что -S должно быть -T. Но дополнительно .. что это делает с приоритетом. Это двусмысленно? Математически я могу это, очевидно, не будет правильно ... но это не должно иметь значения в вопросе двусмысленности.

Если бы это был -T, имеющий одинаковый приоритет, как (S)?

действительно пытается понять, как это происходит, возвращая его в исходное состояние.

ответ

0

Если вы меняете -S на -T, то двусмысленность разрешается. Перед изменением здесь приведен пример двусмысленного предложения: -a-b. Это - (a-b) или (-a) -b?

С изменением, однако, больше нет двусмысленности.

Что касается приоритета, то в вашем конкретном примере не должно быть правила между -T и (S), поскольку оно всегда является внутренним, которое имеет приоритет, что является именно тем поведением, которое вы ожидаете.

 Смежные вопросы

  • Нет связанных вопросов^_^