c++ - 使用 clang libtooling 重命名所有出现的变量名并具有 namedDecl 句柄的最简单方法是什么?
问题描述
我想制作一个程序,为所有函数、变量、命名空间...生成抽象名称并替换当前名称。为此,我使用了 clang libtooling 文档以及他们的 AST 访问者示例。我在互联网上找到了其他有用的教程,例如: 这个重命名函数的工具示例 ;这个例子说明了如何编写匹配器和替换器。我的代码在第一个网站中有很多这样的查找器:
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;
}
所以问题是如何在该名称的上下文中替换该名称的所有出现:例如,基于正则表达式的哑替换器将替换具有相同名称的全局变量和局部变量,但使用 namedDecl 句柄应该只让我检测到一个由访客?
解决方案
推荐阅读
- python - 在python中查找一个文件中不在另一个文件中的所有数字
- php - 无法打开流:没有这样的文件或目录 Codeignter
- sql - 如何在单个查询中获取所有数据库及其各自用户列表的列表
- python-3.x - 如何使用 StringField 验证 Flask 表单中的电话号码?定义最小/最大长度不能限制用户输入文本
- android - 从视图缩小位图
- qt - 如何从 QML 中的父级访问内部项目?
- mongodb - MongoDB 根据objectId查找7天前创建的集合中的所有文档
- swiftui - Xcode 11 Beta 5 更新不分青红皂白地破坏了我的项目
- android - 有没有办法使用 Kotlin 将 CSV 文件导入 SQLite 数据库?
- android - AccountKit - 收到的消息包含(开发模式)