Извлечение всех имен переменных из объявлений переменных с использованием Eclipse JDT - PullRequest
1 голос
/ 15 февраля 2012

Я работал над анализом исходного кода с использованием 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

Спасибо!

1 Ответ

3 голосов
/ 17 февраля 2012

По сути, вы ищете узлы '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» из этой статьи полезным.Вы также можете найти плагин AST View полезным.

...