如何在不运行脚本的情况下打印 Lua 脚本中的错误?

我是在 C++ 中使用 Lua,遇到了打印脚本错误的问题。 我的目的是:

  1. **使用 luaL_dofile 或 luaL_dostring 查找语法错误、函数名错误等,而不运行代码 **,类似于在 Visual studio 中构建代码。 (当使用 luaL_loadfile 或 luaL_loadstring 时,只能查找语法错误,如 'a == 1',但无法查找函数名错误,如 'prit(a)')
  2. 想打印所有错误。(在 Lua 中,如果有 2 个或更多错误,它只会打印发生的第一个错误)

例如,我创建了这样一个 Lua 脚本:

  • test.lua
function sayHello(name)
  print("Hello, " .. name .. "!")
end

for a=0, 10

  print(a)
end

sayHello()

在 c++ 代码中:

  • test.cpp
...
int ret;

ret = luaL_dofile(LuaState, filename);
if(ret != 0) {
  cout << "error : " << lua_tostring(LuaState, -1) << endl;
  lua_pop(LuaState, 1);
}

我想要打印这样的错误:

lua: test.lua:2: attempt to concatenate local `name' (a nil value)
lua: test.lua:7: `do' expected near `print'

有人能教我怎么做吗?

点赞