Python中的微语言
我想用Python创建一个简单的迷你语言解析器,尽量贴近我想解决的问题。
我在想这里的朋友们会怎么做这件事——在Python中做这种事情有什么好的方法吗?
我现在不打算给出具体的细节,因为我只是想了解在Python中做这个事情有多简单。
6 个回答
22
我推荐你使用 funcparserlib
。这个库是专门为解析小语言和领域特定语言(DSL)而写的,它比 pyparsing
更快、更小(你可以在它的主页上查看相关数据)。喜欢简约风格和函数式编程的人应该会喜欢 funcparserlib
。
补充一下:顺便说一下,我是这个库的作者,所以我的观点可能有点偏颇。
26
我对 PLY(Python Lex-Yacc)有一些有限但积极的经验。它把 Lex 和 Yacc 的功能结合在一个 Python 类里。你可以去看看。
另一位 Stackoverflow 的朋友 Ned Batchelder 在他的网站上有一个关于可用工具的 很不错的概述。在 Python 官网 上也有一个概述。
43
Pyparsing 是一个很方便的工具,可以用来编写“迷你语言”。我在PyCon'06上做过一个演讲,讲的是如何写一个简单的冒险游戏引擎。在这个引擎中,我们解析和解释的语言就是游戏指令,比如“查看背包”、“拿起剑”、“放下书”等等。(源代码可以在这里找到。)
你还可以在pyparsing wiki上找到其他关于pyparsing的文章链接。