我该如何将Ruby转换为Lua?
2015-8-3 15:48:46
收藏:0
阅读:190
评论:3
有没有自动将 Ruby 代码转换为 Lua 的方法?
我的问题是:
- 有哪些工具可用于此目的?
- 它们的限制是什么?
其中一个主要目标是,当我执行(转换为)Lua 程序时,能够绕过 Ruby 解释器。如果在转换过程中需要调用 Ruby 解释器,我不介意,但我不想在运行新生成的 Lua 代码时依赖 Ruby 解释器。
更新:
我已经对此主题进行了相当多的研究,并且 个人而言 没有找到解决方案(这就是为什么我在 StackOverflow 上提出这个问题的原因)。
如果有人感兴趣,这是我深入研究过的内容:
点赞
用户195701
** Note: 我同意其他人的观点,你应该重新编写你的程序。这个答案只是一个想法,我希望有人能真正看一看。**
已经有一些 Ruby-to-X 转换器,你可以使用它们来引导。好的转换器已经有了词法分析器和解析器,所以你只需要处理后台。如果你选择一种类似于 Lua 的语言,那么你甚至可以更简化。
例如,有一些 Ruby-to-Javascript 实现,比如 RubyJS。暂时不考虑元方法、self 语法糖、库差异和一些语义上的差异,Lua 可以被看作是一种 JavaScript 的子集,具有更冗长的语法。
有了这个想法,你可以通过改变一些{ },修改大部分后端生成器:
// 一些随机 JS
while(x < 56 && y == 40) {
print('Hello World!');
}
-- 你能让它生成的:
while x < 56 and y == 40 do
print 'Hello World!'
end
也许有一些时候它依赖于 JavaScript 特定的特性,但即使是这样,大部分也可以模拟。
// JavaScript 有一个=== 操作符,强制类型相等
'5' === 5 // FALSE!
-- Lua 没有这个,但模拟起来很容易。
(type('5') == type(5)) and ('5' == 5)
不,说实话,这不是一个容易的项目,但我认为这绝对值得投资时间。我希望这会有所帮助! :)
2012-11-07 04:25:30
用户975097
Universal-transpiler 是一种 SWI-Prolog 库,可以将一个小型 Ruby 子集转换为 Lua 和其他几种语言。
这是在 Prolog 中使用它的一个示例,以 Ruby 源代码作为输入:
:- use_module(library(transpiler)).
:- set_prolog_flag(double_quotes,chars).
:- initialization(main).
main :-
translate("def add(a,b) return a + b end def squared(a) return a*a end def add_exclamation_point(parameter)
return parameter + \"!\" end",'ruby','lua',X),
atom_chars(Y,X),
writeln(Y).
...这是它生成的 Lua 源代码:
function add(a,b)
return a..b
end
function squared(a)
return a*a
end
function add_exclamation_point(parameter)
return parameter.."!"
end
2016-09-17 01:53:46
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
很抱歉,如果这不是你想听到的答案,但是,朋友,实际上没有一种实用的方法可以做到。我不会说 Ruby 比 Lua 更丰富,因为我还没有对后者进行足够的研究,但从我所知道的和看到的来看,
人们可以继续讨论将高级语言编译成另一种语言的可能性和不可能性,但对于你来说,底线是:早点放弃。停止搜索,开始手动重写你的程序。