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

Jus*_*VSI 1 jvm antlr jython jruby javacc

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

tho*_*obe 5

JRuby似乎已经回答了,所以我将添加我对Jython的了解.

Jython使用ANTLRv3生成的解析器生成一个AST,该AST符合您可以从编译函数中构建的Pythons获得的规范(如果您要求AST Jython将在此阶段之后返回).然后通过自定义编译器提供,该编译器使用ASM Java字节码生成库生成Java字节码,然后加载并执行.Jython没有(与JRuby相反)有一个初始解释阶段,但直接编译为Java字节码,让JVM从那里处理它.因此,当人们将Jython描述为用Java编写的Python 解释器时,我从未喜欢它,我更愿意将其称为Java 的Python 实现.