2011-03-14 29 views
3

我想将BOLT,SEXP和ocamlViz合并为一个大型项目。问题是,SEXP和BOLT使用CamlP4,而ocamlviz使用camlp5。但是我怎样才能将这些调用结合到ocamlc/ocamlopt的-pp参数的一个链中呢?结合camlp4和camlp5在ocamlopt的-pp字符串?

这是我没有ocamlviz呼吁实际项目: ocamlopt.opt -c -I + DYNLINK -I +螺栓-I +线程-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

回答

1

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

0

如果您将-printer OCaml传递给Camlp4,它将以源格式输出预处理的O'Caml文件。然后您可以在另一步中使用Camlp5再次解析该文件。

+0

这不起作用,因为camlp4将无法识别旨在被ocamlviz/camlp5识别的语法 – ygrek 2011-03-29 09:15:26