开发者

Writing code translator from Python to C? [closed]

开发者 https://www.devze.com 2022-12-24 23:54 出处:网络
Closed. This question needs to be more focused. It is not currently accepting answers. 开发者_StackOverflow社区
Closed. This question needs to be more focused. It is not currently accepting answers.
开发者_StackOverflow社区

Want to improve this question? Update the question so it focuses on one problem only by editing this post.

Closed 7 years ago.

Improve this question

I was asked to write a code translator that would take a Python program and produce a C program. Do you have any ideas how could I approach this problem or is it even possible?


Shedskin: http://code.google.com/p/shedskin/

Boost Python: http://www.boost.org/doc/libs/1_42_0/libs/python/doc/index.html

PyCXX: http://cxx.sourceforge.net/

Cython: http://www.cython.org/

from http://wiki.python.org/moin/compile%20Python%20to%20C, there's a list of related projects.

Pyrex: http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/

psyco: http://psyco.sourceforge.net/

RPython: http://code.google.com/p/rpython/


There's a fundamental question here: is the intent to basically create a Python compiler that uses C as a back-end, or to convert the program to C and maintain the C afterward?

Writing a compiler that produces (really ugly) C as its output probably isn't trivial -- a compiler rarely is, and generating code for Python will be more difficult than for a lot of other languages (dynamic typing, in particular, is hard to compile, at least to very efficient output). OTOH, at least the parser will be a lot easier than for some languages.

If by "translating", you mean converting Python to C that's readable and maintainable, that's a whole different question -- it's substantially more difficult, to put it mildly. Realistically, I doubt any machine translation will be worth much -- there are just too large of differences in how you normally approach problems in Python and C for there to be much hope of a decent machine translation.


It's hard to believe that nobody has mentioned Cython -- pretty much the de facto standard for this type of job, in my opinion: http://www.cython.org/


Have a look at Shedskin. It does exactly that (well, to C++ and for a subset of Python and its modules). But it should be able to provide valuable insight as how to approach this particular problem (although writing your own will certainly not be a trivial task).

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号