使用Python构建编译器或解释器
现在我正在写我的博士提案,计划开发一个新的规范语言处理器,这个语言是为了Java设计的(可以参考一下JML,或者C#的Spec#)。我需要确定一个实现工具来开始开发。语言的研究方面(比如语法、语义和理论结果)和我选择的实现工具是无关的,所以我想用Python(2.6及以上版本),这是出于我自己的原因。最终的产品将是一个编译器或解释器,能够验证用Java编写的程序的一些特定属性。
在Python中,构建编译器或解释器的最佳框架或库是什么?这个问题有没有现成的解决方案?
如果有参考Java 6及以上版本的编译器的解决方案,会额外加分。
3 个回答
0
我可以推荐你使用antlr,它有适用于Python的接口吗?
7
我个人不太喜欢antlr,反而更喜欢用lex/yacc来生成解析器。这里有一个Python的实现,你可以用这个:http://www.dabeaz.com/ply/。
不过,这个只是处理解析的部分,实际上这还远远不够,根本没开始构建你的解释器。为了做到这一点,你可能需要从头开始自己动手做——我还没听说过有什么专门为这个目的设计的库(如果你知道的话,欢迎在评论里分享一下,我会很高兴看到的)。
你可以看看这个StackOverflow的帖子:如何开始写一个非常简单的编程语言,里面有一些不错的想法。
1
也许你可以看看这个链接