获取CXCursor_BinaryOperator的运算符类型

时间:2014-04-22 18:48:20

标签: c++ clang abstract-syntax-tree libclang

我正在尝试在C ++源文件中找到一个赋值:

x = 10;

我正在使用libclang来解析它并遍历AST。有一个CXCursor_BinaryOperator代表二元运算符。有没有办法确定它是一个赋值还是任何其他二元运算符(如+<=!=)?如果没有,那么我如何确定表达式是否为赋值?

事先提前。

1 个答案:

答案 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);