我放入https://gist.github.com/larsr/6b3cd6f62d54d56e3f9a的一些OCaml代码使用menhir
解析器和js_of_ocaml
库。我已经使用opam
安装了它们。
代码来自http://toss.sourceforge.net/ocaml.html。 它是词法分析器和解析器以及调用它们的主程序。 目标是从ocaml代码生成一个javascript程序,并在网页中运行它。
我能够使用来自repo中Makefile的menhir
make
来编译第一个Main程序,这样做
ocamlbuild -use-menhir -menhir "menhir --external-tokens Lexer" Main.native
我可以编译一个仅使用js_of_ocaml
的程序,make Formula.js
,
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代码。我得到的错误是编译器无法找到Js
使用的模块JsClient
。代码似乎在我的home-dir的opam库中,但我无法获得ocamlfind
使用它的正确参数。
如何将JsClient.ml
编译为JsClient.js
?
答案 0 :(得分: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