使用Python& P解析C数组大小LibClang

时间:2015-05-05 09:41:06

标签: python c arrays parsing libclang

我目前正在使用Python来使用IsValid解析C文件。我在读取一个大小由define-directive-variable定义的C数组时遇到了问题。

使用node.get_children,我可以完美地读取以下数组:

ServerValidateEventArgs

只要用变量替换数组大小,就无法正确读取数组。无法读取以下数组代码。

false

实际上解析器在MAX停止并且在转储中存在错误:无效的sloc。

我该如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:1)

在尝试解析之前,通过C预处理器运行代码。这将导致所有预处理器符号被其值替换,即您的[MAX]将变为[60]

请注意,C代码也可以这样做:

const int three[] = { 1, 2, 3 };

即。让编译器从给定的初始化值的数量中推断出数组的长度。

或者,从C99开始,即便如此:

const int hundred[] = { [99] = 4711 };

所以一个天真的方法可能仍然会破坏,但我当然不了解你正在使用的解析器的功能。

答案 1 :(得分:0)

分号;分号;在define指令中导致错误的方式。