Moon#C# 实现的 Lua 解释器
Moon# 是一个完全用 C# 实现的 Lua 解释器,可用于 .NET、Mono、Xamarin 和 Unity3D 平台。
特性:
- 99%与Lua 5.2兼容(唯一不受支持的功能是对弱表的支持)
- 支持metalua风格的匿名函数(lambda风格)
- 易于使用的API
- 调试器对Visual Studio Code的支持(不支持PCL目标)
- 可通过Web浏览器和Flash访问的远程调试器(不支持PCL目标)
- 在.NET 3.5,.NET 4.x,.NET Core,Mono,Xamarin和Unity3D上运行
- 在iOS等超前平台上运行
- 在IL2CPP转换后的代码上运行
- 在需要.NET 4.x便携式类库的平台上运行(例如Windows Phone)
- 没有外部依赖关系,在尽可能少的目标中实现
- 与CLR对象轻松高效地互操作,并在支持的情况下生成运行时代码
- 与方法,扩展方法,重载,字段,属性和索引器互操作
- 支持完整的Lua标准库,只有很少的例外(大多数位于'debug'模块上)和一些扩展(大部分在字符串库中)
- .NET 4.x目标的异步方法
- 支持转储/加载字节码以进行混淆,并在运行时更快地进行解析
- 嵌入式JSON解析器(无依赖项),可在JSON和Lua表之间进行转换
- 轻松选择退出Lua标准库模块以沙盒哪些脚本可以访问
- 易于使用的错误处理(脚本错误是例外)
- 支持协程,包括将协程作为C#迭代器进行调用
- REPL解释器,以及可在几行代码中轻松实现自己的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; }
评论