这可能听起来像一个愚蠢的问题,但我在这个特定问题的任何地方都看不到。基本上:逐行执行Lua脚本时检测代码块
我想逐行执行一个Lua脚本,主要是为了能够随时随地暂停/恢复执行。我所做的很简单:用luaL_loadbuffer()加载一个块,然后发出一个lua_pcall()。
事情是...如何正确检测Lua块以便以原子方式执行它们?
例如,假设脚本中有一个函数 - 通过使用上述方法逐行执行文件,我似乎无法正确识别该函数,因此其内容是加载并逐一调用。
我可以想象,一种解决方案是手动处理一个栈,在那里我推动控制关键字,我可以在脚本中识别(“函数”,“如果”,“做”等)及其相应的“结束”子句如果我找到嵌套块。一旦我推动最后的“结束”,我打电话给整个街区,但这听起来很糟糕。当然,必须有更好的方式来做到这一点。
希望它有道理,谢谢!
谢谢,亚历山大也提到了这一点。那么我会研究一下协程。 – 2011-03-23 15:12:33
对不起,回复迟了。协程是我所需要的,它的工作非常好!再次感谢! – 2011-03-31 20:20:46
@Augustín:接受Judge的回答:-) – 2011-03-31 22:44:11