【问题标题】:Extracting all variable names from Variable declarations using Eclipse JDT使用 Eclipse JDT 从变量声明中提取所有变量名
【发布时间】:2012-02-15 07:58:36
【问题描述】:

我一直致力于使用 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

谢谢!

【问题讨论】:

  • 我会在 eclipse.org 的 JDT 论坛上发布这个问题。 JDT 提交者在场并会回答。

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


【解决方案1】:

本质上,您正在寻找具有“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 很有用。

【讨论】:

    猜你喜欢
    • 2020-08-07
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多