2

更新 PyPy 工具链所涉及的步骤是什么,以允许将 RPython 替换为任何定义明确的静态类型语言(例如“RRuby”、“RJavaScript”或映射到 RPython 的 Haskell 或 ML 或 C 的任何子集功能)?是否可以为每种语言定义一个 AST 生成器并将该 AST 输入工具链?还是 RPython 完全融入了工具链?

我在想这样的事情会重新定义 PyPy 项目,至少第一个目标是创建“一组用于实现解释语言的解释器的工具”。它会将 Python 与项目的那个方面完全分离。因此可以编写例如“RuRu”,而不仅仅是“基于 PyPy 的 Ruby 实现”。

4

1 回答 1

0

这个问题有很多可能的答案。一个答案是,是的,你可以尝试,但这并不是很有趣。是的,您可以使用输入同一工具链的不同前端;但是你只是改变了语法,就是这样。

让我们以在“RRuby”而不是在 RPython 中编写“RuRu”为例。如果你只改变 PyPy 的前端,你得到的 RRuby 语言大多只是语法不同的 RPython。工具链仍将假定 RRuby 处理相同类型的对象,如字符串、列表、元组、字典,所有这些都具有 Python 式的行为。

这可能不是你想要的真正的 RRuby。相反,您想要一些 Ruby 的子集,具有 Ruby 风格的行为。在 PyPy 中支持这一点需要做更多的工作。

于 2013-06-03T11:03:45.000 回答