如何重用clang AST匹配器?



我使用来自lib clang的AST匹配器来确保一些代码存在于foo函数体中。

所以我所有的匹配器都是这样开始的:
auto matcher1 = functiondecl(hasname("foo"),
hasdescendant(...))));

auto matcher2 = functiondecl(hasname("foo"),
hasdescendant(...))));

我想对functiondecl(hasname("foo"), hasdescendant(...)部分进行重复数据删除。例如,如果我想找到一个构造函数,我可以写

auto ctor = inFoo(cxxConstructorExpr());

似乎我可以用AST_MATCHER_P写我自己的匹配器,但我不知道怎么做。

你能给我一个自定义匹配器的例子来删除我的匹配器的开始部分吗?

你可以直接使用

template <class T> 
auto inFoo(T && f) 
{ 
return functiondecl(hasname("foo"), hasdescendant(std::forward<T>(f))); 
}

相关内容

  • 没有找到相关文章

最新更新