【发布时间】:2016-09-10 15:02:47
【问题描述】:
我将 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)
对此有何澄清或帮助?
【问题讨论】:
-
为什么要打印根节点?你期待什么输出?鉴于
toString()的 Javadoc 表示“返回此节点的字符串表示,仅适用于调试目的。”这种行为可能会令人惊讶。另一方面,我想不出更自然的行为。
标签: java eclipse parsing abstract-syntax-tree