我以前在業餘時間使用IronLua。 Lexing和解析目前已完成。因爲在.NET中實現Lua協程而不使用骯髒的線程攻擊並不容易,所以我停止了對它的工作。這與我如何編譯Lua函數有關,並且這是我在設計編譯器時需要儘早解決的一個問題。用於協同實現的CPS編譯器
我一直在研究協程的實現,事實證明我對延續的初步看法是正確的。由於協程創建,良率和其他操作不是語言關鍵字,而是「協同程序」表中的函數,因爲協程表可能已被先前腳本覆蓋,所以無法靜態切換到CPS樣式編譯。雖然我明白覆蓋協程表的腳本很少發生,但我希望保持安全並儘可能乾淨地處理問題。
我的計劃是對每個表達式使用continuation-passing樣式,無論我們是否在協同程序中。一切都會延續下去。
除了首先編寫編譯器的明顯困難,以及在其上添加CPS轉換之外,我對此設計決策及其性能影響感到困擾。
我在找.NET關於Lua協程實現的建議。
謝謝你的時間。
謝謝,我會看看他們的來源。將更新。 – Raine 2011-08-09 17:50:26