我正在尝试在C ++源文件中找到一个赋值:
x = 10;
我正在使用libclang来解析它并遍历AST。有一个CXCursor_BinaryOperator
代表二元运算符。有没有办法确定它是一个赋值还是任何其他二元运算符(如+
或<=
或!=
)?如果没有,那么我如何确定表达式是否为赋值?
事先提前。
答案 0 :(得分:1)
以下代码可能适合您:
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);