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

发布于 2024-11-26 21:07:24 字数 81 浏览 2 评论 0原文

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

Do you guys know what parser JRuby and Jython use for generating JVM bytecode? Is it ANTLR or JavaCC or are they using some other parser in their implementation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

海拔太高太耀眼 2024-12-03 21:07:24

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

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

JRuby seems to be answered already, so I'll add what I know about Jython.

Jython uses an ANTLRv3 generated parser to generate an AST that conforms to the spec for the one you can get from Pythons built in compile function (if you ask for AST Jython will just return after this stage). This is then fed through a custom compiler that uses the ASM Java bytecode generation library to generate Java bytecode that is then loaded and executed. Jython does not (in contrast to JRuby) have an initial interpreted stage, but compiles directly to Java bytecode and lets the JVM handle it from there. Because of this I've never liked it when people describe Jython as a Python interpreter written in Java, I'd much rather call it a Python implementation for Java.

闻呓 2024-12-03 21:07:24

JRuby 使用自定义编译器根据需要编译 Ruby 函数。这是用Java编写的。 这篇博文。

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

JRuby uses a custom compiler that compile Ruby functions as needed. This is written in Java. This is described very well in this blog post.

Jython probably has a similar approach. Google searches didn't lead me to any one good document for describing how things are accomplished, but several documents mention that Jython is a Python interpreter written in Java, indicating to me that they create bytecode by compiling Java code with the compiler.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文