我目前正在为某种语言编写解析器。我已经获得了这种语言的语法,但是这种语法有一些左递归和非 LL(*) 结构,因此即使使用回溯,ANTLR 也表现不佳。

因为删除这些左递归和非 LL(*) 构造比乍一看更难,所以我现在想尝试 LR(k) 或 LALR(k) 解析器生成器。 k越高越好。

谁能推荐我一个满足这些要求的解析器​​生成器?

  • 生成的解析器最好是具有一些高(甚至任意)k 的 LR(k) 解析器,或者至少是具有一些高 k 的 LALR(k) 解析器。
  • 生成的解析器是用 C 或 C++ 编写的,如果是用 C 编写的,则可以链接到 C++-Code。
  • 类似于 ANTLR 的功能集(尤其是 AST 重写)会很好。
  • 性能不是最紧迫的问题,生成的解析器旨在
    用于具有大量内存和 CPU 功率的台式机。

  • 谢谢和问候,
    约斯特

    PS:我问这个不是因为我不能自己用谷歌搜索,而是因为没有时间自己测试一些生成器。因此,请仅在您对推荐的解析器生成器有经验时才回答。

    最佳答案

    您可能会考虑 LRSTAR

    我没有使用该工具本身的经验,但我见过作者,他似乎是一个非常称职的人。 (我确实以构建解析引擎和相关技术为生)。

    关于parsing - LR(k) 或 LALR(k) 解析器生成器,其特征类似于 ANTLR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12122372/

    10-16 21:40