0

我正在尝试实现一个使用 ASTMatcher API 进行句法分析的 clang 工具。我正在尝试找出如何为 clang 指定额外的标志以禁用语义检查。我知道 clang 构建了一个巨大的 AST,其中包括系统头文件。有什么方法可以在禁用导致未知类型错误的语义检查的同时解析源代码?我只想分析给定文件的源代码的语法完整性。到目前为止,我已经尝试通过修改 DSL 来检查匹配代码是否来自主文件来解决这个问题:

cxxRecordDecl(isExpansionInMainFile()).bind("class");

但这并不能阻止 clang 查看头文件。

4

1 回答 1

0

不幸的是,没有 sema 就不可能使用简单的句法分析。问题不在于 clang,而在于所有 C++ 解析器。没有同步语义分析,任何句法分析都是模棱两可的。此答案已正确涵盖该问题。

于 2020-01-28T08:44:40.030 回答