如何使用clang工具修改forStmt条件?



我想这样修改C源代码:我想修改AST中的循环条件,我该怎么做?

例如:

for(int i = 0; i < 10; i ++){...}

更改为:

for (int i = 0; i < 1; i ++){...}

我在clang工具中通过ASTMatcher从AST获得forStmt,并且我也得到了条件:

auto cond = forstmt -> getCond();
if(cond){
if(auto bo = dyn_cast<BinaryOperator>(cond)){
auto borhs = bo -> getRHS();
if (auto condvar = dyn_cast<IntegerLiteral>(borhs)){
// how can i modify this condvar and dump ast to out.ast file?
string var_value = condvar -> getValue().toString(10, 1);
}
}
}

我从Microsoft c++团队博客探索Clang工具第3部分:使用Clang -tidy重写代码

使用clang-tidy并编写clang-tidy fix:CreatReplacement

相关内容

  • 没有找到相关文章

最新更新