仅在 clang 中启用句法解析

Enable only syntactic parsing in clang

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

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

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

不幸的是,没有 sema 就无法使用简单的句法分析。问题不是特别针对 clang,而是针对 C++ 的所有解析器。没有同步语义分析,any句法分析是有歧义的。该问题已在 this answer.

中得到妥善解决