Moon#C# 實現(xiàn)的 Lua 解釋器
Moon# 是一個完全用 C# 實現(xiàn)的 Lua 解釋器,可用于 .NET、Mono、Xamarin 和 Unity3D 平臺。
特性:
- 99%與Lua 5.2兼容(唯一不受支持的功能是對弱表的支持)
- 支持metalua風(fēng)格的匿名函數(shù)(lambda風(fēng)格)
- 易于使用的API
- 調(diào)試器對Visual Studio Code的支持(不支持PCL目標(biāo))
- 可通過Web瀏覽器和Flash訪問的遠(yuǎn)程調(diào)試器(不支持PCL目標(biāo))
- 在.NET 3.5,.NET 4.x,.NET Core,Mono,Xamarin和Unity3D上運(yùn)行
- 在iOS等超前平臺上運(yùn)行
- 在IL2CPP轉(zhuǎn)換后的代碼上運(yùn)行
- 在需要.NET 4.x便攜式類庫的平臺上運(yùn)行(例如Windows Phone)
- 沒有外部依賴關(guān)系,在盡可能少的目標(biāo)中實現(xiàn)
- 與CLR對象輕松高效地互操作,并在支持的情況下生成運(yùn)行時代碼
- 與方法,擴(kuò)展方法,重載,字段,屬性和索引器互操作
- 支持完整的Lua標(biāo)準(zhǔn)庫,只有很少的例外(大多數(shù)位于'debug'模塊上)和一些擴(kuò)展(大部分在字符串庫中)
- .NET 4.x目標(biāo)的異步方法
- 支持轉(zhuǎn)儲/加載字節(jié)碼以進(jìn)行混淆,并在運(yùn)行時更快地進(jìn)行解析
- 嵌入式JSON解析器(無依賴項),可在JSON和Lua表之間進(jìn)行轉(zhuǎn)換
- 輕松選擇退出Lua標(biāo)準(zhǔn)庫模塊以沙盒哪些腳本可以訪問
- 易于使用的錯誤處理(腳本錯誤是例外)
- 支持協(xié)程,包括將協(xié)程作為C#迭代器進(jìn)行調(diào)用
- REPL解釋器,以及可在幾行代碼中輕松實現(xiàn)自己的REPL的功能
- 完整的XML幫助以及http://www.moonsharp.org上的演練
示例代碼:
double MoonSharpFactorial()
{
string script = @"
-- defines a factorial function
function fact (n)
if (n == 0) then
return 1
else
return n*fact(n - 1)
end
end
return fact(5)";
DynValue res = Script.RunString(script);
return res.Number;
}評論
圖片
表情
