Moon#C# 实现的 Lua 解释器

联合创作 · 2023-10-02 01:22

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;
}
浏览 4
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报