2

我正在尝试在 C++ 源文件中查找分配:

x = 10;

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

提前谢谢。

4

1 回答 1

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);
于 2014-05-02T22:15:57.810 回答