48

少なくともこれの基本を達成するための比較的迅速なプログラムはありますか? ほんの少しの正規表現?手動で変換するつもりですが、これはかなり大きなスクリプト セットです。

4

4 に答える 4

29

Js2Pyを使用して JavaScript を Python に変換できます。esprima.jsJavaScript 全体をサポートし、(JavaScript 6 パーサー) のような大きな JavaScript モジュールを変換するために使用できます。


短いデモ:

>>> import js2py
>>> f = js2py.eval_js( "function $(a) {return a + arguments[1]}" )
>>> f
function $(a) { [python code] }
>>> f(1, 2, 3)
3

これは、変換された関数が内部的にどのように見えるかです (かなり醜いです):

>>> print js2py.translate_js( "function $(a) {return a + arguments[1]}" )
from js2py.pyjs import *
var = Scope( JS_BUILTINS )
set_global_object(var)
# Code follows:
var.registers([u'$'])
@Js
def PyJsHoistedNonPyName(a, this, arguments, var=var):
    var = Scope({u'a':a, u'this':this, u'arguments':arguments}, var)
    var.registers([u'a'])
    return (var.get(u'a')+var.get(u'arguments').get(u'1'))
PyJsHoistedNonPyName.func_name = u'$'
var.put(u'$', PyJsHoistedNonPyName)
于 2014-12-10T21:56:25.710 に答える
17

更新しました

数(4)年後、これは(ほぼ確実に)実行できるようになりました。確かに正規表現ではありませんが。将来の読者は、@ Piotr Dabkowski の回答を参照することをお勧めします。. または他のいくつかの答え。(試してみないとわかりません)


元の回答

うーん、これは難しいです。コンパイラの定義は、高水準言語から低水準言語に変換されます。たとえば、python からマシンコードへ。または Java から JavaScript へ (Google には、このためのかなり有名なコンパイラがどこかにあります。そのため、Google ドキュメントを簡単に作成できます) Python から JavaScript へのコンパイラはたくさんあります。技術的には、python への JavaScript は逆コンパイラになります。(私の知る限り)

ここで、javascript-python コンバーターに関するいくつかの憶測を見つけました。それは主に、それを行うのがそれほど難しくない方法について語っています。何も見つかりませんが、それはそこにないという意味ではありません。

正規表現は適していません。正規表現は通常の言語にのみ適しています。プログラミング言語は通常、通常の言語ではありません。これを見る

于 2010-02-27T08:04:49.800 に答える
8

この回答は2年ほど遅れるかもしれませんが、js -> CoffeeScript -> python はどうでしょうか? http://js2.coffee/のようなものを使用して cs に変換する場合、インデントやリストなどは既に行われています。

于 2012-10-04T10:43:08.097 に答える
0

あなたが求めているのが、javascript のいくつかの正規表現を同等の Python に変換することである場合、正規表現の基本はほとんど標準的です。Python re module docを確認してください。使用しているものが文書化されているかどうかを確認してください。また、このページも興味深いものです。

JavaScriptコードを同等のPythonに変換することについて話している場合、最適なコンバーターはあなたです. Python について学習し、手動で変換します。人間より優れたものは他にありません。ループ、変数、配列などのプログラミング構成要素は非常に一般的で標準的なものであり、それらの使用方法をすぐに理解できます。

于 2010-02-27T08:02:51.580 に答える