Арифметический приоритет/неоднозначность CFG

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

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

T ::= нетерминал | ID | -С | (С)

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

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

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


person DJPlayer    schedule 01.02.2011    source источник


Ответы (1)


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

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

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

person Eran Zimmerman Gonen    schedule 28.09.2011