Shift-解析解析-问题


10

我最近遇到了一篇描述标题中提到的解析技术的论文。不幸的是,上述论文中使用的术语超出了我的理解范围,因此我一直在尝试更直观地理解构造算法。我相信我成功了(本次演讲是啊哈时刻的源头),但是不胜感激的是,无论是熟悉该技术还是其中所包含的术语的人,都可以对其进行验证。

我将描述我对解决方案的看法(如果正确的话,我相信它可能会对尝试理解该技术的其他人有所帮助),然后再提出其他问题。为了确保有没有误会,我将使用下列标准符号:,甲,乙,Ç ,。。。∈ Ñ,。。。X ,ÿ ,ž ∈ Ñ ∪ Ť,α ,βa,b,c,...∈TA,B,C,...∈N...X,Y,Z∈N∪T和,如在造纸,甲我 →交通 ω表示规则号我。但是,对于概念,我可能会使用与原始论文不同的名称。α,β,γ,...∈{N∪T}∗A→iωi

此外,在整个说明书中,等价关系被使用。κ0

施工

解析自动机内部有两种类型的项目:形式的简单LR(0)项目(我称之为移位项目) 和A i → α ∙ β ,m ,n形式的我称为解决项目项目 ; 这些命令告诉解析器将n个符号推回输入流,然后对第一个β符号减少规则数m。A→iα∙βA→iα∙β,m,nnmβ

语法增加有规则与移位项目开工小号” 0 → ∙ 小号$初始状态。S′→0S$S′→0∙S$

现在,要构造自动机,请为状态为每一项确定这些替代方案:q

  1. 如果该项目是转移项目,则自动机中将存在一个过渡q X → q ′,其中 X是β的第一个符号。A→iα∙βq→Xq′Xβ

  2. 如果该项目是成品移项,添加一个解决项乙Ĵ →交通 α 甲∙ β ,我,0为每个规则乙Ĵ →交通 α 甲β。A→iω∙B→jαA∙β,i,0B→jαAβ

  3. 如果该项目是可分解项目,则X为β的第一个符号。如果XA→iα∙β,m,nXβ,加移项 X Ĵ →交通 ∙ ω为每个规则 X Ĵ →交通 ω。如果除 A i → α ∙ β ,m ,n以外的其他项将 X作为其点超前,则添加过渡 q X → q ′X∈NX→j∙ωX→jωA→iα∙β,m,nXq→Xq′自动机。每决心项在q将导致决心项Ç 我 →交通 α X ∙ β ,米,Ñ + 1在q '。C→iα∙Xβ,m,nqC→iαX∙β,m,n+1个q′

  4. 如果该项目是一个解决项它不会提供任何先行信息,并且可以被丢弃,而是在第一次添加的决心项乙Ĵ →交通 α 甲∙ β ,米,Ñ为每个规则 乙Ĵ →交通 α 甲β。A→iω∙,m,nB→jαA∙β,m,n乙→Ĵα一个β

当然,这只是一个草图。实际上,必须先计算状态的关闭,然后才能处理过渡/偏移和分辨率。

之后,将自动机转换为移位解析分析表就变得很简单了。只是,作为一个较小的变化,该论文的作者解释的决议为接受的行动。给定生成的自动机,我发现将$的移位简单地视为接受动作比较方便。[R0,0$

问题

第一个显然是上述过程是否正确。

第二个是关于等价关系。我只能猜测等价关系是决定当看到完成的班次项目时要引入哪些解决项目的原因。κ 0似乎导致先行惊人地相似于˚F ö 大号大号ö W¯¯ 大号中号套LSLR解析器。本文在第11页上介绍了“更精细的等价关系”。有没有办法以直觉的方式解释这种关系?还有其他关系吗?κκ0FØ大号大号Øw ^大号中号

最后一个是解决冲突。论文很好地描述了什么是移位解决自动机中的不足之处。是否有解决这些不足之处的方法,类似于解决传统LR解析器中的冲突的方法?是否可以在ShRe解析器生成器中通过优先级和关联性来实现类似yacc风格的冲突解决方案?

谢谢,如果您阅读了所有这些内容,任何答案将不胜感激:)


建议将此问题迁移到cstheory。对于本文而言,似乎是一个非常复杂的算法,“可能”(?)尚未被任何人实现。主要的想法似乎是结合任意的前瞻性和线性时间分析...?但是使用更简单,更标准的超线性算法有多少个应用程序可以使用?任何想法,哪种应用程序可以更好地使用这种方法?你有一个或一个知道吗?
— vzn13年

1
很好的理论练习(尽管我没有看技术性)。鉴于通常甚至没有使用LR(k)的全部功能,人们可能会对实际影响感到好奇。我看到这种工作有两个问题:(1)由于算法变得更加复杂,当它不起作用时,人的大脑是否仍有可能扭曲语法并理解其后果。经常出现的事实是,高度复杂的技术在起作用时会很有收获,而在不起作用时会变得更糟。(2)如果常规CF算法不是线性的,它将是线性的。
— babou 2014年

Answers:


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.