我有个问题。我有一个python脚本,它是使用(古老的)clang-3.4设置的,它接收头文件(.h),解析它们,并在同一行上的define之后获得所有宏(#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”是一些include指令(“-I”)和一些definition指令(“-D”)。顺便说一句,我也试着传递“-fparse all comments”、“-CC”、“-C”-这些似乎不起作用
我还必须提到,我正在使用python虚拟环境,python版本是2.7
目前没有回答
相关问题 更多 >
编程相关推荐