3

我正在处理大量需要转换为 Ruby 的遗留 C 代码以用于项目。

我在网上看到过 Ruby 到 C 的翻译器,但不是相反。是否有一种简单的方法来解决这个特定问题?

4

5 回答 5

7

您要么必须编写一个 C 到 Ruby 的转换器,这是可能的,但付出的努力可能是不合理的,或者您可以将 C 代码拆分成更小的模块,作为第一步,您可以创建 Ruby 包装器。一旦它们全部用 Ruby 封装并且主要控制流在 Ruby 中完成,您就可以编写一个测试工具(既可以验证替换代码的正确性,也可以帮助逆向工程)并开始用 Ruby 模块替换 C 模块。

如果您将模块用作本机扩展,则分治法应该适用于常规 Ruby,但如果您将 JRuby 之类的东西作为您的运行时环境,这显然会导致进一步的问题。如果您想根据您的评论在 JRuby 中做类似的事情,您正在考虑将 C 模块包装在 JNI 中并以这种方式从 JVM 调用。无论哪种方式都将允许您的 C 代码与 Ruby 代码交互,但这两种方法不可互换。

这两种方法都不会很快,而且都需要大量的工作。

于 2010-04-02T10:43:57.373 回答
0

你可以:

  1. 用 Ruby 编写一个 C 解释器(非常难)。
  2. 用 SWIG 之类的东西包装已编译的 C 代码(更容易)。
于 2010-04-02T10:30:25.283 回答
0

C 编程和 Ruby 编程具有完全不同的编程范式。因此,尽管您可以用任何语言编写 Fortran(或在这种情况下为 C)代码这句老话是正确的,但您最终通过机器翻译获得的 Ruby 代码根本不是 Ruby,除非在语法上。

所以,恕我直言,除了手动(我可能会补充说,由熟练的 Ruby 专家完成)以外的任何方式都是不可能的,或者至少根本没有用。

于 2010-04-02T11:22:08.440 回答
0

也许你可以试试这个https://github.com/jackieju/CPP2Ruby/ 它对 cpp 来说是新鲜的,但对于 c 到 ruby​​ 来说存在的时间更长

于 2019-07-10T12:55:45.163 回答
0

你可以试试Abap2Ruby。它还可以将 cpp 转换为 ruby​​。

于 2020-06-17T09:08:13.070 回答