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

手机扫一扫分享

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

手机扫一扫分享

编辑 分享
举报