Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Gerd Stolpmann <info@gerd-stolpmann.de>
To: Maxence Guesdon <Maxence.Guesdon@inria.fr>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] syntax extensions with ocamlfind
Date: Tue, 03 Mar 2015 10:40:14 +0100	[thread overview]
Message-ID: <1425375614.6247.18.camel@e130.lan.sumadev.de> (raw)
In-Reply-To: <20150302192423.11734fc7@alcazar2>

[-- Attachment #1: Type: text/plain, Size: 2736 bytes --]

Am Montag, den 02.03.2015, 19:24 +0100 schrieb Maxence Guesdon:
> On Mon, 2 Mar 2015 18:07:40 +0000
> Andreas Hauptmann <andreas@ml.ignorelist.com> 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
------------------------------------------------------------


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

  reply	other threads:[~2015-03-03  9:40 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-02 17:48 Maxence Guesdon
2015-03-02 18:07 ` Andreas Hauptmann
2015-03-02 18:24   ` Maxence Guesdon
2015-03-03  9:40     ` Gerd Stolpmann [this message]
2015-03-04 10:17       ` Maxence Guesdon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1425375614.6247.18.camel@e130.lan.sumadev.de \
    --to=info@gerd-stolpmann.de \
    --cc=Maxence.Guesdon@inria.fr \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox