有免费的OCaml到C翻译吗?

Rel*_*lla 11 c c++ ocaml

所以我有很好的OCaml代码(50000行).我想把它移植到C.那么有没有免费的OCaml到C翻译器?

Chr*_*way 10

这可能不是你想要的,但是你可以让OCaml编译器在C中转储它的运行时代码:

ocamlc -output-obj -o foo.c foo.ml
Run Code Online (Sandbox Code Playgroud)

你得到的基本上是字节码的静态转储.结果将类似于:

#include <caml/mlvalues.h>
CAMLextern void caml_startup_code(
           code_t code, asize_t code_size,
           char *data, asize_t data_size,
           char *section_table, asize_t section_table_size,
           char **argv);
static int caml_code[] = {
0x00000054, 0x000003df, 0x00000029, 0x0000002a, 0x00000001, 0x00000000, 
/* ... */
}

static char caml_data[] = {
132, 149, 166, 190, 0, 0, 3, 153, 0, 0, 0, 118, 
/* ... */
};

static char caml_sections[] = {
132, 149, 166, 190, 0, 0, 21, 203, 0, 0, 0, 117, 
/* ... */
};

/* ... */

void caml_startup(char ** argv)
{
    caml_startup_code(caml_code, sizeof(caml_code),
                      caml_data, sizeof(caml_data),
                      caml_sections, sizeof(caml_sections),
                      argv);
}
Run Code Online (Sandbox Code Playgroud)

你可以编译它

gcc -L/usr/lib/ocaml foo.c -lcamlrun -lm -lncurses
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅OCaml手册.


Mic*_*and 6

OCamlJS项目将是一个很好的起点。它将 OCaml 编译为 JavaScript;应该可以修改它以将 OCaml 编译为 ActionScript。编译到 C 可能需要更多的工作 - 没有任何类型的垃圾收集 - 但并非不可能,特别是如果 Adob​​e Alchemy 提供 API 来满足其中一些需求。


tim*_*day 5

如果我有一些 OCaml 代码,我想“在浏览器中”运行客户端(根据对问题的评论,这似乎是您的意图),我不得不说我的第一个想法是执行以下操作之一

  • 使用OcamlJava 之类的东西将 OCaml 编译为 Java 字节码并使用 Java web start 或类似方法进行部署。
  • 移植到在 .NET 上运行的 F#(OCaml 的 Microsoft 版本),并使用 MS 提供的任何内容进行网络部署。

也许如果我真的疯了:

  • 使用 Alchemy 将 OCaml 解释器(我认为它是在“C”中实现的)移植到 Flash,并让它运行我的原始(未移植)代码的 OCaml 字节码。

两阶段的 OCaml-to-C、C-to-Flash 并不真正吸引人。


dar*_*uma 5

有一个C语言源代码编译器的OCaml字节码可执行文件:https : //github.com/ocaml-bytes/ocamlcc

因此,首先将代码编译为字节码可执行文件,然后使用ocamlcc。