gpt4 book ai didi

c++ - 在Clang中,编写自定义ASTMatcher时可以访问SourceManager吗?

转载 作者:行者123 更新时间:2023-12-02 10:24:06 39 4
gpt4 key购买 nike

我正在尝试通过使其更加优雅来升级AutoFFI项目,并更广泛地使用Clang的ASTMatchers。我想创建一个对指定文件路径进行过滤的匹配器。是否可以做这样的事情,或者我需要在匹配器之外添加自定义逻辑才能使它起作用?据我所知,没有办法获取SourceManager并使用它来创建FullSourceLoc,但是也许我缺少了一些东西。

一些相关链接:

  • https://clang.llvm.org/doxygen/classclang_1_1FullSourceLoc.html
  • https://github.com/llvm-mirror/clang/blob/f3b7928366f63b51ffc97e74f8afcff497c57e8d/include/clang/ASTMatchers/ASTMatchersMacros.h#L28

  • 如果有人可以告诉我这是否是对Clang的ASTMatcher API的限制,我将不胜感激!

    最佳答案

    没关系,我通过查看isExpansionInMainFile的来源找到了答案:

    AST_POLYMORPHIC_MATCHER(isExpansionInMainFile,
    AST_POLYMORPHIC_SUPPORTED_TYPES(Decl, Stmt, TypeLoc)) {
    auto &SourceManager = Finder->getASTContext().getSourceManager();
    return SourceManager.isInMainFile(
    SourceManager.getExpansionLoc(Node.getBeginLoc()));
    }

    原来,我错过了 getASTContext中的 MatchFinder,该代码可以保留在源代码管理器中。

    关于c++ - 在Clang中,编写自定义ASTMatcher时可以访问SourceManager吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53851704/

    39 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com