Java 使用EclipseJDT从变量声明中提取所有变量名
我一直在使用EclipseJDT分析源代码。 目前,我有一个程序,可以获取一些代码,将其转换为AST,然后进行一些注释 现在,我想做的是,对于每个变量声明,获取所有涉及的变量。例如:Java 使用EclipseJDT从变量声明中提取所有变量名,java,eclipse,parsing,abstract-syntax-tree,eclipse-jdt,Java,Eclipse,Parsing,Abstract Syntax Tree,Eclipse Jdt,我一直在使用EclipseJDT分析源代码。 目前,我有一个程序,可以获取一些代码,将其转换为AST,然后进行一些注释 现在,我想做的是,对于每个变量声明,获取所有涉及的变量。例如: int a = 10; 这很简单,只是变量a 但在以下情况下: int a = b +c ; 我需要分析正确的部分并提取每个变量。 到目前为止,我所拥有的是: 对于每个变量声明: //get the fragment List<Var
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);
}
我想得到b
和c
。
我知道我可以得到“b+c”字符串并基于操作符应用手动解析,但我想知道是否有一种更自动化的方法使用JDT
谢谢 实际上,您正在寻找具有“org.eclipse.jdt.core.dom.SimpleName”节点的“org.eclipse.jdt.core.dom.IVariableBinding”。您应该创建一个“org.eclipse.jdt.core.dom.ASTVisitor”并重写“org.eclipse.jdt.core.dom.ASTVisitor.visit(SimpleName)”。然后使用ASTVisitor分析变量声明的右侧表达式
您可能会发现“如何查找AST节点”部分很有用。您可能也会发现这个问题很有用。我会在eclipse.org的JDT论坛上发布这个问题。JDT提交者就在那里,他们会回答这个问题。
int a = b + c ;