【发布时间】:2018-04-26 10:36:14
【问题描述】:
我正在编写一个 clang 工具,但我对它很陌生,所以我遇到了一个问题,我在文档中找不到(还)。
我正在使用出色的 Matchers API 来查找一些我以后想要在 AST 中操作的节点。问题是,clang 工具实际上会解析属于源文件的所有内容,包括 iostream 等标头。 由于我的操作可能包括一些重构,我绝对不想触及解析器找到的每一个东西。
现在我正在通过比较我匹配的节点的源文件与 argv 中的参数来处理这个问题,但不用说,这感觉不对,因为它仍然解析所有 iostream代码 - 它只是在这样做时忽略它。我简直不敢相信没有办法只告诉 ClangTool 类似:
“只匹配节点,哪个位置的源文件是用户提供给这个工具的东西”
考虑一下,只有可以为每个源文件单独创建 AST 才有意义,但我确实需要它们彼此了解或共享上下文知识,而且我还没有找到一种方法来做到这一点要么。
我觉得我在这里遗漏了一些非常明显的东西。
提前感谢:)
【问题讨论】:
标签: clang llvm-clang clang-ast-matchers