我正在编写一个GLR 解析器生成器,并希望在互联网上和死树品种(不熟悉极客语言的人的书籍)上获得与该算法相关的资源的一些建议。
我知道 Bison 可以生成 GLR 解析器,并且鉴于它在 GPL 下,我可以检查它的代码,但是最好对算法进行完整描述。
那么,有人知道我可以利用的任何好的资源吗?谢谢。
我正在编写一个GLR 解析器生成器,并希望在互联网上和死树品种(不熟悉极客语言的人的书籍)上获得与该算法相关的资源的一些建议。
我知道 Bison 可以生成 GLR 解析器,并且鉴于它在 GPL 下,我可以检查它的代码,但是最好对算法进行完整描述。
那么,有人知道我可以利用的任何好的资源吗?谢谢。
我之前在网上遇到的一些好东西:
更多细节:
而且我知道第三种开源 GLR 解析器:DParser。
Adrian Johnstone 发表了大量关于 GLR 算法高级版本的工作。他的出版物网站可能是一个有趣的资源。
我见过的最好的描述,用图片说明算法的每一步,都包含在这本书中:
对于伪代码,请转到源代码:Tomita 的 Generalized LR Parsing,第 70 页左右。Farshi 的论文包含一个简洁的描述。
这是我为 qb.js ( qbasic in javascript ) 尝试的技术之一。
据我所知,它的功能与 LALR 解析器相同 - 除非遇到歧义。
当它这样做时,它本质上分为与该点可能的选项相对应的单独解析,并继续它们 - 当解析失败时(由于遇到非法元素),它被简单地丢弃,因为它一定是对早先的模棱两可的错误猜测。
最后,除了一个解析之外,所有解析都应该死掉——幸存的解析是那些模棱两可的点的“正确”解析。