Как извлечь имя переменной или имя идентификатора во время VisitDeclStmt, VisitCompoundStmt и т. Д. - PullRequest
0 голосов
/ 19 июня 2019

Я хочу сделать анализ переменных внутри каждой функции построчно.

Я реализовал разные рекурсивные посетители 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'."

...