2015-09-24 52 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