Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Syntax 是否可以从luaL_loadstring之类的内容获取有关语法错误发生在何处的更多信息?_Syntax_Lua - Fatal编程技术网

Syntax 是否可以从luaL_loadstring之类的内容获取有关语法错误发生在何处的更多信息?

Syntax 是否可以从luaL_loadstring之类的内容获取有关语法错误发生在何处的更多信息?,syntax,lua,Syntax,Lua,luaL_loadstring根据文档返回是否存在语法错误(如果存在语法错误) 有没有办法确定Lua第一次确定存在语法错误的位置,或者除了返回值之外的任何其他信息,说明存在语法错误?调用手册中的实际工作: 加载Lua块(不运行它)。如果没有错误,lua_load将编译后的块作为lua函数推送到堆栈顶部。否则,将推送错误消息。 因此,您可以检查luaL\u loadstring的返回值,如果它返回错误,请检查堆栈中的错误消息。这只是余浩回答的一个示例。 请不要害怕,这只是一些Pascal程序的摘录

luaL_loadstring
根据文档返回是否存在语法错误(如果存在语法错误)

有没有办法确定Lua第一次确定存在语法错误的位置,或者除了返回值之外的任何其他信息,说明存在语法错误?

调用手册中的实际工作:

加载Lua块(不运行它)。如果没有错误,lua_load将编译后的块作为lua函数推送到堆栈顶部。否则,将推送错误消息。


因此,您可以检查
luaL\u loadstring
的返回值,如果它返回错误,请检查堆栈中的错误消息。

这只是余浩回答的一个示例。
请不要害怕,这只是一些Pascal程序的摘录:-)

procedure TForm1.按钮1点击(发送方:TObject);
常数
脚本='a=56+';//luaL_loadstring()将无法加载此代码
变量
L:普鲁亚州;
开始
//启动Lua;
L:=luaL_newstate;
如果我没有那么
尝试
//加载Lua库
luaL_openlibs(L);
//加载包含要运行的脚本的字符串
如果luaL_loadstring(L,PChar(Script))为0,则
//如果出现错误,则错误消息位于堆栈顶部
ShowMessage('加载()脚本失败'#10+字符串(lua_-tostring(L,-1)))
否则开始
//让Lua运行脚本
如果lua_pcall(L,0,0,0)0那么
ShowMessage('无法运行脚本'#10+字符串(lua#u-tostring(L,-1)))
否则开始
lua_getglobal(L,'a');
ShowMessage('OK'#10'a='+IntToStr(lua#u tointeger(L,-1));
结束;
结束;
最后
//关闭Lua;
卢厄关闭(L);
结束;
结束;

@meds我没有真正检查它,但我认为这与检查C API堆栈中的其他字符串是一样的。
procedure TForm1.Button1Click(Sender: TObject);
   const
      Script = 'a = 56+';  // luaL_loadstring() would fail to load this code
   var
      L: Plua_State;
begin
   // Start Lua;
   L := luaL_newstate;
   if L <> nil then
      try
         // Load Lua libraries
         luaL_openlibs(L);
         // Load the string containing the script we are going to run
         if luaL_loadstring(L, PChar(Script)) <> 0 then
            // If something went wrong, error message is at the top of the stack
            ShowMessage('Failed to load() script'#10+String(lua_tostring(L, -1)))
         else begin
            // Ask Lua to run script
            if lua_pcall(L, 0, 0, 0) <> 0 then
               ShowMessage('Failed to run script'#10+String(lua_tostring(L, -1)))
            else begin
               lua_getglobal(L, 'a');
               ShowMessage('OK'#10'a = ' + IntToStr(lua_tointeger(L, -1)));
            end;
         end;
      finally
         // Close Lua;
         lua_close(L);
      end;
end;