Lua不允许某些运营商

Luc*_*cas 1 c++ lua symbols c++11

我的C++项目中有一个Lua实现的奇怪问题.出于某种原因,它不允许执行包含诸如#(:,%以及更重要,更重要)等运算符的脚本.

在结果中......

我需要用for i = 1, table.getn(tbl) do而不是for i = 1, #tbl do.

我需要用string.gsub(str, [..])而不是str:gsub([..]).

等等...这真的很烦人寻找解决方法.

我的第一个想法是编码.我尝试过多种常见编码,但没有一种工作.

我遇到的错误:

使用时str:gsub([..])代替string.gsub(str, [..]):

attempt to index global `str' (a string value)
Run Code Online (Sandbox Code Playgroud)

使用时#tbl代替table.getn(tbl):

unexpected symbol near `#'
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?我会感谢每一个解决方案,因为我没有想法.


规格:

Lua版本:

#define LUA_VERSION "Lua 5.0.3"
Run Code Online (Sandbox Code Playgroud)

C++ 11,FreeBSD 10

Eta*_*ner 7

长度运算符是lua 5.1的补充.它在lua 5.0中不存在.

类似地,默认字符串metatable似乎是lua 5.1添加.

比较lua 5.0实现luaopen_string的lua 5.1实现luaopen_string.

类似地(再次)模运算也是5.1加法.比较Arithmetic Operators的部分5.0 manual`5.1手动1.

5.1手册部分包括操作员定义的内容,以便您自己实现(或使用您需要的任何其他定义).