【发布时间】:2016-04-14 22:21:30
【问题描述】:
我知道每个 LL(1) 也是一个 LR(1)。但是LL(1)和LR(0)之间的关系呢,LL(1)也可以是LR(0)吗?
【问题讨论】:
-
这可能是计算机科学 SE(专注于理论)比 StackOverflow(专注于实践)更好的问题。
我知道每个 LL(1) 也是一个 LR(1)。但是LL(1)和LR(0)之间的关系呢,LL(1)也可以是LR(0)吗?
【问题讨论】:
您提出两个问题,一个在标题中,另一个在帖子正文中。两者都没有具体说明你问的是语言还是语法,但基本答案是一样的:
所有 LL(1) 语言都是 LR(0) 吗?
没有。既包含字符串又包含该字符串的适当前缀的语言不能是 LR(0)。但许多 LL(1) 语言都有这种形式。
一些 LL(1) 语言是 LR(0) 吗?
当然。
(未提出的问题)是否有任何 LR(0) 语言不是 LL(1)。
是的。例如,语言{a<sup>m</sup>b<sup>n</sup>c | m≥n≥0} 是 LR(0),但它没有 LL(1) 语法。
【讨论】:
S -> T | a S; T -> | a T b。这不是 LR(0) 根据 mdaines.github.io/grammophone Paste ` S -> T 。 S -> 一个 S 。 T->。 T -> a T b .`
S -> a S,而语法不是 LR(0),我真的应该知道,因为它与空字符串和语法匹配λ 规则不能是 LR(0)。在您的更正中,X 是不必要的;您可以将S -> X . X -> T c . 替换为S -> T c . 我更正了原帖。谢谢。