评估Lua在裸机项目中的应用

我正在评估Lua在裸机项目中的应用(其中大部分已经在运行),看起来它就是我们所需要的。

我需要将它放入到我的代码中,并且能够反复地调用Lua,而不会出现任何挂起的情况。我需要像状态机一样反复地调用Lua,并在每次调用时返回一个状态,来告诉我“继续调用我,我还没有完成”、“停止,我有一个错误”或“停止,没有错误,脚本已经完成”。

我见过允许Lua回调c语言的挂钩,以对每行代码或字节码进行评估,但我不能使用回调。

是否存在状态机实现的Lua?

点赞
用户7509065
用户7509065

你正在寻找 lua_resume C 函数,该函数使用 协同程序。从其文档中可以看到:

如果协同程序 yield,则 lua_resume 返回 LUA_YIELD,如果协同程序在无错误的情况下完成其执行,则返回 0,如果出现错误,则返回错误代码(参见 lua_pcall)。

这听起来就像你所描述的。

2020-04-29 04:46:58