Lua的shlex等效? (注:shlex是Python模块中的字符串解析器,用于将字符串解析成shell-like语法的词。)

有没有 Lua 可以替代 Python 的 shlex 库的函数?

原文链接 https://stackoverflow.com/questions/1851940

点赞
stackoverflow用户172211
stackoverflow用户172211

我找到了一个叫做LuaParse的项目:

LuaParse包括Blex,一个通用的纯Lua词法分析器,以及lpars,一个纯Lua Lua语法解析器,还有各种实用函数和原型包管理系统。

也许这可以满足您的需要。

2009-12-05 12:46:08
stackoverflow用户107090
stackoverflow用户107090

另见 LPeg

2009-12-05 21:03:31
stackoverflow用户6236
stackoverflow用户6236

参考Metalua模块中的ggmlpclopts模块,虽然它们不是纯粹的Lua(因为Metalua是一种独立的语言),但可能提供一些有用的见解。此外,Metalua代码编译成纯Lua字节码,因此可重复使用。

2009-12-05 22:08:17
stackoverflow用户68204
stackoverflow用户68204

如果目标是解析类似于 shell 的语言(这似乎是 shlex 的实际设计目标),那么像 lhf 建议的那样LPeg 中编写一个语法可能是正确的答案。然而,编写一个完全实现 shell 实际遵循的分层引用规则混杂的语法并不容易。只要你不希望正确解析所有有效的 /bin/sh(或更糟糕的,csh)脚本,编写一个有用的语法应该是直接的。

如果目标实际上是创建一个合理的“小语言”用于配置文件或应用程序脚本,那么我建议 Lua 本身已经非常接近这种语言了。它最初设计时就考虑了数据描述,并且它的解析器非常擅长处理甚至相当大的数据声明。参见 PiL 的第 10.1 节 以获取如何使用 Lua 的一个示例。后续的 第 25 章 描述了将 Lua 与更大的应用程序集成以完成配置的特定用例,并演示了多种方法。

2009-12-07 21:26:44
stackoverflow用户1534182
stackoverflow用户1534182

https://github.com/dromozoa/dromozoa-shlex 提供了 shlex.split 的实现。

免责声明:它采用的是 GPL-3 许可证。

2022-11-01 16:41:40