【发布时间】:2011-11-14 22:57:10
【问题描述】:
对于使用 RPython 工具链实现一种语言的示例,我已经看了很多,但到目前为止,我唯一能找到的是this,作者在其中编写了一个简单的 BF 解释器。因为语法很简单,所以他不需要使用解析器/词法分析器生成器。是否有支持在 RPython 中开发语言的前端?
谢谢!
【问题讨论】:
对于使用 RPython 工具链实现一种语言的示例,我已经看了很多,但到目前为止,我唯一能找到的是this,作者在其中编写了一个简单的 BF 解释器。因为语法很简单,所以他不需要使用解析器/词法分析器生成器。是否有支持在 RPython 中开发语言的前端?
谢谢!
【问题讨论】:
我不知道有任何专门针对 RPython 的通用词法分析器或解析器生成器。一些带有 Python 输出的 可能 工作,但我不会打赌。不过rlib.parsing中有一套解析工具。看起来还蛮好用的。 OTOH,文档中有一条警告:据报道,它仍处于开发阶段、实验阶段,目前仅用于 Prolog 解释器。
或者,您可以手动编写前端。词法分析器可能很烦人且不自然,这是理所当然的(您可能会删除 Python 实现使用的 DFA 的实用程序模块)。但是如果你知道正确的算法,解析器就是小菜一碟。我是“自上而下运算符优先级解析器”又名“Pratt 解析器”的超级粉丝,它们相当简单(递归下降),但让所有表达式解析问题(嵌套、优先级、关联性等)变得轻而易举。令人沮丧的是,关于它们的信息很少,但几篇博文对我来说已经足够了:
【讨论】:
Alex Gaynor 向 RPython 提供了 ported David Beazley 的出色 PLY。它的documentation 相当不错,他甚至在 PyCon US 2013 上给出了一个 talk 用于实现解释器。
【讨论】: