我正在寻找一种从语句对象中获取正确源代码的方法。我的目标是添加像" _assign(& var,__ LINE __);"每次赋值给变量之后。所以我想用类似
的方法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语句,我会得到一些不完整的linke ...
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对象的帮助下获得正确的源位置,但最终会得到不可维护的代码。
所以有人知道获得完整声明的方法吗?
请帮帮我。 :)