Erlang 脚本语言解释器
Posted
技术标签:
【中文标题】Erlang 脚本语言解释器【英文标题】:Erlang Scripting Language Interpreter 【发布时间】:2009-12-21 06:28:26 【问题描述】:有谁知道在 Erlang 中实现脚本语言解释器(适合游戏的东西)?像 javascript 或 Lua 这样的东西会很棒。
【问题讨论】:
你为什么想要一个用 Erlang 编写的 Javascript 或 Lua 解释器?你认为你会从这样的事情中得到什么样的好处? 我正在用 Erlang 编写一个游戏服务器,我希望玩家能够为在服务器上运行的游戏编写脚本。 在某些情况下,不使用 Erlang 作为公开的脚本语言有一个非常重要的原因。如果您要允许玩家创建脚本,那么您需要一种方法来隔离他们可以做什么。你可能会这样做的一个例子是在泥泞中。将某种类型的解释器放入 erlang 将是允许玩家创建内容的好方法,但仍然能够限制他们的脚本可以执行的操作。 【参考方案1】:您可以尝试C/C++ port driver 来运行 lua(或其他)语言解释器,erlua 更可能是您需要的(我猜它通过端口驱动程序工作)。
【讨论】:
【参考方案2】:Erlang 本身可以用作脚本语言。请参阅 Erlang 文档中的 escript。
【讨论】:
这很酷,但我正在寻找一种类似于我提到的两种语言。我有一种感觉,Erlang 本身不会做出如此出色的脚本语言。 =/【参考方案3】:我赞同 Vijay 使用 Erlang 本身的建议。但是,我还要指出Reia 的存在,这似乎正是您所要求的。
编辑: 对,所以有erlyjs,一个针对 Erlang 虚拟机的 JavaScript 编译器。我不知道这个项目处于什么开发阶段,进展如何等等,但你可以检查一下。不知道是不是需要提前编译JS代码,你自己看看吧……
Here 你会发现代码库的几个 github 分支之一。据我所知,全部在 Erlang 中。
再说一次,这不是一个成熟的产品。但是,随着 CouchDB 的兴起,这样的东西实际上可能在某些重要方面很有用......所以它可能很快就会变得成熟。
【讨论】:
也许我的理解不够清楚,但我不想用另一种语言编写 Erlang 程序(例如,将编译为 Erlang 字节码的程序)。我正在寻找的是一个用 in Erlang 编写的解释器。 嗯,来自 Reia 的主页:“Reia(发音为 RAY-uh)是一种类似 Ruby/Python 的脚本语言”。它确实将您的程序编译为字节码,但 Python 也是如此——在这两种情况下,它都会在需要时即时发生。语法与 Erlang IMO 完全不同。我想它与 JS/Lua 并不完全相似,但至少值得一看。无论如何,我不确定是否不可能在基于 Erlang 的引擎上运行 JavaScript。如果我发现了什么,会环顾四周并更新。 是的,erlyjs 看起来是一个很棒的项目,不幸的是 github 版本似乎还很不成熟,而且所有这些都是可用的。原始的 google 代码仓库神秘地消失了:code.google.com/p/erlyjs 我还研究了 CouchDB 如何处理 javascript,我发现它产生了 SpiderMonkey 进程。也许我可以找到一种将 V8 嵌入到 Erlang Cnode 中的方法......真是太糟糕了。不过,感谢您的帮助! 当然。抱歉不知道更有用的东西。如果你确实在 Erlang 代码中嵌入了 V8,那真的会非常酷!快乐的黑客。 :-)【参考方案4】:这个问题出现在谷歌搜索中 - 但 cmets 没有回答原始请求。原始发帖人正在寻找的答案是 github 上的 luerl - https://github.com/rvirding/luerl
Luerl 是在 Erlang 中实现的 lua 5.3 vm,由 Robert Virding(Erlang 最初的开发者之一)开发。
【讨论】:
请注意:luerl 实现了 lua 5.2。使用 5.2 和 5.3 处理整数/浮点数时有一些很大的不同以上是关于Erlang 脚本语言解释器的主要内容,如果未能解决你的问题,请参考以下文章