使用Eclipse JDT从Variable声明中提取所有变量名

时间:2012-02-15 07:58:37

标签: java eclipse parsing abstract-syntax-tree eclipse-jdt

我一直在使用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 ;

我想获得bc。 我知道我可以获得“b + c”字符串并根据运算符应用手动解析,但我想知道是否有更自动化的方式使用JDT

谢谢!

1 个答案:

答案 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有用。