如何使用Clang查找变量声明?

时间:2014-10-29 17:10:47

标签: c++ clang

我正在尝试使用Clang分析一些c ++代码。对于以下代码,我能够从AST检索Expr* x作为f-> bar(x)的参数。现在,我想找到x的声明以获得它的初始值,但我不确定我该怎么做。我还查看了http://clang.llvm.org/doxygen/classclang_1_1Expr.html中的Expr文档,但我找不到任何有用的内容。

struct foo {
  int bar(int x) { return x; }
};

int main(){
  foo *f;
  int x = 0, y = 0;
  int y = f->bar(x); 
  return 0;
}

1 个答案:

答案 0 :(得分:1)

这样的东西
dynamic_cast<const VarDecl*>(dynamic_cast<const DeclRefExpr*>(x)->getDecl())->getInit();