语言的LR(1)自动机比对应的LR(0)自动机大多少?


10

在LR(0)解析器中,每个状态都包含LR(0)项的集合,这些项是用位置注释的生成。在LR(1)解析器中,每个状态都由LR(1)项的集合组成,这些项是用位置和超前字符注释的生成。

已知给定LR(1)自动机中的状态,通过从每个LR(1)项中删除前瞻标记形成的配置集会产生与LR(0)自动机中某个状态相对应的配置集。从这个意义上讲,LR(1)自动机和LR(0)自动机之间的主要区别在于LR(1)自动机在LR(0)自动机中具有更多状态副本,每个状态副本都带有前瞻性注释。信息。因此,给定CFG的LR(1)自动机通常大于该CFG的对应LR(0)解析器。

我的问题是LR(1)自动机可以有多大。如果语法字母中有不同的终端符号,则原则上我们可能需要对这不同的终端符号的每个子集至少复制一次LR(0)自动状态中的每个状态,从而可能导致LR(1 )自动机,比原始LR(0)自动机大倍。假设LR(0)自动机中的每个单独项目都由一组不同的LR(0)项目组成,我们可能会得到更大的爆炸。n 2 nnn2n

就是说,我似乎找不到一种方法来构造其LR(1)自动机明显大于相应的LR(0)自动机的语法家族。我尝试过的所有操作都导致大小的适度增加(通常为2-4倍左右),但我似乎找不到能够导致大爆炸的模式。

是否存在已知的上下文无关语法族,它们的LR(1)自动机比对应的LR(0)自动机大几倍?还是众所周知,在最坏的情况下,您实际上无法得到指数级的爆炸?

谢谢!


诸如此类的问题有时需要进行经验测试。您如何看待随机出现的个体实例(被选中以显示爆炸)?在这些类型的问题中,有一个模式表明“看起来随机”的结构表现出最大的“复杂性” ...
vzn

2
通常很难通过随机抽样找到最坏的情况,至少在平均情况明显好的情况下。
拉斐尔

ps,如果您将2x-4x爆炸案例的示例放在某处,而不是帖子中未另作介绍,将会很有帮助...
vzn 2015年

想法/线索:LR解析排列(cstheory.se)
vzn 2015年

通常将LALR(1)表示为一种充分接近LR(1)功率的方法,以便在更少的状态下使用(使用《龙书》中的文字)。我不知道在发明LALR(1)之前,仅以2到4的系数就足以将LR(1)视为禁止性产品。如果我想一想它们何时可以访问,我会看看Aho&Ullman 的解析,翻译和编译理论以及Grune 解析技术(如果他们对数字有所了解)。
AProgrammer

Answers:


2

语法

ST0TnaTn+1TnbTn+1TnbTn+1tnTNtN

在LR(1)自动机中将LR(0)状态 扩展为变体,因为所有分区都是可能的-出现在不同上下文中的头。另一方面,LR(0)自动机中的状态数就是线性的。因此,大约的扩展因子是可能的。

TNtN˙
{ t 0t N 1 } N 2 N / N2N{t0tN1}N2N/N

编辑:我将不得不稍后检查,当我有更多时间时,我认为添加会在几乎所有LR(0)状态上给出指数因子。TNT0这导致了班次减少冲突。


0

这样的下限有时很难构造,并且可能唤起更深入的CS理论(例如,在情况下,复杂性类分离)。本文似乎提供了您要寻求的理论构造/下界,例如在定理5中,该定理为总符号设定了下界,因此也有规定。参考文献还包括其他类似的构造/下限。

定理5。令。对于任何LR(k)语法,生成;其中 ; 非终结符号的数量必须至少为或存在非终结符号A,使得左侧具有A的不同乘积的数量必须至少为。f(n,k)=214(nk)/n2k=0,1;...,n1Lnn3f(n,k)f(n,k)

关于解析器和LR(k)语法的大小 / Leunga,Wotschkeb


这并没有告诉我们LR(1)自动机比LR(0)自动机大多少。它在LR(1)自动机的大小上给出了下限,而在LR(1)自动机的大小上给出了下限LR(0)自动机,但我们想要的是LR(1)自动机的大小除以LR(0)自动机的比率的下限。该结果并不意味着该比例。要了解有关比率的信息,我们需要该语言的LR(0)自动机大小的上限。因此,此答案不能回答所提出的问题。2(n1)/4/n22n/4/n2
DW

更不用说两个下限之间的差距只是的因数,原始帖子说作者已经知道如何实现2-4倍的比率,但想知道是否真的可能发生大爆炸。1.1892
DW

DW认为您的异议既合法又分裂。非常感谢您的澄清/细节。它是对他的问题的系统研究的相关/近乎直接的科学答案,实质上是关于LR(n)中最坏情况的语言构造/爆炸。这些(在附近?)可能是该地区“最知名的结果”。对问题的合理答案可能是负面的,也就是不,没有比提问者(他尚未实际展示过任何东西)或文献中发现的更好的结果了。我自己迫切地等待任何更多的明确答案!
vzn
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.