Я пишу инструмент для перезаписи файлов C. Некоторые из этих файлов являются очень старыми устаревшими файлами, в которых в начале каждой функции объявляются неинициализированные локальные переменные. Мне нужно разработать средство сопоставления AST и соответствующий MatchCallback, чтобы найти позицию сразу после последней неинициализированной переменной в функции, где я могу разместить специальный код.
В качестве плюса, подробнее выше на сегодняшний день код C со смесью как инициализированных, так и неинициализированных переменных в начале functionDecl, я хотел бы найти позицию сразу после открытия '{' функции.
Пока что Я определил потенциальное средство сопоставления типов clang-запроса, которое может найти неинициализированные локальные переменные, следующие за функцией decl. Это должно стать хорошей отправной точкой для поиска решения.
Вот обработчик Entry, который я использую для обработки MatchCallback. Мне нужна помощь в методе run, чтобы найти место, куда я могу добавить свой собственный код.
class EntryHandler : public MatchFinder::MatchCallback {
public:
explicit EntryHandler(Rewriter& rewriter)
: mRewriter(rewriter)
{}
//! This is where the magic happens.
void run(const MatchFinder::MatchResult &result) override {
if (const auto* FD = result.Nodes.getNodeAs("func")) {
// This will be called for each function.
const auto functionName = FD->getNameInfo().getAsString();
const auto VD = result.Nodes.getNodeAs("uninitVar");
const auto uninitializedVariableName = VD->getNameAsString();
// I NEED HELP HERE
// Retrieve all uninitialized variables in the function.
//for (const auto& next : result.Nodes.getMap()) {
// const auto key = next.first;
//}
//const auto next = result.Nodes.getNodeAs("uninitVar");
//for (const auto *VD : Vars) {
// // This will be called for each variable declaration in the function.
// std::cout
Подробнее здесь: https://stackoverflow.com/questions/783 ... n-variable
LibTooling — последняя унитаризованная функциональная переменная сопоставителя AST ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение