這可能聽起來像一個愚蠢的問題,但我在這個特定問題的任何地方都看不到。基本上:逐行執行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