我想逐行在每个函数中进行变量分析。
我实现了不同的AST递归访客,以便他们遍历函数中的每一行,例如VisitUnaryOperator,VisitCompoundStmt,VisitBinaryOperator,VisitDeclStmt。我无法在这些访问器函数中找到API的内部,该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;}的输出为第一行:'a'声明,第二行:'a'定义,第三行:'return'。”