如何从Java源代码生成AST?

Gil*_*ili 36 java compiler-construction parsing

据我所知,将Java源代码解析为AST(抽象语法树)的唯一方法是使用Java编译器树API:com.sun.source.tree

我有两个问题:

  1. JDK支持哪些com.sun.source.tree?
  2. 是否有适用于所有JDK的便携式替代品?

Bre*_*iel 23

关于你的第二个问题,除了Sun之外,还有许多Java解析器可用.这是一个小样本:

  • Eclipse的org.eclipse.jdt.core.dom包.
  • Spoon输出一个带有类型信息和变量绑定的非常好的带注释的解析树(并在内部使用Eclipse的解析器)
  • ANTLR是一个解析器生成器,但是有一些Java语法可用
  • javaparser(我还没用过)

我最好的建议是尝试每一个,看看哪个最适合您的需求.


Tof*_*eer 7

您可以使用tools.jar并使用它. javac是开源的,所以你可以抓住那些代码(假设你可以处理许可证). Antlr也有Java语法.


Jer*_*ond 7

我使用过Eclipse的AST解析器.我发现它非常好(它是Eclipse插件的一部分,因此使用它确实有意义).请参阅Exploring Eclipse的ASTParser.