我需要工具:
方便地解析Java源代码并轻松访问给定元素。
轻松生成源代码文件,轻松将数据结构转换为代码
任何好的提示,库,框架,工具?谢谢你的帮助。
答案 0 :(得分:19)
从Java 6开始,编译器在JDK中包含一个API。通过它,您可以通过javax.lang.model
API访问Java解析器的结果。 JDK5以Mirror API的形式提供了相同的功能。有一篇很好的介绍性文章here。
我见过的最好的代码生成工具是CodeModel。它有一个非常简单的API,可以一次生成多个Java源文件。
答案 1 :(得分:18)
如果您需要解析现有的源代码,请使用JavaParser。它为您提供基于访问者的AST访问权限。您可以编写新代码,但很多事情都很痛苦(例如引用其他类)
如果您需要使用CodeModel生成源代码。它允许您以编程方式创建类,包,方法等,并且它非常易于使用。但是,我认为它不能导入现有代码。
两者在各自的领域都非常棒。
答案 2 :(得分:1)
我们的DMS Software Reengineering Toolkit及其Java Front End可以执行此操作。它们旨在实现定制分析器和代码生成器的构建。
DMS提供通用解析,抽象语法树(带注释)和符号表构建,树导航/检查/修改功能,以及从修改后的树中重新生成完整源代码的功能。其他功能包括源到源转换规则(“如果你看到这种语法,用它替换它的语法”),模式(用于构建或识别子树),属性语法评估器,控制和数据流分析,以及调用 - 图形构造。 Java Front End专门为DMS做了所有这些操作,用于附近1.7的Java 1.4-1.6。
(2016年5月编辑:现在处理Java 1.8)
DMS也设计用于处理规模:它通常用于同时处理许多编译单元(源文件),从而实现跨文件边界的分析和转换。它还可以同时处理多种语言; DMS有front ends for a wide variety of languages。
答案 3 :(得分:0)
结帐Antlr。其中一个例子是Java语法。