11

私は、Python プログラムから C プログラムを生成するコード トランスレータを作成するように依頼されました。この問題にどのように取り組むことができるか、それとも可能ですか?

4

4 に答える 4

25

シェドスキン: 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/

Cython: 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/

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

于 2010-03-26T18:02:22.067 に答える
7

ここで根本的な問題があります。基本的に、C をバックエンドとして使用する Python コンパイラを作成する意図なのか、それともプログラムを C に変換し、その後 C を維持する意図なのか?

出力として (本当に醜い) C を生成するコンパイラーを作成することは、おそらく簡単ではありません。コンパイラーがそうであることはめったになく、Python のコードを生成することは、他の多くの言語よりも困難です (特に、動的型付けは困難です)。コンパイルして、少なくとも非常に効率的な出力にします)。OTOH、少なくともパーサーは一部の言語よりもはるかに簡単になります。

「翻訳する」とは、Python を読みやすく保守しやすい C に変換することを意味する場合、それはまったく別の問題です。控えめに言っても、それはかなり難しいことです。現実的には、機械翻訳にそれほどの価値があるとは思えません。適切な機械翻訳が期待できるほど、Python と C で問題にアプローチする方法には、あまりにも大きな違いがあります。

于 2010-03-26T18:07:55.207 に答える
4

誰も Cython について言及していないとは信じがたいです -- 私の意見では、この種の仕事の事実上の標準です: http://www.cython.org/

于 2010-03-26T18:46:44.553 に答える
3

シェドスキンをご覧ください。それはまさにそれを行います (まあ、C++ に対して、そして Python とそのモジュールのサブセットに対して)。しかし、この特定の問題にどのようにアプローチするかについて、貴重な洞察を提供できるはずです (ただし、独自の問題を作成することは確かに簡単な作業ではありません)。

于 2010-03-26T17:51:57.467 に答える