ocaml - 将camlp4和camlp5结合在ocamlopt的-pp字符串中?

标签 ocaml camlp4

我想为一个大型项目结合 BOLT、SEXP 和 ocamlViz。问题是,SEXP 和 BOLT 使用的是 CamlP4,而 ocamlviz 使用的是 camlp5。但是,对于 ocamlc/ocamlopt 的 -pp 参数,我怎样才能将调用组合到一个链中呢?

这是我对没有 ocamlviz 的实际项目的呼吁:
ocamlopt.opt -c -I +dynlink -I +bolt -I +threads -I +lablgtk2 -I +extlib -I +pcre -I +netsys -I +netstring -I +json-wheel -I +num -I + nums -I +sexplib -I +zip -I +xml-light -I +xmlrpc-light -I +equeue -I +netclient -g -annot -p -thread -pp 'camlp4o/usr/lib/ocaml/bolt/bolt_pp.cmo -logger '\''foo.native'\'' -level DEBUG -- -I/usr/lib/ocaml/sexplib -I/usr/lib/ocaml/type-conv pa_type_conv.cmo pa_sexp_conv.cmo' -o foo.cmx foo.ml

最佳答案

由于显而易见的原因,不可能同时通过两个不同的预处理器预处理源文件,并且一个接一个地使用也是不可能的,因为第一个不会识别用于第二个的语法。解决方案是要么在不同的源文件中使用不同的语法,要么将 ocamlviz 移植到 camlp4。

关于ocaml - 将camlp4和camlp5结合在ocamlopt的-pp字符串中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5300017/

相关文章:

ocaml - 使用 dynlink 加载模块重新初始化顶层值

ocaml - 为什么用 sexp return 注释类型会导致 Unbound value int_of_sexp?

syntax - 带有语法扩展的 OCaml 顶层

ubuntu - 如何在 emacs、ubuntu 上包含camlp4

recursion - 为什么 ocaml 需要 "let"和 "let rec"?

types - mli 文件和 ml 文件中的签名之间的 OCaml 共享结构

functional-programming - OCaml:除了标识函数之外,还有类型为 'a -> ' 的函数吗?

linker - 包括使用 dune 的子包(没有为模块提供实现,但模块位于 dune 文件中)

macos - 使 OPAM 与 MacOS X 下的系统编译器一起工作

ocaml - OCaml中的 "revised syntax"是什么?