仅在clang中启用语法分析

仅在clang中启用语法分析,clang,llvm-clang,libtooling,clang-ast-matchers,Clang,Llvm Clang,Libtooling,Clang Ast Matchers,我试图实现一个使用ASTMatcher API进行语法分析的clang工具。我试图找出如何为clang指定额外的标志来禁用语义检查。我知道clang构建了一个包含系统头的巨大AST。在禁用会导致未知类型错误的语义检查时,是否有任何方法可以解析源代码?我只想分析给定文件源代码的语法完整性。到目前为止,我试图通过修改DSL来检查匹配的代码是否来自主文件来解决这个问题: cxxRecordDecl(isExpansionInMainFile()).bind("class"); 但这并不能阻止clan

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

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

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

不幸的是,如果没有语义分析,就不可能使用简单的语法分析。这个问题并不是针对CLAN,而是用C++中的所有解析器。没有同步语义分析,任何句法分析都是不明确的。此问题已在中正确讨论。

感谢您的澄清!有没有办法在ASTMatchers中生成--fsyntax-only解析树?您可以使用
SyntaxOnlyAction
:基本上这(以及--fsyntax-only)意味着您可以得到AST(通过语义分析),而不必再进一步(IR生成、优化等)。