Я хочу создать программу, которая создает абстрактные имена для всех функций, переменных, пространств имен ... и заменяет текущие. Для этой цели я использовал документацию 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 должно получить только меня обнаруженный посетителем?