有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用JDT Eclipse解析Java方法的抽象语法树

我正在从事一个项目,该项目必须使用EclipseJDT来解析java方法并为它们生成抽象语法树 我编写了以下代码:

String method ="\n"+
    "   public void sayHello() {\n"+
    "   System.out.println(\"Hello \"+name+\"!\");\n"+
    "   }\n";
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(method.toCharArray());
parser.setResolveBindings(true);
parser.setBindingsRecovery(true);
CompilationUnit unit = (CompilationUnit)parser.createAST(null);

这个片段只是创建了AST,但我被卡住了!! 我想访问任何java方法的AST并打印其路径。 我可以得到打印AST for java方法吗


共 (1) 个答案

  1. # 1 楼答案

    Eclipse AST(实际上是大多数AST)广泛利用访问者模式

    因此,从你的角度来看,你所要做的就是实例化一个访问者,让它访问编译单元。然后它会自动导航字段、方法、注释

    对于您的具体需求,我认为您可以从以下代码开始:

    unit.accept(new ASTVisitor() {
    
        @Override
        public boolean visit(MethodDeclaration node) {
            Type ownerTypeNode = (Type) node.getParent();
            System.out.println("Found method " + node.getName().getFullyQualifiedName() " + " in type " + ownerTypeNode.getName().getFullyQualifiedName());
        }
    });