我正在尝试使用js_of_ocaml构建this program。根据{{3}},我的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兼容?
答案 0 :(得分:1)
camlp4o
提供与vanilla OCaml语法相同的语法,但略有不兼容性:parser
是camlp4o
中的特殊关键字。这就是使用parser
语法时拒绝camlp4o
的原因。
您可以通过重命名parser
或使用js_of_ocaml
的PPX语法扩展而不是CamlP4来解决此问题。有关js_of_ocaml
的新语法助手的详细信息,请查看https://ocsigen.org/js_of_ocaml/api/Ppx_js。