在eclipse.jdt.core AST中为外部对象选择节点类型



如果我们从一个类创建一个对象,然后在编译时对其调用一个方法,并将其添加到AST树中,我们应该使用什么样的节点?

例如:new PasswordFormate().format();

AST中此节点的类型是什么

AST中此节点的子级类型是什么

您可以通过实现ASTVisitor来了解AST的"外观"。ASTVisitors有一个名为preVisit(和postVisit(的方法,您可以使用它以任何您喜欢的形式打印AST(例如,相应ASTNode对象的类(。

看看这个:http://www.eclipse.org/articles/article.php?file=Article-JavaCodeManipulation_AST/index.html

我将使用上面提到的两种方法实现ASTVisitor,并将树打印为String。然后您可以看到使用了哪些ASTNode类。

要启动已实现的AST访问者,请使用访问方法:

ASTParser astParser = ASTParser.newParser(AST.JLS8); // Or use whatever constant applies here
astParser.setKind(ASTParser.K_COMPILATION_UNIT);
astParser.setSource(unit);
astParser.setResolveBindings(true); // maybe false, depending on your use case?
CompilationUnit compilationUnit = (CompilationUnit) astParser.createAST(null);
ASTVisitor astPrintingVisitor = new ASTPrinter(); // you need to implement this
compilationUnit.visit(astPrintingVisitor);

最新更新