gpt4 book ai didi

c - 逐行执行Lua脚本时检测代码块

转载 作者:行者123 更新时间:2023-12-02 02:27:19 25 4
gpt4 key购买 nike

这听起来像是一个愚蠢的问题,但我看不到任何地方提到这个特定问题。基本上:

我想逐行执行一个Lua脚本,主要是为了能够随时随地暂停/恢复执行。我所做的很简单:使用 luaL_loadbuffer() 加载一个 block ,然后发出 lua_pcall()。

问题是......我怎样才能正确检测 Lua block 以便原子地执行它们?

例如,假设脚本中有一个函数——通过上述方法逐行执行文件,我似乎无法正确识别该函数,结果加载了它的内容并一一调用。

我可以想象一种解决方案是手动处理一个堆栈,在堆栈中我可以在脚本中识别我可以识别的控制关键字(“function”、“if”、“do”等)及其相应的“end”子句 if我找到嵌套 block 。一旦我按下最后的“结束”,我就调用了整个 block ,但这听起来简直糟透了。肯定有更好的方法来做到这一点。

希望它有意义,谢谢!

最佳答案

请看Lua coroutines为脚本游戏实体实现该功能。思路是yield您提到的 sleep() 和 waitforevent() 例程中的协程,然后是 resume稍后(例如在超时或事件发生后)。

关于c - 逐行执行Lua脚本时检测代码块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5399063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com