【问题标题】:Relationship between LR(0), LL(0), LALR(1), etc?LR(0)、LL(0)、LALR(1)等之间的关系?
【发布时间】:2016-08-07 17:25:35
【问题描述】:

我真的很难理解以下之间的关系:

  • LR(0)
  • LL(0)
  • LALR(1)
  • 单反(1)
  • LR(1)
  • LL(1)

我很确定 LALR(1) 和 SLR(1) 是 LR(1) 的子集,但我不知道其他的。他们都是独家的吗? LL(0) 是 LL(1) 的子集吗?

谢谢

【问题讨论】:

  • 请在 CompSci SE 网站上查看此答案(应该问这个问题,但它会被标记为重复):cs.stackexchange.com/a/48/4416
  • 我正在投票结束这个问题,因为它已经在cs.stackexchange.com得到了回答
  • 我投票决定将此问题作为离题结束,因为它已经在 cs.stackexchange.com 上得到了回答,而且它要求在解析理论中得到一个有据可查的结果。

标签: parsing compiler-construction ll lr


【解决方案1】:

收容规则如下:

  • 每个 LR(0) 语法也是 SLR(1),但并非所有 SLR(1) 语法都是 LR(0)。
  • 每个 SLR(1) 语法也是 LALR(1),但并非所有 LALR(1) 语法都是 SLR(1)。
  • 每个 LALR(1) 语法也是 LR(1),但并非所有 LR(1) 语法都是 LALR(1)。
  • 每个 LL(1) 语法也是 LR(1),但并非所有 LR(1) 语法都是 LL(1)。
  • 每个 LL(0) 语法也是 LR(0)、SLR(1)、LALR(1)、LR(1) 和 LL(1)。 (LL(0) 语法基本没用;see this question for details why)。

情况也是如此,每种具有 LR(1) 文法的语言也有 LR(0) 文法,前提是您对文法进行了结束标记,但不能保证文法是漂亮的。

【讨论】:

  • 先生,感谢您的回答。请清除我的疑问:LR(0) 总是 LALR(1) 吗?
  • @laura 是的,这来自前两个内含物。
  • 先生最后一个疑问,只是想确认 -:if 存在语法 G 的 LALR(1) 解析器当且仅当 -:option a ) G 的 LR(1) 解析器有 SR 冲突 b) G 的 LR(0) 解析器有 SR 冲突..所以先生对此的回答应该是两者?抱歉,如果我违反了任何协议,我的意思是我知道我必须为这个问题创建一个新线程..但是这个问题是间接相关的,所以我在这里问..对不起:)
猜你喜欢
  • 1970-01-01
  • 2016-04-14
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多