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

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

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

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

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

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

尝试

 options { output=AST; } 

在* .g文件中(我没有亲自尝试过);

您可以使用Java语言的语法文件来尝试JavaCC 。

我认为NetBeans Javaparser可能是你会感兴趣的东西。

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

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

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

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

免责声明:我是该项目的贡献者。