我被要求编写一个代码翻译器,它将接收一个 Python 程序并生成一个 C 程序。你有什么想法我怎么能解决这个问题,甚至有可能吗?
4 回答
蜕皮:http ://code.google.com/p/shedskin/
提升 Python: http: //www.boost.org/doc/libs/1_42_0/libs/python/doc/index.html
PyCXX:http ://cxx.sourceforge.net/
赛通: http ://www.cython.org/
从http://wiki.python.org/moin/compile%20Python%20to%20C,有一个相关项目的列表。
耐热玻璃: http: //www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
精神科:http : //psyco.sourceforge.net/
这里有一个基本问题:基本上是创建一个使用 C 作为后端的 Python 编译器,还是将程序转换为 C 并在之后维护 C?
编写一个产生(非常丑陋的)C 作为其输出的编译器可能不是微不足道的——编译器很少是这样的,并且为 Python 生成代码将比为许多其他语言更困难(特别是动态类型很难编译,至少到非常有效的输出)。OTOH,至少解析器会比某些语言容易得多。
如果通过“翻译”,您的意思是将 Python 转换为可读且可维护的 C,那是一个完全不同的问题——委婉地说,这要困难得多。实际上,我怀疑任何机器翻译都值多少钱——在 Python 和 C 语言中处理问题的方式存在太大差异,因此对一个体面的机器翻译抱有很大希望。
很难相信没有人提到 Cython——在我看来,这几乎是这类工作的事实上的标准:http ://www.cython.org/
看看Shedskin。它正是这样做的(嗯,对于 C++ 和 Python 及其模块的子集)。但它应该能够提供关于如何解决这个特定问题的有价值的见解(尽管编写自己的任务肯定不是一件容易的事)。