编写从Python到C的代码转换器?
我被要求写一个代码翻译器,能够把Python程序转换成C语言程序。你有什么想法可以帮我解决这个问题吗?或者说,这个事情真的可行吗?
4 个回答
很难相信居然没有人提到Cython——在我看来,这几乎是这类工作的标准选择:http://www.cython.org/
这里有个基本的问题:你是想创建一个用C语言作为后端的Python编译器,还是想把程序转换成C语言并且之后维护这个C代码呢?
写一个输出(非常丑陋的)C代码的编译器可能并不简单——编译器通常都不简单,而且生成Python代码会比很多其他语言更困难(尤其是动态类型,这让编译变得很复杂,至少要生成高效的输出是很难的)。不过,至少解析器的部分会比某些语言简单得多。
如果你说的“翻译”是指把Python代码转换成可读且易于维护的C代码,那就完全是另一个问题——说实话,这要困难得多。实际上,我怀疑任何机器翻译会有太大价值——因为在Python和C语言中,解决问题的方法差异太大,所以很难有一个好的机器翻译。
Shedskin: http://code.google.com/p/shedskin/ 是一个工具,可以把Python代码转换成C++代码。
Boost Python: http://www.boost.org/doc/libs/1_42_0/libs/python/doc/index.html 是一个库,帮助你在C++中使用Python的功能。
PyCXX: http://cxx.sourceforge.net/ 是一个库,让你更方便地在C++和Python之间进行交互。
Cython: http://www.cython.org/ 是一个工具,可以让你把Python代码编译成C代码,从而提高运行速度。
在这个链接 http://wiki.python.org/moin/compile%20Python%20to%20C 上,你可以找到相关项目的列表。
Pyrex: http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/ 是一个工具,帮助你把Python代码转换成C代码。
psyco: http://psyco.sourceforge.net/ 是一个Python加速器,可以让你的Python程序跑得更快。
RPython: http://code.google.com/p/rpython/ 是一个用于创建动态语言的工具,主要用于实现Python的一个变种。