11

现在我正在编写我的博士建议,为Java的新规范语言(参见JML或Spec#for C#)构建语言处理器,并需要确定一个实现工具开始发展。语言的研究方面(语法,语义,理论结果)与我选择的实现是正交的,所以我想使用Python(2.6+)出于我自己的原因。最终产品将为编译器或解释器能够验证用Java编写的程序的某些指定属性。使用Python构建编译器或解释器

在Python中构建编译器/解释器的最佳框架/库是什么?这个问题是否包含“电池”?

对具有Java 6+参考编译器的解决方案奖励积分。

+0

我知道你想用Python,但是如果你正在寻找“包含电池”,你将会用F#来获得最佳效果......这种语言似乎是为构建编译器/解释器而构建的。 – sholsapp 2010-07-30 17:17:18

+2

@gnucom:不仅F#,而且ML系列的每种语言都非常适合语言实现。实际上,“ML”代表“元语言”。 Haskell也有一些很酷的解析器库(parsec)。 – delnan 2010-07-30 17:25:43

+0

@delnan:绝对如此。我立场纠正。 :) – sholsapp 2010-07-30 17:32:31

回答

1

也许你想看看this

+0

为什么建议使用ANTLRv2 Python运行时是否存在ANTLRv3? – 2010-07-30 17:33:45

+0

特别是,在这个问题中没有涉及的Python有哪些权衡? http://stackoverflow.com/questions/633224/antlr2-vs-antlr3 – 2010-07-30 17:39:50

+0

好的,对于这项研究来说,这两者看起来都不够强大。不过谢谢你指点我ANTLR + Python! – 2010-07-30 20:23:07

0

我建议antlr其Python绑定?

+0

oops,太慢:) – 2010-07-30 17:17:14

7

我个人无法忍受antlr,我使用lex/yacc作为我的分析器生成器。以下是您可以使用的Python实现http://www.dabeaz.com/ply/

这只是处理解析,但真的甚至没有开始构建你的解释器。为此,您可能会从头开始构建它 - 我从来没有听说过专门为此设计的图书馆(我会很高兴看到其中一些图书馆,如果您知道任何图书,请在评论中链接我) )。

看看这个SO帖子how to start writing a very simple programming language它有很好的ideas.il。

+0

我对错误报告的质量很挑剔,所以我更喜欢Anders的ANTLR为基础的建议。 – 2010-07-30 20:24:15