问题描述
我正在编写一个将表达式 expr1 + expr2
转换为 myFunc(expr1,expr2)
的工具。
我面临的问题是我必须注入包含 myFunc 声明的标头当且仅当我执行了一个转换,也就是说,我的 AST 匹配器回调被成功调用。
我在 Matchcallback::onEndOfTranslationUnit()
中通过检查一个简单的标志 translationOccured
来决定是否必须注入标头来执行此操作。
我可以通过使用 SourceManager::getLocForStartOfFile()
检索位置来注入标头,但有两个问题
- 它包含在所有内容之前,甚至是许可注释
- 我无法检查该标头是否已包含在内。
我的问题是
- 如何获取第一个包含的位置?我可以在没有
Lexer
的情况下向前移动位置吗? - 我可以在此阶段处理包含列表吗,还是应该使用
FrontendAction
之类的RewriteIncludesFrontend
运行第二遍?
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)