Подтвердить что ты не робот

Преобразование из JavaScript в код Python?

Есть ли относительно быстрая программа, чтобы выполнить хотя бы основы этого? Всего несколько регулярных выражений? Я готов выполнить ручное преобразование, но это довольно большой набор скриптов.

4b9b3361

Ответ 1

Обновление

Теперь несколько (4) лет спустя это (почти наверняка) можно сделать; хотя, конечно, не с RegEx. Я предлагаю будущим читателям смотреть на @Piotr Dabkowski ответ.. Или некоторые другие ответы. (Я не знаю, не пробовал их)


Оригинальный ответ

Hm это тяжелый. Определение компилятора переводится с языка более высокого уровня на язык более низкого уровня. например, python для машинного кода. или java для javascript (у google есть довольно известный компилятор для этого где-то - его "то, что делает google doc проще сделать) Компиляторы Python для javascript изобилуют. технически javascript для python будет декомпилятором. (AFAIK)

Я нашел некоторые предположения о конвертере javascript-python здесь: следуйте по протекторам. в основном это говорит о том, как это было бы нелегко сделать. Я ничего не могу найти, но это не значит, что это не так.

Regex не подходит, регулярное выражение подходит только для обычных языков. языки программирования обычно не являются обычными языками. см. this

Ответ 2

Вы можете перевести JavaScript на Python с помощью Js2Py. Он поддерживает весь JavaScript, и вы можете использовать его для перевода больших модулей JavaScript, таких как esprima.js (парсер JavaScript 6).


Короткая демонстрация:
>>> 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)

Ответ 3

Этот ответ может быть около 2 лет позже, но как насчет js → coffeescript → python? Если вы используете что-то вроде http://js2coffee.org/ для преобразования в cs, то такие вещи, как отступ и списки, уже сделаны для вас.

Ответ 4

Существует несколько других инструментов, которые могут переводить исходный код JavaScript в Python. Например, Jiphy может переводить исходный код JavaScript в Python и наоборот.

Ответ 5

Если вы запрашиваете преобразование нескольких регулярных выражений в javascript в эквивалент Python, основы регулярных выражений в основном довольно стандартизированы. проверьте Python re module doc. Посмотрите, документировано ли то, что вы используете. Также интересен для вас эта страница.

Если вы говорите о преобразовании кода javascript в эквивалент Python, лучший конвертер вы. Узнайте о Python, а затем преобразуйте их вручную. нет ничего лучше, чем человек. Программируемые конструкции, такие как циклы, переменные, массивы, довольно распространены и стандартизованы, вы сразу узнаете, как их использовать.