使PyPy工具链与输入语言无关

时间:2013-05-28 23:00:11

标签: pypy rpython

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

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

1 个答案:

答案 0 :(得分:0)

这个问题有很多可能的答案。答案是肯定的,你可以试试,但这并不是很有趣。是的,您可以使用不同的前端进行相同的工具链;但是你只是在改变语法,就是这样。

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

这可能不是你想要的真正的RRuby。你想要一些Ruby的子集,具有Ruby-ish行为。支持PyPy需要更多的工作。