使用 JDT Eclipse 获取 Java 方法的抽象语法树
Get Abstract Syntax tree for Java method using JDT Eclipse
我正在开发一个项目,该项目必须使用 Eclipse JDT 来解析 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 并打印其路径。
我可以获得 java 方法的打印 AST 吗?
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());
}
});
我正在开发一个项目,该项目必须使用 Eclipse JDT 来解析 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 并打印其路径。 我可以获得 java 方法的打印 AST 吗?
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());
}
});