我正在寻找一个用于 Java 的解析器生成器,它执行以下操作:我的语言项目非常简单,只包含一小组标记。
以纯 READABLE Java 代码输出,以便我可以修改它(这就是我不使用 ANTLR 的原因)成熟的库,至少可以在 Java 1.4 上运行和工作
我查看了以下内容,它们可能会起作用:JavaCC、jlex、Ragel?
我正在寻找一个用于 Java 的解析器生成器,它执行以下操作:我的语言项目非常简单,只包含一小组标记。
以纯 READABLE Java 代码输出,以便我可以修改它(这就是我不使用 ANTLR 的原因)成熟的库,至少可以在 Java 1.4 上运行和工作
我查看了以下内容,它们可能会起作用:JavaCC、jlex、Ragel?
您应该使用Rats ... 这样,您不必分离词法分析器和解析器,然后如果您想扩展您的项目,这将是微不足道的。它在 java 中,然后你可以在 Java 中处理你的 AST ......
我有很好的经验SableCC。
它的工作方式与大多数生成器不同,因为您获得了一个扩展的 AST/Visitor 模型(通过继承)。
我无法从可读性方面评论其代码的“质量”(我已经有一段时间没有使用它了),但它确实具有您根本不必阅读代码的质量。只是您的子类中的代码。
看看SableCC。Sablecc 是一个易于使用的解析器生成器,它接受您的语言语法作为 EBNF,无需混合操作代码,并生成一个 Java 解析器,该解析器生成可以使用树节点访问者遍历的语法树。SableCC 功能强大,但比 ANTLR、JavaCC、yacc 等更易于使用。它也不需要单独的词法分析器。构建您的语言处理器相当于扩展从您的语法生成的访问者类,并覆盖其在解析器遇到句法构造时调用的方法。对于每个语法规则 XYZ,访问者将有一个方法 inAXYZ(Node xyz)....outAXYZ(Node xyz) 在解析器匹配规则时调用。
我们将 JavaCC 用于我们的(以及相当小的语言)并且对它感到满意。