2011-02-01 67 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)之间存在规则,因为它总是具有优先级的内部优先级,这正是您期望的行为。