【发布时间】:2010-12-11 22:36:49
【问题描述】:
我正在寻找一个 java 库,它允许我解析 java 源文件并为我提供代码的 AST 表示。
实际上,我只对带有注释的类和方法定义感兴趣。我不需要方法代码的 AST。
我将这些信息用于代码生成。这就是为什么我不能先编译源文件以从生成的类文件中获取信息的原因。在我生成一些额外的类之前,代码不会编译没有错误。
【问题讨论】:
标签: java code-generation parsing
我正在寻找一个 java 库,它允许我解析 java 源文件并为我提供代码的 AST 表示。
实际上,我只对带有注释的类和方法定义感兴趣。我不需要方法代码的 AST。
我将这些信息用于代码生成。这就是为什么我不能先编译源文件以从生成的类文件中获取信息的原因。在我生成一些额外的类之前,代码不会编译没有错误。
【问题讨论】:
标签: java code-generation parsing
Java 6 支持此作为编译器的本机部分,并为其提供标准 API (javax.lang.model)。你可以阅读它here。它专为您的用例而设计(即从注释和源代码生成代码)。
【讨论】:
javax.annotation.processing.Processor
ANTLR (http://www.antlr.org/) 有一个 Java 语言解析器,它还支持 AST。
试试
options {
output=AST;
}
在*.g文件中(我没有亲自尝试过);
【讨论】:
options { output=AST; }
您可以尝试JavaCC 与 java 语言的语法文件。
【讨论】:
我认为NetBeans Javaparser 可能是您感兴趣的内容。
【讨论】:
我找到了 javaparser 项目,它解析单个 java 文件并返回格式良好的 AST。
【讨论】:
@tangens 写了有关 JavaParser 的文章,但引用了一个现已过时的项目。
2011 年有一个分支,它仍在积极维护中,现在也解析 Java 1.7 和 1.8。
你可以在那里找到它:https://github.com/javaparser/javaparser
免责声明:我是该项目的贡献者。
【讨论】: