目前Clang的Traverse *函数仅接受AST节点作为唯一参数。我想知道是否有任何方法可以将一个或多个参数传递给clang的ASTVisitor中的Traverse *函数。
例如,让我说我有一个BinaryOperator
,当我在LHS和RHS上调用TraverseStmt
时,我希望传递一些状态:
TraverseStmt(LHS, state);
...
TraverseStmt(RHS, state);
有什么方法可以实现这个目标吗?
避免传递参数的一种方法是在ASTVisitor对象中维护一个本地堆栈。但那太丑了!
感谢。