【问题标题】:GLR parsing algorithm resources [closed]GLR 解析算法资源 [关闭]
【发布时间】:2011-01-08 22:17:01
【问题描述】:

I am writing 和 GLR parser generator 并希望获得有关互联网和死树品种(不熟悉极客语言的人的书籍)上与此算法相关的资源的一些建议。

我知道 Bison 可以生成 GLR 解析器,并且考虑到它在 GPL 下,我可以检查它的代码,但是最好有算法的完整描述。

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

【问题讨论】:

  • 非常酷的项目(简洁,不是解析器生成器),我会感兴趣地关注它的进展。
  • 不幸的是我被很多事情分心了,所以这个项目已经停滞了,但是......很快就会开始更多的工作!

标签: compiler-construction parsing parser-generator glr


【解决方案1】:

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

更多详情:

我知道第三个开源 GLR 解析器:DParser。

【讨论】:

    【解决方案2】:

    Adrian Johnstone 发表了大量关于 GLR 算法高级版本的著作。他的publications website 可能是一个有趣的资源。

    【讨论】:

      【解决方案3】:

      本书中包含了我见过的最好的描述,并附有图片说明算法的每个步骤:

      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) 尝试的技术之一。

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

        • 真的就这么简单吗?还是有特定的替代 GLR 算法?
        • 这基本上是我阅读 Bison 手册 (gnu.org/software/bison/manual/bison.html#GLR-Parsers) 后得出的结论——它实际上非常清楚 GLR 解析器的工作原理。
        • 您可能会发现它比这更复杂。
        • 是的,在阅读了@Matthew Slattery 推荐的一篇论文后,我确实认为该算法比这更复杂:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-06
        • 1970-01-01
        • 1970-01-01
        • 2016-10-19
        • 1970-01-01
        • 1970-01-01
        • 2015-04-30
        相关资源
        最近更新 更多