我正在尝试在C++源文件中找到一个分配:
x = 10;
我正在使用libclang对其进行解析并遍历AST。有一个
CXCursor_BinaryOperator
代表二进制运算符。有没有一种方法可以确定它是赋值对象还是任何其他二进制运算符(例如+
或<=
或!=
)?如果不是,那么如何确定表达式是否为赋值?提前感谢。
最佳答案
以下代码可能对您有用:
CXToken *tokens;
unsigned numTokens;
CXSourceRange range = clang_getCursorExtent(cursor);
clang_tokenize(tu, range, &tokens, &numTokens);
for(unsigned i=0; i<numTokens; i++) {
CXString s = clang_getTokenSpelling(tu, tokens[i]);
const char* str = clang_getCString(s);
if( strcmp(str, "=") == 0 ) {
/* found */
}
clang_disposeString(s);
}
clang_disposeTokens(tu, tokens, numTokens);