【问题标题】:Is every LL(1) grammar also an LR(0) grammar?每个 LL(1) 文法也是 LR(0) 文法吗?
【发布时间】:2016-04-14 22:21:30
【问题描述】:

我知道每个 LL(1) 也是一个 LR(1)。但是LL(1)和LR(0)之间的关系呢,LL(1)也可以是LR(0)吗?

【问题讨论】:

  • 这可能是计算机科学 SE(专注于理论)比 StackOverflow(专注于实践)更好的问题。

标签: parsing grammar ll lr


【解决方案1】:

您提出两个问题,一个在标题中,另一个在帖子正文中。两者都没有具体说明你问的是语言还是语法,但基本答案是一样的:

  1. 所有 LL(1) 语言都是 LR(0) 吗?

    没有。既包含字符串又包含该字符串的适当前缀的语言不能是 LR(0)。但许多 LL(1) 语言都有这种形式。

  2. 一些 LL(1) 语言是 LR(0) 吗?

    当然。

  3. (未提出的问题)是否有任何 LR(0) 语言不是 LL(1)。

    是的。例如,语言{a<sup>m</sup>b<sup>n</sup>c | m≥n≥0} 是 LR(0),但它没有 LL(1) 语法。

【讨论】:

  • 所以根据你的回答,我可以说..如果我们在 LL(1) 表中没有得到任何重复条目的语法.. 那么该语法.. 虽然它是左因式..可以是 LR(0)(当且仅当语法在 LR(0) 表上无冲突(移位/减少)时)。???
  • @bopia:如果 LR(0) 表没有冲突,则语法为 LR(0)。没有其他相关的。
  • 你能给{a^mb^n | LR(0) 语法吗?请 m≥n≥0} 种语言?
  • @rici 我猜你的意思是S -&gt; T | a S; T -&gt; | a T b。这不是 LR(0) 根据 mdaines.github.io/grammophone Paste ` S -> T 。 S -> 一个 S 。 T->。 T -> a T b .`
  • @qznc:你在这两个方面都是对的:我的意思是S -&gt; a S,而语法不是 LR(0),我真的应该知道,因为它与空字符串和语法匹配λ 规则不能是 LR(0)。在您的更正中,X 是不必要的;您可以将S -&gt; X . X -&gt; T c . 替换为S -&gt; T c . 我更正了原帖。谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-01-19
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 2015-10-07
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多