得到变量声明

时间:2010-02-24 08:42:37

标签: java eclipse-plugin

我为编译单元创建了一个ASTParser类型的解析器。我想使用这个解析器列出这个特定compilationunit中存在的函数中的所有变量声明。我应该使用ASTVisitor吗?如果是这样,还有其他方式吗?帮助

1 个答案:

答案 0 :(得分:2)

您可以尝试关注this thread

你应该看一下org.eclipse.jdt.core插件,特别是ASTParser课程 只是为了启动解析器,以下代码就足够了:

ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT); // you tell parser, that source is whole java file. parser can also process single statements
parser.setSource(source);
CompilationUnit cu = (CompilationUnit) parser.createAST(null); // CompilationUnit here is of type org.eclipse.jdt.core.dom.CompilationUnit  
// source is either char array, like this:

public class A { int i = 9; int j; }".toCharArray()

//org.eclipse.jdt.core.ICompilationUnit type, which represents java source files

在工作区中。

  在构建AST之后

,您可以使用访问者遍历它,扩展ASTVisitor,如下所示:

cu.accept(new ASTVisitor() {
  public boolean visit(SimpleName node) {
    System.out.println(node); // print all simple names in compilation unit. in our example it would be A, i, j (class name, and then variables)
    return true;
  }
});

this thread

中的更多详细信息和代码示例
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource(compilationUnit);
parser.setSourceRange(method.getSourceRange().getOffset(), method.getSourceRange().getLength());
parser.setResolveBindings(true);
CompilationUnit cu = (CompilationUnit)parser.createAST(null);
cu.accept(new ASTMethodVisitor());