23

我正在编写一个GLR 解析器生成器,并希望在互联网上和死树品种(不熟悉极客语言的人的书籍)上获得与该算法相关的资源的一些建议。

我知道 Bison 可以生成 GLR 解析器,并且鉴于它在 GPL 下,我可以检查它的代码,但是最好对算法进行完整描述。

那么,有人知道我可以利用的任何好的资源吗?谢谢。

4

4 回答 4

16

我之前在网上遇到的一些好东西:

更多细节:

而且我知道第三种开源 GLR 解析器:DParser

于 2010-01-26T00:43:37.640 回答
6

Adrian Johnstone 发表了大量关于 GLR 算法高级版本的工作。他的出版物网站可能是一个有趣的资源。

于 2010-11-04T14:30:05.717 回答
4

我见过的最好的描述,用图片说明算法的每一步,都包含在这本书中:

http://books.google.ca/books?id=05xA_d5dSwAC&lpg=PA381&dq=generalized%20deterministic%20parsers&pg=PA381#v=onepage&q=generalized%20deterministic%20parsers&f=false

对于伪代码,请转到源代码:Tomita 的 Generalized LR Parsing,第 70 页左右。Farshi 的论文包含一个简洁的描述。

http://books.google.ca/books?id=PvZiZiVqwHcC&lpg=PP1&dq=generalized%20lr%20parsing&pg=PA70#v=onepage&q=&f=false

这是我为 qb.js ( qbasic in javascript ) 尝试的技术之一。

于 2010-03-09T13:44:56.027 回答
2

据我所知,它的功能与 LALR 解析器相同 - 除非遇到歧义。

当它这样做时,它本质上分为与该点可能的选项相对应的单独解析,并继续它们 - 当解析失败时(由于遇到非法元素),它被简单地丢弃,因为它一定是对早先的模棱两可的错误猜测。

最后,除了一个解析之外,所有解析都应该死掉——幸存的解析是那些模棱两可的点的“正确”解析。

于 2010-01-25T00:30:10.570 回答