2

Python 仮想マシン用の新しい言語を作成することはできますか? 私はhttp://late.am/post/2012/03/26/exploring-python-code-objectsを読んでいて、ブロガーが Python コード オブジェクトについて議論しています。その中で、彼はコード オブジェクトのバイトコードへの逆アセンブルと、その中のシンボルの意味について説明しています。

これにより、このバイトコードを構築する別の方法があるのではないかと考えました。私は、Python バイトコード内でサンドボックス化された言語を作成して、Python がそれをロードできるようにする機能に興味がありました。サンドボックス化に Python 自体を使用することはほとんど不可能に思えますが、これは別の実装言語への道筋を作るようです。

このベンチャーを追求したい場合、どこから始めればよいですか? より良いアプローチは何ですか?他のアプローチについてはどこでもっと見つけることができますか?

4

2 に答える 2

3

Ruby コードを Python バイトコードにコンパイルするスクリプトをハッキングしことのある幸運な頑固者はなぜでしょうか。単純な Ruby スクリプトではうまく機能したことを覚えています。ソースを見て、彼がどのようにそれを行ったかを確認できます。

EDIT : 彼がしているのは、そのバイトコードを Python に変換するのではなく、Ruby VM に Ruby バイトコードを生成させることです。Python バイトコードがどのようにアセンブルされるかを見るのはまだ興味深いかもしれません :)

于 2012-12-08T01:15:54.190 に答える
2

plyから始めるのが良いと思います。 plyを使用した Lisp の実装は次のとおりです: http://www.juanjoconti.com.ar/files/python/mini-lisp/

ply が Python のastモジュールを使用して構文木を生成できるかどうかはわかりませんが、可能なはずです。

于 2012-12-08T00:32:50.510 に答える