在clang的帮助下,如何将完整的源代码作为一个字符串从语句对象中提取出来?

在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

我正在寻找一种从语句对象中获取正确源字符串的方法。我的目标是在变量的每个赋值之后添加一行,如“_assign(&var,_uuuu-line uuu);”。所以我想做一些像

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对象获得正确的源位置,但最终以无法维护的代码告终

那么有人知道一种获得完整陈述的方法吗


请帮帮我。:)

有什么成就吗?