迭代clang的子树

时间:2016-06-24 02:34:33

标签: c++ recursion clang abstract-syntax-tree llvm-clang

通过访问" ="

的二元运算符,我检测到了所有存在赋值语句的地方

从那里我分别通过binaryOperator-> getLHS()和getRHS()来获得LHS和RHS

我应该如何遍历RHS中的所有节点。

目前我试图以递归方式使用Stmt::child_iterator来访问所有子节点,但似乎只是向下一级。

bool recursiveVisit (Stmt *stmt) {
  for (Stmt::child_iterator i = stmt->child_begin(), e = stmt->child_end(); i != e; ++i) {
    Stmt *currStmt = *i;
    errs() << "Hello";
    recursiveVisit(currStmt);
  }
}

我在代码中做错了吗?我的一些树只有#34;你好&#34;打印一次,它不会再往下走了。其他人甚至不打印&#34;你好&#34;一次。

0 个答案:

没有答案