3

对于使用 RPython 工具链实现一种语言的示例,我已经看了很多,但到目前为止,我唯一能找到的是作者编写一个简单的 BF 解释器的示例。因为语法非常简单,所以他不需要使用解析器/词法分析器生成器。是否有支持在 RPython 中开发语言的前端?

谢谢!

4

2 回答 2

2

我不知道有任何专门针对 RPython 的通用词法分析器或解析器生成器。一些带有 Python 输出的可能会工作,但我不会打赌。但是,在rlib.parsing. 看起来还蛮好用的。OTOH,文档中有一个警告:据报道,它仍在开发、实验中,并且到目前为止仅用于 Prolog 解释器。

或者,您可以手动编写前端。词法分析器可能很烦人且不自然,这是理所当然的(您可能会删除 Python 实现使用的 DFA 的实用程序模块)。但是如果你知道正确的算法,解析器就是小菜一碟。我是“自上而下运算符优先级解析器”又名“Pratt 解析器”的超级粉丝,它相当简单(递归下降),但让所有表达式解析问题(嵌套、优先级、关联性等)变得轻而易举。关于它们的信息很少令人沮丧,但几篇博客文章对我来说已经足够了:

  • Crockford的一个(虽然不推荐它,它会在解析器中抛出很多不相关的东西,从而掩盖它),
  • effbot.org上的另一个(使用 Python),
  • 第三个由一个自己开发语言的名不见经传的人罗伯特·尼斯特罗姆(Robert Nystrom )撰写。
于 2011-11-14T23:17:33.053 回答
1

Alex Gaynor将David Beazley 的优秀PLY移植到了 RPython。它的文档非常好,他甚至在 PyCon US 2013 上发表了关于使用它来实现解释器的演讲。

于 2015-04-07T21:43:21.497 回答