是否可以在另一个表达式上使用绑定字符串,如下面的代码:
expr(declRefExpr().bind("id"), hasDesendent(declRefExpr(has("id")));
基本上使用一个节点的bind id字符串来查找另一个节点。
答案 0 :(得分:2)
比较2个节点的最佳方法是绑定不同的id string
,然后在回调方法中对它们进行比较。
这在tutorial中有解释。
在上面的链接中,您可以找到以下代码:
const VarDecl *IncVar = Result.Nodes.getNodeAs<VarDecl>("incVarName");
const VarDecl *CondVar = Result.Nodes.getNodeAs<VarDecl>("condVarName");
if (!areSameVariable(IncVar, CondVar))
return;
此代码旨在比较回调函数中变量incVarName
和condVarName
中绑定的节点。
答案 1 :(得分:2)
是的,可以使用 equalsBoundNode
用法:
expr(declRefExpr().bind("id"), hasDesendent(declRefExpr(equalsBoundNode("id")));