C代码生成帮助程序包。
csnake的Python项目详细描述
csnake是一个python 3包,它帮助您从python生成c代码。
csnake为您提供了一个一致的、自以为是的api,它可以帮助您 构造c生成的python代码。 它通过提供类和函数来生成每种c语言 建造。
可能最重要的特性是能够将一个值初始化为 struct和array来自python dict和list的初始值设定项(实际上, Maps和Collections),嵌套到任意级别。
这里有一个味道:
fromcsnakeimportCodeWriter,Variable,FormattedLiteralimportnumpyasnpvar=Variable("test",primitive="struct whatever",value={"field1":[{'x':num,'y':10-num}fornuminrange(2)],"field2":{'test':range(3),'field':np.arange(6).reshape(2,3)},"field3":FormattedLiteral([30,31,32],int_formatter=hex),"field4":8,},)cw=CodeWriter()cw.add_variable_initialization(var)print(cw)
这将产生:
structwhatevertest={.field1={{.x=0,.y=10},{.x=1,.y=9}},.field2={.test={0,1,2},.field={{0,1,2},{3,4,5}}},.field3={0x1e,0x1f,0x20},.field4=8};
如图所示,numpy数组作为值受支持(同样,sympy数组也受支持)。 值可以由任意函数格式化(这里我们使用hex来 将int输出为成员field3的十六进制文本。
动机
csnake的可变生成是由一个通用的嵌入式开发驱动的 任务:将数据输入C代码。
csnake在生成用于表示如下数据的c代码时应该有帮助 位图、字体、状态机、查找表-作为数组和结构。 它还可用于循环展开、模板化等操作
csnake可以很容易地集成到构建系统中(make,cmake, 烤饼,…),也很适合 Ned Batcher’s cog。
文档
文档(sphinx)可以在 GitLab pages for this package。
示例
csnake用于我的一些尚未发布的开源嵌入式 项目。我将在这个过程中添加这些(和其他)示例。
更改日志
可以在文档中找到变更日志, here。