JRuby和Jython使用什么解析器来生成JVM字节码?

JRuby和Jython使用什么解析器来生成JVM字节码?,jvm,jruby,antlr,jython,javacc,Jvm,Jruby,Antlr,Jython,Javacc,你们知道JRuby和Jython使用什么解析器来生成JVM字节码吗?是ANTLR还是JavaCC,或者他们在实现中使用了其他解析器?JRuby使用定制编译器,根据需要编译Ruby函数。这是用Java编写的。这一点描述得很好 Jython可能也有类似的方法。谷歌搜索并没有让我找到任何一个好的文档来描述事情是如何完成的,但有几个文档提到Jython是一个用Java编写的Python解释器,向我表明他们通过使用编译器编译Java代码来创建字节码。JRuby使用一个自定义编译器,根据需要编译Ruby函数

你们知道JRuby和Jython使用什么解析器来生成JVM字节码吗?是ANTLR还是JavaCC,或者他们在实现中使用了其他解析器?

JRuby使用定制编译器,根据需要编译Ruby函数。这是用Java编写的。这一点描述得很好


Jython可能也有类似的方法。谷歌搜索并没有让我找到任何一个好的文档来描述事情是如何完成的,但有几个文档提到Jython是一个用Java编写的Python解释器,向我表明他们通过使用编译器编译Java代码来创建字节码。

JRuby使用一个自定义编译器,根据需要编译Ruby函数。这是用Java编写的。这一点描述得很好


Jython可能也有类似的方法。谷歌搜索并没有让我找到任何一个好的文档来描述事情是如何完成的,但有几个文档提到Jython是一个用Java编写的Python解释器,向我表明他们通过使用编译器编译Java代码来创建字节码。

JRuby似乎已经得到了回答,所以我要补充我对Jython的了解


Jython使用生成的解析器生成一个AST,该AST符合规范,如果您请求AST,Jython将在这个阶段之后返回。然后,这将通过一个自定义编译器提供,该编译器使用Java字节码生成库生成Java字节码,然后加载并执行该字节码。与JRuby相比,Jython没有一个初始解释阶段,而是直接编译成Java字节码,并让JVM从那里处理它。正因为如此,当人们将Jython描述为用Java编写的Python解释器时,我从来都不喜欢它,我更愿意称它为Java的Python实现。

JRuby似乎已经得到了回答,所以我将补充我对Jython的了解


Jython使用生成的解析器生成一个AST,该AST符合规范,如果您请求AST,Jython将在这个阶段之后返回。然后,这将通过一个自定义编译器提供,该编译器使用Java字节码生成库生成Java字节码,然后加载并执行该字节码。与JRuby相比,Jython没有一个初始解释阶段,而是直接编译成Java字节码,并让JVM从那里处理它。正因为如此,当人们将Jython描述为用Java编写的Python解释器时,我从不喜欢它,我更愿意称之为Java的Python实现。

注意,ANTLR和JavaCC不是解析器,而是解析器生成器。注意,ANTLR和JavaCC不是解析器,但是解析器生成器。这是一个精确解释Jython所做的事情的简洁说明,而且令人惊讶地难以找到。这是一个精确解释Jython所做的事情的简洁说明,并且令人惊讶地难以找到。