dimanche 4 janvier 2015

Extract variable references in Javac


I am developing a java program extends TreeScanner from com.sun.source.util. I am looking for sth like visitMethodInvocation, but for variable.


I was wondering if there is a way to extract variable references when visitVariable is called? Or please let me know what is the best way to extract variable references using TreeScanner.


A simple example: In the below code when a method is visited (visitMethod), I extract all its statements and then call VariableTreeScanner. I was wondering if I can extract variable references in 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) {

String statementKind = statementTree.getKind().toString();
if (statementKind.equals(Tree.Kind.VARIABLE.toString())) {
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.
}
}




Aucun commentaire:

Enregistrer un commentaire