Am Montag, den 02.03.2015, 19:24 +0100 schrieb Maxence Guesdon: > On Mon, 2 Mar 2015 18:07:40 +0000 > Andreas Hauptmann wrote: > > > On Mon, 2 Mar 2015 18:48:46 +0100 > > Maxence Guesdon wrote: > > > > > It seems that ocamlfind only supports camlp4 for preprocessors. Am I > > > right ? Does anybody known how to achieve this ? > > > > Take a look at the META file of camlp5. If i remember right, it achieves > > similar without native support inside ocamlfind. > > Indded, thanks. But it seems that ocamlfind can handle only one > preprocessor, instead of building a command chaining the preprocessors. Chaining isn't that easy. Remember that preprocessors cannot only output source code, but also parsed ASTs. But ASTs are normally not understood as input by the next preprocessor in the chain. Also, preprocessors usually exist to process non-standard syntax. In a chain pp1|pp2, however, pp1 will most likely not understand the extensions understood by pp2, and instead run into a parser error. That makes chaining a questionable concept. Note that chaining works with the new-style ppx preprocessors. This is possible because these preprocessors are restricted to the official syntax (which was extended to make this useful). The ppx chaining is directly implemented in the compiler. > When I have more than one packages defining a preprocessor, I get: > > ocamlfind: Several packages are selected that specify preprocessors: > package camlp4 defines `camlp4', package mypkg.syntax defines > `./mypp' > [...] > So the preprocessor machinery seems very camlp{4,5} oriented. Yes, it is, at least regarding the style the preprocessor is invoked. What is imaginable is that there is some additional preprocessor driver. Let's call it ocamlpp. It would do the chaining for those preprocessors that are compatible. If you call it like ocamlpp (command | object.cmo) ... it runs the preprocessors on the command line in turn, either by executing a command or loading the object. Such a driver would fit into the findlib framework. But as said, I doubt that such a driver would be very useful, as chaining several preprocessors is normally not possible. > I think I'll just require the user to add -pp "ocamlfind mypkg/mypp" on > command line option. I guess so. Gerd -- ------------------------------------------------------------ Gerd Stolpmann, Darmstadt, Germany gerd@gerd-stolpmann.de My OCaml site: http://www.camlcity.org Contact details: http://www.camlcity.org/contact.html Company homepage: http://www.gerd-stolpmann.de ------------------------------------------------------------