Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JavaScript转换为Python字节码_Javascript_Python_Google App Engine - Fatal编程技术网

将JavaScript转换为Python字节码

将JavaScript转换为Python字节码,javascript,python,google-app-engine,Javascript,Python,Google App Engine,我试图在纯Python环境(Google AppEngine)中执行简单的JavaScript代码 我尝试过PYJON,但它似乎还不够成熟,无法真正使用(它不能处理如前向引用的函数,也不能处理while,它依赖于数组的使用) 一个想法是使用Pynacissus将JavaScript转换为语法树,然后将该树转换为Python AST,该AST可以编译为Python字节码 以前有人这样做过吗? 这个想法有什么问题吗?我使用VBScript和一种我已经研究了一段时间的新语言做了类似的事情,但是我没有构

我试图在纯Python环境(Google AppEngine)中执行简单的JavaScript代码

我尝试过PYJON,但它似乎还不够成熟,无法真正使用(它不能处理如前向引用的函数,也不能处理while,它依赖于数组的使用)

一个想法是使用Pynacissus将JavaScript转换为语法树,然后将该树转换为Python AST,该AST可以编译为Python字节码

以前有人这样做过吗?
这个想法有什么问题吗?

我使用VBScript和一种我已经研究了一段时间的新语言做了类似的事情,但是我没有构建AST然后转换为Python AST,而是直接构建Python AST,使用它的节点类,偶尔子类化和重写一些不太合适的类

由于您可以依赖Pynacissus为Javascript构建AST,因此转换AST可能更容易,但我认为值得检查使用其解析器构建Python AST是否是一种更好的方法


据我所知,这种方法没有固有的问题,只要这些语言在语法上可以简化为一种通用方言。这是一项艰苦的工作,但它是可以做到的。我这样做是因为我没有可用的解析器,编写一个解析器来构建AST是没有意义的。对于VBScript,我只处理录制的宏,因此代码非常稳定,大部分是一行代码。

据我所知,Python上没有完整而健壮的Javascript解释器实现。您最好的选择可能是使用Java中的Rhino解释器部署应用程序的替代版本,并将其称为应用程序主版本的web服务。

为什么是Python字节码而不是Python源代码?您是否需要以编程方式翻译JS?如果您试图在GAE上运行Javascript,那么转换为Java似乎是更好的选择-您可以通过Rhino在JS JVM上运行。我认为AST最接近解析的Javascript。最后我需要字节码来执行。但是Python源代码也可以通过编程方式转换为字节码。为什么不将JavaScript转换为Python呢?你的大脑会将JS转换为Python。我不想修改非常复杂的解析器(这样我就可以使它与原始解析器保持同步)。这是一个固有的问题:Python和Javascript不仅仅是一种语法不同的语言。这不是一个固有的问题。这是一个问题,有一个解决方案,就是在两个AST中找到一个公共子集。我们讨论的是AST,所以代码和语法从何而来并不重要,只要它们可以简化为相同的子集。您认为它们是不同的语言的论点并没有指出这种方法的固有问题,因为Python和VBScript也不是同一种语言,我做到了。实际上,与创建有效的Python AST相比,我在VBScript中解析不明确的“=”时遇到了更多的问题。以前似乎没有人(针对JavaScript)这样做过(至少我没有发现任何人),挑战是将JavaScript AST转换为Python AST并创建运行时环境(范围、原型、JavaScript类)。好处是可移植(纯Python)和可维护的解决方案(存在解析器和字节码生成)