4

純粋な Python 環境 (Google AppEngine) で単純な JavaScript コードを実行しようとしています。

私はPYJONを試しましたが、実際の使用には十分に成熟していないようです(たとえば、前方参照関数やdo-whileを処理せず、配列の使用でハングします)。

1 つのアイデアは、pynarcissus を使用して JavaScript を構文ツリーに変換し、このツリーを Python バイトコードにコンパイルできる Python AST に変換することです。

誰もこれをやったことがありますか?この考えに問題はありますか?

4

2 に答える 2

2

ply、VBScript 、およびしばらく取り組んできた新しい言語を使用して同様のことを行いましたが、AST を構築してから Python AST に変換する代わりに、Python AST を直接構築し、そのノード クラスを作成し、場合によっては特にうまく適合しないクラスをサブクラス化したりオーバーライドしたりします。

pynarcissus に頼って Javascript 用の AST を作成できるので、おそらく AST を変換する方が簡単ですが、そのパーサーを使用して Python AST を作成する方が良い方法ではないかどうかを確認する価値があると思います。

私の知る限り、言語が構文的に一般的な方言に還元できる限り、このアプローチに固有の問題はありません。大変な作業ですが、それは可能です。これを行ったのは、使用可能なパーサーがなく、AST を構築するためだけにパーサーを作成しても意味がないためです。VBScript の場合、私は記録されたマクロのみを扱っていたので、コードは非常に安定しており、ほとんどがワンライナーでした。

于 2012-05-01T15:12:09.780 に答える
0

私の知る限り、Python での Javascript インタープリターの完全で堅牢な実装はありません。おそらく最良の選択肢は、Java で Rhino インタープリターを使用してアプリの代替バージョンをデプロイし、これをアプリのメイン バージョンで Web サービスとして呼び出すことです。

于 2012-05-02T00:55:42.380 に答える