【发布时间】:2012-12-10 21:36:15
【问题描述】:
我试图证明 LL(3) 不是 LR(2) 的子集。
直觉上这很容易,但我无法凭直觉找到这样的语法。
你能帮我一把吗?感谢您的帮助
【问题讨论】:
-
我认为这可能更适合 CS.stackexchange.com
我试图证明 LL(3) 不是 LR(2) 的子集。
直觉上这很容易,但我无法凭直觉找到这样的语法。
你能帮我一把吗?感谢您的帮助
【问题讨论】:
定理:如果文法是 LL(3) 而不是 LR(2),则文法有 ε-产生式。
证明:如果在读取句柄开头的三个字符后总是可以识别出正确句型的句柄,则文法是 LL(3) .
如果在读取句柄末尾两个字符后总是可以以正确的句子形式识别句柄,则文法是 LR(2)。
如果语法是 LL(3) 而不是 LR(2),那么读取句柄开头之后的三个字符有时必须比读取句柄末尾之后的两个字符提供更多信息。只有当句柄为空时才会发生这种情况。
【讨论】:
嗯,显然诀窍是使用 ε-产生式。
以下语法可以使用:
S->aa|Aaaa
A->ε
【讨论】: