caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Gabriel Scherer <gabriel.scherer@gmail.com>
To: "Richard W.M. Jones" <rich@annexia.org>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Some simple(?) questions about camlp4 <:quotations< ... >>
Date: Wed, 28 Dec 2011 18:23:18 +0100	[thread overview]
Message-ID: <CAPFanBHntNrQtep8Du=mJCWLb-8QyyZ8pJtH6qfrU0oBiq1uTA@mail.gmail.com> (raw)
In-Reply-To: <20111228162556.GA2806@annexia.org>

> (1) Is any other syntax available for quotations apart from
> <:foo< ... >> and the default quotation expander << ... >>?

No. That said, you could implement your own quotations mechanism as a
Camlp4 extension (changing the grammar of the language). The benefit
of the "official" quotations is that you don't touch the existing
OCaml grammar (... of Camlp4).

> (2) Is there any way to escape >> inside a quotation.

Camlp4 doesn't touch the content of quotations... except that the
lexer needs to know when they stop. ">>" is always interpreted as the
quotation delimiter, and this is hardcoded in the lexer, so you can't
change that. For example escaping with "\>>" would not work. Any
non-">>" symbol will be handled by you (that is, the parser you set up
for your quotation) and you can do as you wish. For example you could
specify to your users that you will always interpret ">\>" as if it
was a ">>", providing an escape mechanism.

> (3) In a custom-defined quotation expander, does the antiquotation
> syntax $bar$ have any special meaning?

No, if you have told the lexer that you doesn't want it to lex
antiquotations specially. This can be configured through a Camlp4
option.(Camlp4_config.antiquotations).

That said, I think antiquotations are very convenient for any DSL (as
it allows your users to compose pieces of DSL program using OCaml
constructs such let bindings, etc.). If I were you, I would change the
DSL syntax to free the $...$ for antiquotations.

On Wed, Dec 28, 2011 at 5:25 PM, Richard W.M. Jones <rich@annexia.org> wrote:
>
> I'm writing a mini-DSL that'll use camlp4 quotations.  In general
> http://brion.inria.fr/gallium/index.php/Quotation has been very
> helpful, but I still have a few questions:
>
> (1) Is any other syntax available for quotations apart from
> <:foo< ... >> and the default quotation expander << ... >>?
>
> (2) Is there any way to escape >> inside a quotation.  In particular
> some of my quotations will contain C code, and >> is a C operator
> (right shift).  This is not a show-stopper, but it'd be nice to be
> able to offer a way for C code to contain right shifts, in a way that
> is easily comprehensible to C programmers.
>
> (3) In a custom-defined quotation expander, does the antiquotation
> syntax $bar$ have any special meaning?  I want to use $variable
> substitutions, so if $ is being treated specially this might cause
> problems.
>
> Rich.
>
> --
> Richard Jones
> Red Hat
>
> --
> Caml-list mailing list.  Subscription management and archives:
> https://sympa-roc.inria.fr/wws/info/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>


      reply	other threads:[~2011-12-28 17:23 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-28 16:25 Richard W.M. Jones
2011-12-28 17:23 ` Gabriel Scherer [this message]

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='CAPFanBHntNrQtep8Du=mJCWLb-8QyyZ8pJtH6qfrU0oBiq1uTA@mail.gmail.com' \
    --to=gabriel.scherer@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=rich@annexia.org \
    /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;
as well as URLs for NNTP newsgroup(s).