选择脚本语言

我需要为我的应用程序(不是游戏)编写脚本,并遇到了一个问题,就是选择一个适用于此的脚本语言。 Lua看起来还不错(实际上,它非常适合我的任务),但它在使用Unicode字符串时存在问题。 此外,我考虑过Python,但我不喜欢它的语法,而且它的 Dll 对我来说太大了(约为 2.5 Mib)。 Python 和其他类似的语言有太多我不需要的函数、电池和模块(例如 I/O 函数)——脚本只需要实现逻辑,其他所有工作都由我的应用程序完成。 因此,我想知道是否有一种符合以下条件的脚本语言:

  • Unicode 字符串
  • 我可以导入 C++ 函数,然后从脚本中调用它们
  • 能够嵌入应用程序中(无需 DLL),并且没有任何问题

重新发明轮子并不是一个好主意,所以我不想开发自己的语言。 或者,是否有一种方法可以在Lua源代码中编写Unicode字符串?就像在C ++ L"Unicode 字符串"中一样。

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

点赞
stackoverflow用户298479
stackoverflow用户298479

看看 JavaScript - V8 引擎 相当强大,JavaScript 没有一个大的标准库。除此之外,你可以很容易地嵌入它,据我所知它可以很好地处理 Unicode。

2012-04-21 19:27:42
stackoverflow用户107090
stackoverflow用户107090

Lua 字符串与编码无关。因此,是的,您可以在 Lua 脚本中编写 Unicode 字符串。如果您需要模式匹配,则标准 Lua 字符串库不支持 Unicode 类。但是,简单的子字符串搜索可以工作。

2012-04-21 19:45:43
stackoverflow用户12195
stackoverflow用户12195

请看Io

这是一个全面支持Unicode并且可以嵌入的编程语言。同时,它似乎还提供了一些C ++绑定库

2012-04-22 10:13:25
stackoverflow用户15996
stackoverflow用户15996

其实并不存在所谓的“unicode字符串”。字符串是一个可以包含任何内容的字节序列。然而,知道字符串数据的编码是很重要的。

我使用带有 UTF-8字符串 的Lua,在我关心的所有操作中都非常有效。尽管针对Lua也有Unicode字符串库(例如 ICU4Luaslnunicode等)。

使用UTF-8字符串时,需要注意以下几点:

  • 字符串长度(#操作符)返回的是字节数,而不是字符或码点(非ASCII字符可能是多个字节的序列)。
  • 字符串拆分(如string.sub)不能拆分UTF-8序列。
  • 字符串匹配(例如string.find,string.match)与ASCII模式相匹配。
  • 使用UTF-8作为镜片或真实值时,子串搜索(如“纯文本”模式中的string.find)起作用。

计算UTF-8中码点的数量非常直接,尽管它比其他编码方式略微低效。例如,Lua:

function utf8_length(str)
        return select(2, string.gsub(str, "[^\128-\193]", ""));
end

如果需要更多功能,我提到的unicode库将为您提供一切API,包括编码之间的转换。

个人而言,我更喜欢这种直截了当的方法,而不是那些强制使您使用某种Unicode风味(如JavaScript)或者通过在语言中内置多个编码来聪明地处理Unicode(如Python)。在我的经验中,它们只会引起头痛和性能瓶颈。

无论如何,我认为每个开发人员都应该对Unicode的工作原理和不同编码之间的主要区别有一个良好的基础了解,以便能够在应用程序中做出最好的选择。

例如,如果您应用程序中的所有现有字符串都是采用宽字符编码,那么使用Lua会更不方便,因为您需要在Lua中添加每个字符串的转换。虽然这是完全可能的,但如果您的应用程序可能会被CPU绑定(如游戏)则性能会受到负面的影响。

2012-04-22 14:44:41
stackoverflow用户107626
stackoverflow用户107626

看一下 Jim Tcl

Jim Tcl很小,容易嵌入和扩展,支持UTF-8字符串,并且它非常强大。

2012-04-23 19:23:54