在Javac中提取变量引用

时间:2015-01-04 11:47:44

标签: java compiler-construction static-analysis

我正在开发一个java程序,从com.sun.source.util扩展TreeScanner。我正在寻找像visitMethodInvocation,但是对于变量。

我想知道在调用visitVariable时是否有提取变量引用的方法?或者,请告诉我使用TreeScanner提取变量引用的最佳方法是什么。

一个简单的例子:在下面的代码中访问一个方法(visitMethod)时,我提取它的所有语句,然后调用VariableTreeScanner。我想知道我是否可以在visitvariable中提取变量引用?

public static class MethodTreeScanner extends TreeScanner<Void, Void> {
    @Override
    public Void visitMethod(MethodTree arg0, Void arg1) {
        List<? extends StatementTree> statements = arg0.getBody().getStatements();
        for(StatementTree statementTree: statements) {

            Kind statementKind = statementTree.getKind();
            if (statementKind.equals(Tree.Kind.VARIABLE)) {
                statementTree.accept(new VariableTreeScanner (compilationUnitTree, sourcePositions, arg0.getName().toString()), null);
        }
    }
}

public static class VariableTreeScanner extends TreeScanner<Void, Void> {
     @Override
     public Void visitVariable(VariableTree arg0, Void arg1) {
           // I like to extract variable references here, or let me know if there is a better way to do this.
     }
 }        

0 个答案:

没有答案