我使用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)
对此有任何澄清或帮助吗?
答案 0 :(得分:0)
toString
方法只是将AST转换回Java。
如果要查看完整的AST结构,则需要使用ASTVisitor
类并调用accept
方法:
root.accept(visitor);
其中visitor
是扩展ASTVisitor
的类的实例。 ASTVisitor
有许多preVisit
,visit
和postVisit
方法,您可以覆盖这些方法以查看不同的AST节点。