2015-09-24 25 views
1

尝试将ocaml编译为javascript。

我已经放在https://gist.github.com/larsr/6b3cd6f62d54d56e3f9a中的一些OCaml代码使用了menhir解析器和js_of_ocaml库。我用opam安装了它们。编译ocaml无法在opam库中找到模块,js_from_ocaml中的Js.ml

该代码来自http://toss.sourceforge.net/ocaml.html。 它是一个词法分析器和一个解析器以及一个调用它们的主程序。 目标是从ocaml代码生成一个javascript程序并从网页中运行它。

我能够从Makefile文件回购,这确实

ocamlbuild -use-menhir -menhir "menhir --external-tokens Lexer" Main.native 

,我可以编译只使用js_of_ocaml程序,与make Formula.js,这确实与make编译只使用menhir第一主程序

ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax \ 
     -syntax camlp4o -linkpkg -o Formula.byte Formula.ml 
js_of_ocaml Formula.byte 

我的问题是,现在我无法得到ocamlfind建立JsClient.js,与

make JsClient.js 

所以我无法为'JsClient.ml'生成JavaScript代码。我得到的错误是编译器无法找到JsClient使用的模块Js。该代码似乎在我的主目录中的opam库中,但我无法获得使用ocamlfind的正确参数。

如何编译JsClient.mlJsClient.js

+0

我最后写一个新的Makefile,也许是有用的有人来看看。 https://gist.github.com/larsr/6b3cd6f62d54d56e3f9a#file-makefile – larsr

回答

1

您用于编译JsClient.ml文件的规则不好。

JsClient.byte: 
    ocamlbuild -use-menhir -menhir "menhir --external-tokens Lexer" 

正如你所说,此文件中使用的模块Js所以你需要用同样的方式比文件Formula.ml编译:

ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax \ 
     -syntax camlp4o -linkpkg -o JsClient.byte JsClient.ml 
js_of_ocaml JSClient.byte