我可以使用RPython实现语言的前端是什么?

时间:2011-11-14 22:57:10

标签: parsing bison lex pypy

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

谢谢!

2 个答案:

答案 0 :(得分:2)

我并不知道任何针对RPython的通用词法分析器或解析器生成器。有些Python输出可能有效,但我不打赌。但是,rlib.parsing中有一组解析工具。它看起来很实用。 OTOH,文档中有一个警告:据报道它仍处于开发阶段,是实验性的,到目前为止仅用于Prolog解释器。

或者,您可以手动编写前端。 Lexers可能会烦人且不自然,被授予(您可能会为Python实现使用的DFA删除实用程序模块)。但是如果你知道正确的算法,解析器就是小菜一碟。我是" Top Down Operator Precedence解析器" a.k.a." Pratt解析器",它们相当简单(递归下降)但是使所有表达式解析问题(嵌套,优先级,关联性等)变得轻而易举。关于它们的信息很少令人沮丧,但少数博客文章对我来说已经足够了:

  • One by Crockford(虽然不会推荐它,它会将大量不相关的内容抛入解析器中,从而模糊它),
  • 另一个effbot.org(使用Python),
  • 和三分之一是一个自己开发语言的悲惨甚至不那么着名的人,Robert Nystrom

答案 1 :(得分:1)

Alex Gaynor ported David Beazley对RPython的出色PLY。它的documentation非常好,他甚至给了talk使用它在2013年PyCon US上实现翻译。