使用Python生成C++代码

use*_*525 9 c++ python code-generation

任何人都可以向我指出一些关于如何用Python(或Perl或任何其他Linux友好的脚本语言)编写脚本的文档,这些脚本从XML生成C++代码或从命令行生成py文件.我希望能够编写一些xml文件,然后运行一个shell命令来读取这些文件并生成带有完全内联函数的.h文件,例如流操作符,构造函数等.

小智 11

如果你只想用标准的Python东西来做这个,你可以尝试制作使用Python 3样式字符串格式的模板文件.例如,类模板可能如下所示:

{className}::{className}()
{{
}}

{className}::~{className}()
{{
}}

{className}::{className}(const {className}& other)
{{
}}

{className}& {className}::operator=(const {className}& other)
{{
    return *this;
}}
Run Code Online (Sandbox Code Playgroud)

然后你的Python代码非常简单:

d = {}
d['className'] = 'MyCPlusPlusClassName'
with open(yourTemplateFile, 'r') as ftemp:
    templateString = ftemp.read()
with open(generatedFile, 'w') as f:
    f.write(templateString.format(**d))
Run Code Online (Sandbox Code Playgroud)

当然,您可以使用相同的技巧在"className"旁边添加许多其他字段.如果你不需要像条件代码生成这样的东西,你就可以从这个简单的东西中获得很多好处.


Sat*_*ppy 0

实际上,我使用旧的“ 4GL ”开发环境做了一些类似的工作,旧的 4GL 范例上的许多模型使用 C 和 C++ 作为输出生成代码的语言。

话虽如此,4GL 几乎已经屈服于历史的尘埃堆了。问题是,当您用机器生成 C 代码时,您将失去最初使用 C 所带来的性能增益,并且代码极难维护。不妨一开始就用 Python 编写程序。