我有興趣使用Python以遞歸方式解析C頭文件(只有結構和變量聲明)。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工具?我也想打印出數據類型。
在解析文件中解析「{」和「,」和「}」似乎有點複雜,並且能夠將其與結構的變量和子元素進行匹配。將值與正確的代碼名稱相匹配似乎很困難,因爲順序非常重要。我還假定父/子/孫子變量需要遞歸。
感謝, 斯內德
可能有用:https://fedorahosted.org/gcc-python-plugin/ – bstpierre