我正在尝试使用js_of_ocaml构建这个程序。根据这个答案,我的makefile中有以下行
OCAMLC = ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax -syntax camlp4o -linkpkg -g -dtypes
但是,当我尝试构建时,出现以下错误:
ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax -syntax camlp4o -linkpkg -g -dtypes -c types.ml
> File "types.ml", line 472, characters 11-12:
> Parse error: [type_longident] expected after ")" (in [type_ident_and_parameters])
> File "types.ml", line 1:
该文件的违规行是这样的:
type ('t,'v) parser = ('t list -> 'v -> unit) -> 't list -> unit
我对OCaml还很陌生,所以我不完全确定发生了什么。-syntax camlp4o
做什么?我可能需要更改源中的哪些内容才能与js_of_ocaml兼容?
>camlp4o
提供了与原版OCaml语法相同的语法,但略有不兼容:parser
是camlp4o
中的一个特殊关键字。 这就是为什么如果使用camlp4o
语法parser
被拒绝的原因。
您可以通过重命名 parser
或使用 js_of_ocaml
的 PPX 语法扩展而不是 CamlP4 来解决此问题。 请查看 https://ocsigen.org/js_of_ocaml/api/Ppx_js 以获取此较新的语法帮助程序的详细信息,以获取js_of_ocaml
。