Lua中shlex的对应?
有没有类似于Python的shlex库的Lua库呢?
5 个回答
3
如果你的目标是解析一种类似于shell的语言(这似乎是shlex的实际设计目标),那么按照LPeg的方式来写语法规则,就像lhf建议的那样,可能是个不错的选择。不过,写出一个能完全实现shell中复杂的引用规则的语法并不简单。只要你不指望能正确解析所有有效的/bin/sh
(或者更糟的csh
)脚本,写出一个有用的语法规则应该是比较简单的。
如果你的目标实际上是创建一个合理的“简易语言”用于配置文件或应用脚本,那么我建议Lua本身已经非常接近这样的语言。Lua最初就是为了描述数据而设计的,它的解析器在处理较大的数据声明时也相当出色。你可以查看PiL第10.1节,里面有一个如何使用Lua的例子。后面的第25章则描述了如何将Lua与更大的应用程序结合起来,专门用于配置的场景,并展示了多种方法。
4
另请查看 LPeg。
3
我找到一个叫做 LuaParse 的项目:
LuaParse 包含了 Blex,这是一个通用的纯 Lua 词法分析器,还有 lparse,这是一个纯 Lua 的 Lua 解析器,以及一些实用的功能和一个原型的包管理系统。
也许这个项目能满足你的需求。