gpt4 book ai didi

java - 将java代码解析成抽象语法树

转载 作者:太空宇宙 更新时间:2023-11-04 12:15:50 30 4
gpt4 key购买 nike

我使用 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 方法只是将 AST 转换回 Java。

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

root.accept(visitor);

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

关于java - 将java代码解析成抽象语法树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39421566/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com