2015-10-19 64 views
0

是否可以使用綁定串上一個表達式中的其他類似下面的代碼:寫作鏘AST匹配器

expr(declRefExpr().bind("id"), hasDesendent(declRefExpr(has("id"))); 

基本上使用一個節點的綁定ID字符串找到其他節點。

回答

0

是的,有可能使用equalsBoundNode

用法:

expr(declRefExpr().bind("id"), hasDesendent(declRefExpr(equalsBoundNode("id"))); 
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; 

這段代碼的目的是來比較綁定變量的回調函數incVarNamecondVarName節點。