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