Я пытаюсь найти назначение в исходном файле 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);