我目前正在编写一个某种语言的解析器。我已经得到了这种语言的语法,但是这个语法有一些左递归和非LL(*)结构,所以即使使用回溯,ANTLR也无法很好地处理。
因为去除这些左递归和非LL(*)结构比起初看来更难,所以我现在想尝试一个LR(k)或LALR(k)解析器生成器。k值越高越好。
有人能推荐符合这些要求的解析器生成器吗?
注:我并不是因为我不能自己搜索而问问题,而是因为没有时间测试一些解析器生成器。因此,如果您有使用推荐的解析器生成器的经验,请回答。
因为去除这些左递归和非LL(*)结构比起初看来更难,所以我现在想尝试一个LR(k)或LALR(k)解析器生成器。k值越高越好。
有人能推荐符合这些要求的解析器生成器吗?
- 最好是生成LR(k)解析器,其中k值高(甚至任意),或者至少是生成LALR(k)解析器,其中k值较高。
- 生成的解析器使用C或C++编写,并且如果使用C编写,则可以连接到C++代码。
- 类似于ANTLR的功能集(特别是AST重写)将是不错的选择。
- 性能不是最紧迫的问题,生成的解析器旨在用于具有大量内存和CPU功率的台式机。
注:我并不是因为我不能自己搜索而问问题,而是因为没有时间测试一些解析器生成器。因此,如果您有使用推荐的解析器生成器的经验,请回答。