2

PythonからGoへの基本的なソースコードコンバーターを作成するために、Pythonソースを解析したいと思います。

  • どのモジュールを使用する必要がありますか?
  • 先に進むべきかどうか?
  • 続行する必要がある場合、どのように?
4

4 に答える 4

13

言語サービスパッケージ、特にastを見てください。

私の推測では、構文解析とコード生成の両方の手法をまだしっかりと理解していない場合、これは着手するのが難しいプロジェクトになるでしょう。

幸運を!

于 2009-11-24T11:01:07.387 に答える
3

「先に進むべきか、それともうまくいかないか」という質問については、そもそもなぜこれを行いたいのですか?

それが純粋に学習する演習である場合は、それが価値があるかどうかを私たちに尋ねる必要はありません。あなたは学びたいので、すぐに行ってください。

それが実用的なツールであることが意図されているなら、私の提案はそれをしないことです。このような変換を実行するための強力なツールは便利かもしれませんが、それほど遠くまでは行かないと思います。そのことを念頭に置いて、GoでPythonコードを手動で書き直す方がおそらくより有益です。

これは、Goにコンパイルすることに実際のメリットがあることを前提としています。現在のテストでは、StacklessPythonを使用することでパフォーマンスと同様のコード構造が向上することが示唆されています。

于 2009-11-24T11:58:08.673 に答える
3

ブーソリューション

GoにコンパイルできるPythonのような言語を作ろうとしていますか?これは、Go固有のこと(Go機能を利用するため)を実行する必要があるため、最も賢明なようです。

pyparsingを見てください。完全なPythonパーサーの例が含まれていますが、おそらくそれはしたくないでしょう。

コンバーター/トランスレーターを段階的に構築したいので、パーサーを段階的に構築したいと思います。そうしないと、ASTで窒息する可能性があります。OK、すべてを解析して、理解できないものを無視することもできますが、それはコンパイラーの優れた動作ではありません。

基本的な算術の解析から始めることができます。

パイレックスソリューション

これはBooソリューションに似ていますが、はるかに困難です。最初にBooソリューションを機能させます。次に、ラッパーコードの生成方法を学び、GoとPythonのパーツが連携できるようにします。

PyPyソリューション

完全なPython-Goコンパイラ?幸運を。あなたはそれが必要になります。

于 2009-11-24T11:21:55.533 に答える
2

NedBatchelderによって切り上げられたパーサーの良いリストが役立つかもしれません。

于 2009-11-24T11:24:05.390 に答える