我一直在使用Eclipse JDT分析源代码。 目前,我有一个程序能够获取一些代码,将其转换为AST,然后进行一些注释。
现在,我想要做的是,对于每个变量声明,获取所涉及的所有变量。例如:
int a = 10;
简单易变a
但在以下情况中:
int a = b +c ;
我需要分析正确的部分并提取每个变量。 我到现在所拥有的是:
对于每个变量声明:
//get the fragment
List<VariableDeclarationFragment> ff = vds_p.fragments();
//foreach fragment, get the name of the variable and the value associated
for(VariableDeclarationFragment f_p : ff){
SimpleName name = f_p.getName();
Expression exp = f_p.getInitializer();
ChildPropertyDescriptor exp_prop = f_p.getInitializerProperty();
System.out.println("name: "+name);
System.out.println("expression: "+exp);
}
所以,我能够获得变量的名称和分配给它的表达式。 现在,这是我的问题:
如何使用JDT分析赋给变量的表达式,例如
int a = b + c ;
我想获得b
和c
。
我知道我可以获得“b + c”字符串并根据运算符应用手动解析,但我想知道是否有更自动化的方式使用JDT
谢谢!
答案 0 :(得分:3)
基本上,您正在寻找具有'org.eclipse.jdt.core.dom.IVariableBinding'的'org.eclipse.jdt.core.dom.SimpleName'节点。您应该创建一个'org.eclipse.jdt.core.dom.ASTVisitor'并覆盖'org.eclipse.jdt.core.dom.ASTVisitor.visit(SimpleName)'。然后使用ASTVisitor分析变量声明的右侧表达式。
您可能会发现this article的“如何查找AST节点”部分非常有用。您可能还会发现AST View plugin有用。