LL和LR语法的语言理论比较


66

人们经常说LR(k)解析器比LL(k)解析器更强大。这些陈述在大多数时候都含糊不清。特别是,我们应该比较固定的类还是所有的并集?那么情况如何呢?我尤其对LL(*)如何适合感兴趣。kk

据我所知,语法分析器LL和LR接受的各个语法集合是正交的,因此让我们来谈谈由各个语法集合产生的语言。令表示由解析器可以解析的语法生成的语言的类别,其他类别也类似。LR(k)LR(k)

我对以下关系感兴趣:

  • LL(k)⊆?LR(k)
  • ⋃i=1∞LL(k)⊆?⋃i=1∞LR(k)
  • ⋃i=1∞LL(k)=?LL(∗)
  • LL(∗)∘?⋃i=1∞LR(k)

其中一些可能很容易。我的目标是收集一个“完整”的比较。参考被赞赏。


2
也许这可以帮助您!语法层次结构图像
— Andrea Tucci

1
@AndreaTucci:是的,但这仅涵盖语法,不涉及生成的语言。
— 拉斐尔

Answers:


60

有许多已知的收容措施。让表示包含,而表示适当的包含。让表示不可比性。⊆⊂×

令,。LL=⋃kLL(k)LR=⋃kLR(k)

语法水平

对于LL

  • LL(0)⊂LL(1)⊂LL(2)⊂LL(2)⊂⋯⊂LL(k)⊂⋯⊂LL⊂LL(∗)
  • SLL(1)=LL(1),SLL(k)⊂LL(k),SLL(k+1)×LL(k)

Rosenkrantz和Stearns 在确定性自上而下语法的属性中证明了其中的大多数。是一个微不足道的练习。Terence Parr的演示文稿将放在幻灯片13上。Jarzabek和Krawczyk的纸上LL-正则语法显示,它们的证明从小到扩展到SLL(k+1)×LL(k)LL(∗)LL⊂LLRLL⊂LL(∗)

对于LR

  • LR(0)⊂SLR(1)⊂LALR(1)⊂LR(1)
  • SLR(k)⊂LALR(k)⊂LR(k)
  • SLR(1)⊂SLR(2)⊂⋯⊂SLR(k)
  • LALR(1)⊂LALR(2)⊂⋯⊂LALR(k)
  • LR(0)⊂LR(1)⊂LR(2)⊂⋯⊂LR(k)⊂⋯⊂LR

这些都是简单的练习。

LL与LR

  • LL(k)⊂LR(k)(确定性自上而下语法加上任何左递归语法的属性)
  • LL(k)×SLR(k),LALR(k),LR(k−1)(简单练习)
  • LL⊂LR(任何左递归语法)
  • LL(∗)×LR(左递归与任意先行)

语言水平

对于LL

  • LL(0)⊂LL(1)⊂LL(2)⊂⋯⊂LL(k)⊂⋯⊂LL⊂LL(∗)
  • SLL(k)=LL(k)

其中大多数已在确定性自上而下语法的性质中得到证明。Nijholt的和LR常规语法的等价问题参考了显示。Jarzabek和Krawczyk撰写的LL-regular语法显示了,并且它们的证明也很容易地扩展到LL(k)⊂LL(∗)LL⊂LLRLL⊂LL(∗)

对于LR

  • LR(0)⊂SLR(1)=LALR(1)=LR(1)=SLR(k)=LALR(k)=LR(k)=LR

克努斯(Knuth)在他的《语言从左到右的翻译》一书中介绍了LR(k)证明了其中的一些,其余的在将LR(k)语法转换为LR(1),SLR(1),和(1,1) Mickunas等人的有界右上下文语法。

LL与LR

  • { 一个我b Ĵ | 我≥ Ĵ }LL⊂LR(1)(根据上述内容,严格约束的典范示例为){aibj|i≥j}
  • { a i b j | 我≥ Ĵ }LL(∗)×LR(语言显示了一半的要求,Nijholt引入的LL 和LR常规语法的等价问题引用了论文显示另一半){aibj|i≥j}
  • LR(1)=DCFL(请参见此处的参考)。

很好的答案,我已经投票了。我会以为Frank deRemer在他的原始LALR论文中证明了LALR <= LR?(1969年?)
— user207421

@EJP:如果通过折叠状态定义,则是立即的。deRemer仅证明他的构造创建了相同的解析器。语法类不相等,这是一个很好的练习(甚至对此站点来说是一个很好的问题)。语言类的平等性要棘手得多:如果您确实想要详细信息,请阅读这篇论文;)大号甲大号ř 大号řLALR(k)⊆LR(k)LALRLR
— 亚历克斯·十·布林克2012年

1
@AlextenBrink我确实读过这篇论文,并由Frank de Remer教书,但是已经30多年了;-)感谢所有细节。
— user207421

为每个不等式收集示例语法可能会很好。
— o11c 2015年

1
@ o11c我认为这将使一个答案不堪重负。我的印象是亚历克斯在必要时提供了很好的参考。他对某些人说“轻松运动”。我想,如果读者不能提出一种语法,他们可以发布一个新问题,询问具体情况。
— 拉斐尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.