我对解析器组合器非常感兴趣,特别是那些可以处理左递归和歧义语法的组合器。我知道Superpower的神话般的Nicholas Blumhardt,但它无法处理这种语法。
我已经找到了一些https://github.com/djspiewak/gll-combinators这样的GLL解析器组合器库,但是它使用了Scala,这给我带来了很大的不便(我不知道该语言)。
我想知道C#(或Java)中是否有这些
非常感谢您。
答案 0 :(得分:1)
我做了一个编译器项目,在 IntelliJ IDE 上使用 Java 和 ANTLR 4 扩展,互联网上有很好的资源。这是官方书籍“The Definitive ANTLR 4 Reference”我觉得它很不错,而且它们提供了很好的documentation。
ANTLR 4 有处理左递归和歧义语法的能力,你可以用c#和Java以及我认为的任何语言来实现编译器。 您可以将他们的 starter grammars 用于太多不同的语言。
编辑: ANTLR 4 是一个语言识别工具,一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。它被广泛用于构建语言、工具和框架。根据语法,ANTLR 生成可以构建和遍历解析树的解析器。 这不是图书馆。