代码之家  ›  专栏  ›  技术社区  ›  Kevlar

最近有没有Lua到JavaScript的转换器或解释器?[关闭]

  •  30
  • Kevlar  · 技术社区  · 16 年前

    我需要找到一个好的Lua-to-JavaScript转换器;luaforge.org上的lua2js已经过时(3岁左右,看起来在Lua 5.1上不起作用),我还没有在Google上找到任何东西。

    有没有人有其他转换器的经验?它应该在Lua5.1上工作,最好是基于.NET的,但是.NET不是一个要求。javascript lua解释器也可以工作。

    9 回复  |  直到 16 年前
        1
  •  9
  •   SheetJS    11 年前

    一个新的挑战者出现了:Lua.js https://github.com/mherkender/lua.js

    有关证明其成熟性的精彩演示,请参见 https://github.com/ghoulsblade/love-webplayer

    js的工作原理是将Lua代码直接转换为ECMAscript(包括JavaScript、ActionScript),这使得它比试图用JavaScript实现Lua虚拟机的解决方案具有重要的速度优势。

        2
  •  8
  •   Javier    16 年前

    这是Lua列表中的一个反复出现的问题,我猜是因为这两种语言表面上的相似性。

    不幸的是,有许多重要的区别并不那么明显。要使其工作,要么需要一个针对JS而不是Lua字节码的成熟编译器,要么需要用JavaScript重写Lua VM。

    我不知道Lua2js最初的目标;但是如果它只是一个有限的“翻译”,那么编写打算翻译的Lua代码会否定大多数(全部?)关于Lua的美好事情。例如,我不认为可以将函数用作表键,因为在JavaScript中,键只是字符串(和数字)?我不确定)。

    NET的选择更合理,可以改变现有的编译器来发射CLR字节码而不是标准的LUA字节码。即使CLR是为其他类型的语言设计和优化的,它绝对是通用的,可以很好地运行。主要的障碍是图书馆的可用性。

    我刚找到的另一个选择是 this paper 作者Roberto Ierusalmschy和Fabio Mascarenhas,他们在那里探索将LuaVM字节码转换为CLR字节码。

    像学术论文上的惯例一样,没有写日期的说明,所以我不知道是新的、革命性的还是旧的、被遗忘的。

        3
  •  4
  •   Jakob    13 年前

    Emscripten 包含转换为JavaScript的Lua解释器。你可以 try it in your browser . 但是大小是1.5MB。

        4
  •  4
  •   Benoit Favre    13 年前

    ljs在javascript中有一个lua虚拟机的工作演示。甚至可以使用lua编写的lua解释器在浏览器中编译源代码。

    https://github.com/humbletim/ljs

        5
  •  2
  •   Tom Gaulton    12 年前

    我一直在使用这个实现 https://github.com/mherkender/lua.js 在之前的回答中提到过。它要么离线,要么加载时间解析,我发现它非常容易使用。

    我的Lua脚本是通过C函数调用的,将C代码转换成Javascript并将其与Lua.js连接起来非常简单。

        6
  •  1
  •   dda    9 年前

    参观 http://luajs.org 去看我的作品。

    网站菜单上有演示和基准测试。

    压缩前35.5K,压缩后12.2K。它可以直接访问Javascript对象/数组。几乎每天都在更新。

    它比lua.vm.js快。(由于元表实现的原因,速度不快),我一直在优化它。

        7
  •  0
  •   lacroix1547    16 年前

    将javascript转换为浏览器端的javascript替换非常有趣。我们也可以在浏览器上采取一些类型安全措施。将javascript作为一个平台的目标是最普遍的平台之一,这个星球上的浏览器。GWT做java2js,但我不确定是否只想在应用程序中介绍几页GWT。我得考虑一下。作为一个表中的键,必须要做一些魔术。也许只需在编译时为每个函数指定一个唯一的名称,并将其用于键。您还可以为所有键添加前缀以进行类型检查,这是一个很好的开始。

        8
  •  0
  •   akauppi    15 年前

    一种方法是 LuaSub 生成JavaScript而不是Lua输出。这是可以做到的,只要付出合理的努力(目前LuaSub没有做到这一点)。

    在编译时可能会发现JS不能满足Lua需求的地方,并导致错误。

    我将来会做很多JS+SVG的工作,如果JS方面出现问题,这可能是一件值得尝试的事情。如果还有人想去,请去。LuaSub的消息来源就在那里。

    最初,LuaSub被设计成Lua 5.1的语法扩展程序,以引入易用性概念(s.a.增量,类型检查),而不需要与标准Lua保持制动兼容性,也不需要对其进行修补。它类似于 MetaLua 在这方面(这似乎变得更为普遍)。

        9
  •  0
  •   max    13 年前

    我已经为ECMAscript静态编译器编写了部分完整的Lua。

    https://github.com/mherkender/lua2js-experiment

    它可能无法满足您的需求,因为该项目缺少许多关键功能,我不急于完成它,因为它是一个死胡同。有关详细信息,请参阅自述文件。

    尽管我在互联网上看到了一些担心,但是只有一些特定于Lua的特性(比如*fenv函数,或者大部分调试库)Javascript不能真正支持。其他的,比如文件库,受到VM可以访问的特性的限制。

    我还亲自尝试了Lua+Emscripten选项,虽然它令人印象深刻,但也非常缓慢。