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;
}评论
