我想这样修改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