Python中的迷你语言

Rea*_*ity 44 python dsl

我在Python中创建一个简单的迷你语言解析器,在问题域附近进行编程以及所有这些.

无论如何,我想知道这里的人们会如何做到这一点 - 在Python中做这种事情的首选方式是什么?

我不会详细说明我所追求的内容,因为目前我只是在研究整个领域在Python中的容易程度.

感谢您的输入!

Pau*_*McG 41

Pyparsing对于编写"小语言"很方便.我在PyCon'06上做了一个关于编写一个简单的冒险游戏引擎的演示文稿,其中被解析和解释的语言是游戏命令集("库存","拿剑","掉书"等).(源代码在这里.)

您还可以在pyparsing wiki Publications页面上找到其他pyparsing文章的链接.

  • Pyparsing是一个非常棒的图书馆,你可以用最少的仪式解析任何东西.我在两个下午使用它构建了一个递归的PHP解析器(静态代码分析).我不能强烈推荐它.文档大约需要2个小时才能阅读. (6认同)

Ste*_*202 23

我对PLY(Python Lex-Yacc)的经验有限但积极.它将Lex和Yacc功能结合在一个Python类中.你可能想看一下.

Stackoverflow'er Ned Batchelder在他的网站上对可用工具进行了很好的概述.Python网站本身也有一个概述.


And*_*ikh 20

我会推荐funcparserlib.它专门用于解析小语言和DSL,它比它更快更小pyparsing(参见其主页上的统计数据).极简主义者和功能程序员应该喜欢funcparserlib.

编辑:顺便说一句,我是这个图书馆的作者,所以我的观点可能有偏见.

  • 有一段时间我不愿意推广或提倡我的pyparsing模块 - 不要害羞!并且确保您写入Ned Batchelder以将"funcparserlib"添加到其解析器纲要页面中,它是许多Python用户搜索解析库的常见(且有价值)资源. (4认同)

gnu*_*nud 5

Python是一种非常简单且可扩展的语言,我建议您仅创建一个全面的python模块,并对此进行编码。

我看到上面键入的内容PLY已经提到过了。