是否有Java语言的Java解析器?

时间:2009-10-31 19:48:07

标签: java code-generation parsing

我正在寻找一个允许我解析java源文件的java库,它为我提供了代码的AST表示。

实际上我只对带有注释的类和方法定义感兴趣。我不需要方法代码的AST。

我正在使用此信息进行代码生成。这就是我无法首先编译源文件以从结果类文件中获取信息的原因。在生成一些额外的类之前,代码无法编译而没有错误。

6 个答案:

答案 0 :(得分:10)

Java 6支持将其作为编译器的本机部分,并为其提供标准API(javax.lang.model)。你可以阅读它here。它专为您的用例而设计(即从注释和源代码生成代码)。

答案 1 :(得分:8)

ANTLR(http://www.antlr.org/)有一个Java语言解析器,它也支持AST。

尝试

options {
    output=AST;
}
* .g文件中的

(我没有亲自尝试过);

答案 2 :(得分:2)

我认为NetBeans Javaparser可能是您感兴趣的内容。

答案 3 :(得分:2)

您可以使用java语言的语法文件尝试JavaCC

答案 4 :(得分:2)

我找到了项目javaparser,它解析单个java文件并返回格式良好的AST。

答案 5 :(得分:2)

@tangens撰写了关于JavaParser的文章,但引用了一个现已过时的项目。

2011年有一个分支仍在积极维护,现在还解析Java 1.7和1.8。

你可以在那里找到它:https://github.com/javaparser/javaparser

免责声明:我是该项目的撰稿人。