繁体   English   中英

Python C头文件解析和反向初始化

[英]Python C Header File Parsing and Reverse Initialization

我有兴趣以递归方式使用Python解析C头文件(仅结构和变量声明)。

这是我正在寻找的一个例子。 假设如下:

typedef struct
{
   double value[3];
} vector3;

typedef struct
{
       unsigned int variable_a[4][2];
       vector3 variable_b[5];
} my_example;

另外,假设有一个包含初始化值的文件,例如:

ANCHOR_STRUCT(my_example) = 
{
    // variable_a
    { {1,2}, {3, 4}, {5,6} ,{7,8}   },

    // variable_b
    { {1.0,2.0,3.0}, {4.0,5.0,6.0}, {7.0,8.0,9.0}, {10.0,11.0,12.0}, {13.0,14.0,15.0}  }
}

我希望能够解析这两个文件,并能够生成如下报告:

OUTPUT:
my_example.variable_a[0][0]   = 1
my_example.variable_a[0][1]   = 2
my_example.variable_a[1][0]   = 3
my_example.variable_a[1][1]   = 4
my_example.variable_a[2][0]   = 5
my_example.variable_a[2][1]   = 6
my_example.variable_a[3][0]   = 7
my_example.variable_a[3][1]   = 8

my_example.variable_b[0].value[0] = 1
my_example.variable_b[0].value[1] = 2
my_example.variable_b[0].value[2] = 3
my_example.variable_b[1].value[0] = 4
my_example.variable_b[1].value[1] = 5
my_example.variable_b[1].value[2] = 6
my_example.variable_b[2].value[0] = 7
my_example.variable_b[2].value[1] = 8
my_example.variable_b[2].value[2] = 9
my_example.variable_b[3].value[0] = 10
my_example.variable_b[3].value[1] = 11
my_example.variable_b[3].value[2] = 12
my_example.variable_b[4].value[0] = 13
my_example.variable_b[4].value[1] = 14
my_example.variable_b[4].value[2] = 15

我希望能够在不运行代码的情况下报告此情况(仅通过解析)。 是否存在可以解析和打印此信息的Python工具。 我也想打印出数据类型。

在intiailization文件中解析“{”和“,”和“}”并且能够将其与结构的变量和子项匹配似乎有点复杂。 将值与正确的代码名称匹配似乎很困难,因为顺序非常重要。 我还假设父/子/孙子变量需要递归。

谢谢,奈德

除非您将自己局限于简单的数据类型,否则这将变得非常复杂。 例如,您是否要处理任意数据类型,例如嵌套类?

你说你不想运行c-sources,但是你要做的就是建立自己的c-interpreter! 你确定要重新发明轮子吗? 如是...

您需要做的第一件事就是解析文件。 您可以使用解析器+词典分析器,如PLY 获得解析树后,您可以分析变量是什么以及它们的预期值是什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM