Python中的微语言

51 投票
6 回答
27214 浏览
提问于 2025-04-15 14:58

我想用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的文章链接。

撰写回答