我正在尝试在这篇文章之后尝试 eclipse jdt/ast 。
这是作为输入的java代码:
class Hello
{
int hello()
{
int a = 0, b = 3;
/* hello */
{
b = a * 3;
}
return a;
}
public static void main(String[] args)
{
int z = 0, i = 3;
/* hello */
{
i = z * 3;
}
}
}
用ASTView,它显示VariableDeclarationFragment
有相应的绑定。
但是,在这个访问者代码中VariableDeclarationFragment node
,我总是将 4 个局部变量 (a,b,z,i) 的空值作为resolveBinding()
返回值。
这有什么问题?我使用日食靛蓝。
这是获取 AST 的代码
private static CompilationUnit createCompilationUnit(String sourceFile) {
String source = readWithStringBuilder(sourceFile);
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(source.toCharArray()); // set source
parser.setResolveBindings(true); // we need bindings later on
return (CompilationUnit) parser.createAST(null /* IProgressMonitor */); // parse
}