将java代码解析为抽象语法树

时间:2016-09-10 01:13:21

标签: java eclipse parsing abstract-syntax-tree

我使用eclipse(org.eclipse.jdt)作为AST。

我认为(?)我在线获得了一些有用的代码来获取字段的声明和用法。但是我不知道如何获得根节点。

ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(buffer.toString().toCharArray());
parser.setResolveBindings(true);

CompilationUnit cu = (CompilationUnit) parser.createAST(null);
ASTNode root = cu.getRoot();
System.out.println(root.toString());

如果我执行以下操作,那么它会打印出我放入的整个java代码,而不是根AST节点。

我不知道我是否误解了AST,但我把它想象成二分搜索树,除了一个节点可以有多个孩子。 (picture

对此有任何澄清或帮助吗?

1 个答案:

答案 0 :(得分:0)

toString方法只是将AST转换回Java。

如果要查看完整的AST结构,则需要使用ASTVisitor类并调用accept方法:

root.accept(visitor);

其中visitor是扩展ASTVisitor的类的实例。 ASTVisitor有许多preVisitvisitpostVisit方法,您可以覆盖这些方法以查看不同的AST节点。