我目前正在为某种语言编写解析器。我已经获得了这种语言的语法,但是这种语法有一些左递归和非 LL(*) 构造,所以 ANTLR 表现不佳,即使有回溯。
因为删除这些左递归和非 LL(*) 构造比乍一看更难,所以我现在想尝试一个 LR(k) 或 LALR(k) 解析器生成器。k越高越好。
谁能推荐我一个满足这些要求的解析器生成器?
- 生成的解析器最好是具有一些高(甚至是任意)k 的 LR(k) 解析器,或者至少是具有一些高 k 的 LALR(k) 解析器。
- 生成的解析器是用 C 或 C++ 编写的,如果它是用 C 编写的,它可以链接到 C++-Code。
- 类似于 ANTLR 的功能集(尤其是 AST 重写)会很好。
- 性能不是最紧迫的问题,生成的解析器旨在用于具有大量内存和 cpu 能力的台式机。
谢谢和问候,
约斯特
PS:我问不是因为我不能自己google,而是因为没有时间自己测试一些生成器。因此,请仅在您对推荐的解析器生成器有经验的情况下回答。