2014-10-01 81 views
2

我試圖找到如何使用CXXMemberCallExpr鐺查詢和CXXMemberCallExpr匹配

我已經嘗試了各種情況下的排列用鏗鏘-查詢匹配,不能得到它的工作。看起來,第一個字符比轉儲更低,例如FunctionDecl在鏗鏘查詢中變爲functionDecl

如果-ast-dump匹配器名稱與clang-query名稱相匹配 - 但猜測它們不是' t

例如。

clang-query> match CXXMemberCallExpr() 
1:2: Matcher not found: CXXMemberCallExpr 
clang-query> match cxxmemberCallExpr() 
1:2: Matcher not found: cxxmemberCallExpr 
clang-query> match CxxMemberCallExpr() 
1:2: Matcher not found: CxxMemberCallExpr 
clang-query> match CXXmemberCallExpr() 
1:2: Matcher not found: CXXmemberCallExpr 
clang-query> match cxxMemberCallExpr() 
1:2: Matcher not found: cxxMemberCallExpr 

如果人們想幫助更多的我想創造一個匹配到虛擬:: foo的(),所以基類的虛函數的所有調用。

這是我試圖用

class Virtual 
{ 
    public: 
     virtual void foo() 
     { 
     } 
}; 

class Real : public Virtual 
{ 
    public: 
     virtual void foo() 
     { 
     } 
}; 

void bar() 
{ 
    Virtual *v=new Real(); 
    Real *r=new Real(); 
    Virtual *v2=new Virtual(); 

    v->foo(); 
    r->foo(); 
    v2->foo(); 

    delete v; 
    delete r; 
    delete v2; 
} 

而且命令鐺爲全面AST(太長,粘貼)鐺-Xclang -ast突降virt.cc

回答

7

我的代碼尚未使用clang-query,但我正在查找如何將它用於我自己的項目。

看着ASTMatcher reference我覺得你想要使用的功能是memberCallExpr()CXXMemberCallExpr是一種類型,我不認爲它在查詢中使用。

0

鏗鏘已經移動 - 我嘗試稱之爲不正確的原始方式是match cxxMemberCallExpr()