js_of_ocaml Camlp4类型定义中的解析错误

时间:2018-01-14 17:41:12

标签: ocaml camlp4 js-of-ocaml

我正在尝试使用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兼容?

1 个答案:

答案 0 :(得分:1)

camlp4o提供与vanilla OCaml语法相同的语法,但略有不兼容性:parsercamlp4o中的特殊关键字。这就是使用parser语法时拒绝camlp4o的原因。

您可以通过重命名parser或使用js_of_ocaml的PPX语法扩展而不是CamlP4来解决此问题。有关js_of_ocaml的新语法助手的详细信息,请查看https://ocsigen.org/js_of_ocaml/api/Ppx_js