在clang的帮助下,如何将完整的源代码作为一个字符串从语句对象中提取出来?
我正在寻找一种从语句对象中获取正确源字符串的方法。我的目标是在变量的每个赋值之后添加一行,如“_assign(&var,_uuuu-line uuu);”。所以我想做一些像在clang的帮助下,如何将完整的源代码作为一个字符串从语句对象中提取出来?,clang,llvm-clang,llvm-c++-api,Clang,Llvm Clang,Llvm C++ Api,我正在寻找一种从语句对象中获取正确源字符串的方法。我的目标是在变量的每个赋值之后添加一行,如“_assign(&var,_uuuu-line uuu);”。所以我想做一些像 x = 42; 与 x = 42; _assign(&x, __ LINE __); 我已经找到了一个有用的方法来将语句作为字符串 Stmt* s = aStatement; SourceRange sr = s->get
x = 42;
与
x = 42; _assign(&x, __ LINE __);
我已经找到了一个有用的方法来将语句作为字符串
Stmt* s = aStatement;
SourceRange sr = s->getSourceRange();
string result = Lexer::getSourceText(CharSourceRange::getCharRange(sr), TheRewriter.getSourceMgr(), LangOptions(), 0);
…但结果并不像预期的那样。
如果我像上面描述的那样输出所有的BinaryOperator语句,我会得到一些不完整的链接
SOURCE -> CLANG RESULT
*len_p = len; -> *len_p =
this->is_empty = tm_true; -> this->is_empty =
i = start_index / 8; -> i = start_index /
a_p = &(this->table_p[i]); -> a_p = &(this->table_p[i]
也许我使用了错误的函数。。。
我已经尝试过借助SourceLocation对象获得正确的源位置,但最终以无法维护的代码告终
那么有人知道一种获得完整陈述的方法吗
请帮帮我。:) 有什么成就吗?