使用Python生成C++代码

13 投票
8 回答
27304 浏览
提问于 2025-04-15 23:30

有没有人能告诉我哪里有关于如何用Python(或者Perl,或者其他适合Linux的脚本语言)编写脚本的文档,这些脚本可以从命令行生成C++代码,或者从XML文件生成py文件。我想写一些XML文件,然后运行一个命令,这个命令可以读取这些文件,并生成包含完整内联函数的.h文件,比如流操作符、构造函数等等。

8 个回答

1

你可以看看 Shedskin,这是一个可以把Python代码转换成C++代码的项目。

不过,根据Satanicpuppy的说法,这样做可能有点没必要,具体要看你为什么想这么做。

2

我怕你找不到一个现成的解决方案,可以直接把你的xml或python文件转换成你想要的输出。

你需要自己来实现解析、数据处理和输出。不过,不用完全自己来;这里有一些关于解析和输出的建议。

Python有两种不同的XML解析器(SAX和DOM - 向下滚动可以看到一些例子)。你需要使用其中一个来读取源文件。

为了更轻松地生成输出,你可以使用一个模板库,比如StringTemplate,或者如果数据量不大,也可以手动生成代码。

16

如果你想用普通的Python来实现这个功能,可以试着创建一些模板文件,使用Python 3的字符串格式化方式。比如,一个类的模板可能长这样:

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

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

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

{className}& {className}::operator=(const {className}& other)
{{
    return *this;
}}

然后你的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))

当然,你可以在'className'旁边添加很多其他字段,使用同样的方法。如果你不需要像条件代码生成这样的复杂功能,这种简单的方法就能满足很多需求。

撰写回答