Moon#C# 實(shí)現(xiàn)的 Lua 解釋器
Moon# 是一個(gè)完全用 C# 實(shí)現(xiàn)的 Lua 解釋器,可用于 .NET、Mono、Xamarin 和 Unity3D 平臺(tái)。
特性:
- 99%與Lua 5.2兼容(唯一不受支持的功能是對(duì)弱表的支持)
- 支持metalua風(fēng)格的匿名函數(shù)(lambda風(fēng)格)
- 易于使用的API
- 調(diào)試器對(duì)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等超前平臺(tái)上運(yùn)行
- 在IL2CPP轉(zhuǎn)換后的代碼上運(yùn)行
- 在需要.NET 4.x便攜式類庫的平臺(tái)上運(yùn)行(例如Windows Phone)
- 沒有外部依賴關(guān)系,在盡可能少的目標(biāo)中實(shí)現(xiàn)
- 與CLR對(duì)象輕松高效地互操作,并在支持的情況下生成運(yùn)行時(shí)代碼
- 與方法,擴(kuò)展方法,重載,字段,屬性和索引器互操作
- 支持完整的Lua標(biāo)準(zhǔn)庫,只有很少的例外(大多數(shù)位于'debug'模塊上)和一些擴(kuò)展(大部分在字符串庫中)
- .NET 4.x目標(biāo)的異步方法
- 支持轉(zhuǎn)儲(chǔ)/加載字節(jié)碼以進(jìn)行混淆,并在運(yùn)行時(shí)更快地進(jìn)行解析
- 嵌入式JSON解析器(無依賴項(xiàng)),可在JSON和Lua表之間進(jìn)行轉(zhuǎn)換
- 輕松選擇退出Lua標(biāo)準(zhǔn)庫模塊以沙盒哪些腳本可以訪問
- 易于使用的錯(cuò)誤處理(腳本錯(cuò)誤是例外)
- 支持協(xié)程,包括將協(xié)程作為C#迭代器進(jìn)行調(diào)用
- REPL解釋器,以及可在幾行代碼中輕松實(shí)現(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;
}評(píng)論
圖片
表情
