Java源代码解析器/生成器

我需要工具来:

  • 方便地解析Java源代码并轻松访问给定元素。

  • 轻松生成源代码文件,轻松将数据结构转换为代码

任何好的技巧,库,框架,工具? 谢谢你的帮助。

从Java 6开始,编译器在JDK中包含一个API。 通过它,您可以通过javax.lang.model API访问Java解析器的结果。 JDK5以Mirror API的forms提供了相同的function。 这里有一篇很好的介绍性文章。

我见过的最好的代码生成工具是CodeModel 。 它有一个非常简单的API,可以一次生成多个Java源文件。

如果需要解析现有源代码,请使用JavaParser 。 它为您提供基于访问者的AST访问权限。 您可以编写新代码,但很多事情都很痛苦(例如引用其他类)

如果需要生成源代码,请使用CodeModel 。 它允许您以编程方式创建类,包,方法等,并且它非常易于使用。 但是,我不认为它可以导入现有代码。

两者在各自的领域都非常棒。

我们的DMS软件再造工具包及其Java前端可以做到这一点。 它们旨在实现定制分析仪和代码生成器的构建。

DMS提供通用解析,抽象语法树(带注释)和符号表构建,树导航/检查/修改工具,以及从修改后的树中重新生成完整源代码的function。 其他function包括源到源转换规则(“如果你看到这种语法,用它替换它的语法”),模式(用于构建或识别子树),属性语法评估器,控制和数据流分析,以及调用 – 图形构造。 Java前端专门为DMS在附近1.7的Java 1.4-1.6做了所有这些。

(编辑2016年5月:现在处理Java 1.8)

DMS还设计用于处理规模:它通常用于同时处理许多编译单元(源文件),从而实现跨文件边界的分析和转换。 它还可以同时处理多种语言; DMS具有各种语言的前端 。

看看Antlr 。 其中一个例子是Java语法。