问题描述
我遇到了问题。我有一个使用(古老的)clang-3.4 设置的 python 脚本,它接收头文件 (.h),解析它们并在定义之后获取所有宏 (#define
) 和注释同一行。
例如解析了完整的以下行:
#define SOME_DEFINE 10 /* IN_SomeDefine */
问题是,使用较新版本的 clang(在我的情况下,clang-11),这不再起作用,我想以某种方式移植它。
脚本中的相关代码部分是:
index = Index.create()
tu = index.Parse(None,[filename] + args,options=TranslationUnit.PARSE_DETAILED_PROCESSING_RECORD)
macro_defs = [m for m in tu.cursor.get_children()
if m.kind in (CursorKind.MACRO_INSTANTIATION,CursorKind.MACRO_DEFinitioN)]
for macro in macro_defs:
tokens = list(macro.get_tokens())
# process tokens here
以前,“宏”光标具有宏定义行中的所有标记,因此标记为:#define
、SOME_DEFINE
和 /* IN_SomeDefine */
。
现在,使用最新的 clang 版本,令牌只有:#define
和 SOME_DEFINE
。问题是我需要在光标中解析整行。
我需要将宏值和注释“值”配对...基本上,从我的示例来看,我将有:key = 10 和 value = IN_SomeDefine。
任何帮助将不胜感激 - 我已经四处搜索,但似乎没有找到任何解决问题的方法。
在“index.parse”指令中传递的“args”是一些包含指令(“-I”)和一些定义指令(“-D”)。附注我也尝试过传递“-fparse-all-comments”、“-CC”、“-C”——这些似乎不起作用。
我还要提一下,我在 python virtual env 中工作,python 版本是 2.7 。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)