48

是否有一个相对快速的程序可以至少完成这个基础?只有几个正则表达式?我愿意做一些手动转换,但这是一组相当大的脚本。

4

4 回答 4

29

您可以使用Js2Py将 JavaScript 转换为 Python 。它支持整个 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)
于 2014-12-10T21:56:25.710 回答
17

更新

现在几(4)年后,这(几乎可以肯定)可以做到;虽然肯定不是 RegEx。我建议未来的读者看看@Piotr Dabkowski 的回答。. 或者其他一些答案。(我不知道有没有尝试过)


原始答案

嗯,这很难。编译器的定义是从高级语言翻译为低级语言。例如 python 到机器码。或 java 到 javascript(谷歌在某个地方有一个相当著名的编译器——它让 google doc 更容易制作)Python 到 javascript 编译器比比皆是。从技术上讲,javascript 到 python 将是一个反编译器。(AFAIK)

我在这里发现了一些关于 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 模块文档。查看您使用的内容是否已记录在案。你也感兴趣的是这个页面。

如果您正在谈论将 javascript 代码转换为 Python 等效代码,那么最好的转换器就是。了解 Python,然后手动转换它们。没有什么比人类更好的了。循环、变量、数组等编程结构非常常见且标准,您将立即了解如何立即使用它们。

于 2010-02-27T08:02:51.580 回答