Получить тип оператора для CXCursor_BinaryOperator

Я пытаюсь найти назначение в исходном файле C ++:

x = 10;

Я использую libclang, чтобы разобрать его и пройти AST. Есть CXCursor_BinaryOperator это представляет бинарные операторы. Есть ли способ определить, является ли это присваивание или любой другой бинарный оператор (например, + или же <= или же !=)? Если нет, то как я могу определить, является ли выражение присваиванием или нет?

Спасибо заранее.

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);
1

Другие решения


По вопросам рекламы [email protected]