Я хочу сделать анализ переменных внутри каждой функции построчно.
Я реализовал разные рекурсивные посетители AST, чтобы они пересекали все типы строк в функции, такие как VisitUnaryOperator, VisitCompoundStmt, VisitBinaryOperator, VisitDeclStmt. Я не могу найти API внутри этих функций посетителей, которые могли бы дать мне доступ к имени переменной и деталям таких, как определенные или объявленные, типа указателя или обычного.
class Traverser : public RecursiveASTVisitor<Traverser> {
public:
bool VisitFunctionDecl(FunctionDecl *D) {
D->dump();
return true;
}
bool VisitDeclStmt(DeclStmt *DS) {
DS->dump();
return true;
}
bool VisitBinaryOperator(BinaryOperator *BO) {
BO->dump();
return true;
}
};
"Я ожидаю, что выходные данные int foo {int a; a = 5; return a;} будут 1-й строкой: объявление 'a', 2-й строкой: 'a' определено, 3-й строкой: a 'return'."