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