如何解决如何在 Matchcallback::onEndOfTranslationUnit() 中正确注入标头
我正在编写一个将表达式 expr1 + expr2
转换为 myFunc(expr1,expr2)
的工具。
我面临的问题是我必须注入包含 myFunc 声明的标头当且仅当我执行了一个转换,也就是说,我的 AST 匹配器回调被成功调用。
我在 Matchcallback::onEndOfTranslationUnit()
中通过检查一个简单的标志 translationOccured
来决定是否必须注入标头来执行此操作。
我可以通过使用 SourceManager::getLocForStartOfFile()
检索位置来注入标头,但有两个问题
- 它包含在所有内容之前,甚至是许可注释
- 我无法检查该标头是否已包含在内。
我的问题是
- 如何获取第一个包含的位置?我可以在没有
Lexer
的情况下向前移动位置吗? - 我可以在此阶段处理包含列表吗,还是应该使用
FrontendAction
之类的RewriteIncludesFrontend
运行第二遍?
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。