嵌入式脚本/文本处理引擎的Python和Lua比较。

我目前在开发的一个项目中,希望将脚本引擎嵌入到我的 C++ 代码中,以便后续进行一些扩展性的工作。该应用程序将需要处理大量文本,并在这些脚本中使用正则表达式。

我知道 Lua 通常在嵌入式脚本方面是业界的宠儿,但我也知道它不支持正则表达式(至少没有开箱即用)。这使我偏向于使用 Python 作为我的嵌入语言,因为它似乎有比 Lua 更好的支持,并仍然提供强大的正则表达式功能。

这是正确的选择吗?我应该寻找另一种语言吗?有没有理由让我重新考虑 Lua?

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

点赞
stackoverflow用户173397
stackoverflow用户173397

不要忘记其中一位祖先 - tcl

有一个c++包装器可将它嵌入程序中,非常容易使用

我正在目前的项目中使用它

在以前(c#)的项目中我使用了lua而不是python。在旧的c#项目中我使用了python; 我选择lua是因为语法对于平均脚本编写人员(习惯于vbscript或javascript)来说更正常。但是我将在下一个c#项目中改回(iron)python;lua太晦涩了

对于c ++,我现在将始终使用tcl

修改:我的新最爱是jint(.net javascript解释器),易于使用,界面很好。 而且鉴于js目前是一种很酷的语言,因此没有人会对这种语言提出抱怨

2010-09-22 22:38:24
stackoverflow用户11649
stackoverflow用户11649

如果你需要一些通常称为“正则表达式”的特殊功能(其实它们并不是真正的正则表达式),那么你有两个选择:

  1. 选择使用 Python。它包含的正则表达式与 Perl 和 sed/grep 非常相似。
  2. 使用 Lua 和外部的 PCRE 库

另一方面,如果你需要进行任何良好的模式匹配,你可以使用 Lua,然后:

  1. 使用 Lua 内置的模式匹配。它们不是 grep 传统中的子模式选择(|),但相当有能力。
  2. 使用 LPEG。这种模式匹配远比正则表达式功能更强大,并且通常更快。

正如你所看到的,我是最后一种方法的铁杆支持者。它不仅可以定义非常复杂但是有决定性的模式,而且它也是一个完整的语法工具,您可以使用它来创建整个解析器。如果你愿意,你可以在一个多行字符串常量中描述语法,并使用你自己定义的钩子来捕获数据和构建结构。

我曾经用它来快速构建 JSON 解析器、C 调用树、xPath 库等。

2010-09-22 22:39:13
stackoverflow用户88888888
stackoverflow用户88888888

Python 和 C++ 集成可以得到 boost.python 很大的帮助。如果熟悉 C++ 源代码的人主要是写脚本的,那么你可能会发现这更加方便。

即使写脚本的人不熟悉你特定的源代码,如果他们熟悉类似 C 语法(C,C++等),他们应该会更容易地使用 Python——可能只稍微比 Lua 困难一点点。好的程序员可以使用多种语言,但是您没有提供有关受众的任何信息。

相比较于 Python,Lua 更容易隔离,因此如果必须限制脚本所能做的事情(例如生成其他进程、读取文件),那么可能会排除 Python。

2010-09-22 22:54:05
stackoverflow用户414121
stackoverflow用户414121

使用这种方式,将 Lua 加入我的 C 项目后,我建议使用 Lua,因为这更容易。

但这取决于您的脚本语言需要具备什么能力。Lua 已成为游戏的事实标准脚本语言。如果您需要高级脚本能力,则可以使用 Python,但如果只需要简单的脚本支持,则可以使用 Lua。根据我所见,对于不习惯编写脚本的新手来说,Lua 更容易学习。

我认为,如果您需要外部软件包,则 Lua 更轻巧,但重点是,Lua 的原子部分比 Python 小得多。

2010-09-22 23:35:17