我想制作一个程序,为所有函数,变量,命名空间...提取抽象名称,并替换当前名称。为此,我使用了clang libtooling文档及其AST访问者示例。我发现了其他有用的教程 在互联网上,例如: This example of a tool that renames a function ; This example of how to write a matcher and replacer。 我的代码在第一个网站中有很多类似的查找器:
virtual bool VisitVarDecl(VarDecl *func) {
errs() << func->getNameAsString()<<" ";
auto a = func->getType();
errs() << a.getAsString()<<"space";
//also tried this with no success
Twine a = Twine("works");
func->setName(a);
return true;
}
所以问题是我该如何在该名称的上下文中替换该名称的所有出现:例如,基于regex的哑巴替换器将用相同的名称替换全局变量和局部变量,但使用namedDecl句柄应该只能让我访客发现的那个?