Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
OCamlduce + camlp4
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2007-12-24 (19:37)
From: Nicolas Pouillard <nicolas.pouillard@g...>
Subject: Re: [Caml-list] OCamlduce + camlp4
Excerpts from Alain Frisch's message of Mon Dec 24 17:03:33 +0100 2007:
> Arnaud Spiwack wrote:
> > There I discovered that I couldn't find a camlp4 syntax file for 
> > OCamlduce (to be able to extend OCamlduce's syntax). In my case, I'd 
> > like an equivalent to camlp4orf (original syntax, but revised-syntax 
> > quotations) that handles OCamlduce syntax (though, original-syntax 
> > quotation would require little to change, thus would be all right).
> > 
> > Does anybody know whether it already exists ? (maybe Alain or Nicolas ;) ).
> > 
> > If it does not, I shall consider making one myself, but I will have to 
> > know better of the insides of OCamlduce.
> I'm not aware of a Camlp4 parser for OCamlduce (which probably means 
> that such a thing does not exist). It should not be difficult (only 
> quite boring) to write one. Of course, before writing the grammar, 
> you'll have to extend Camlp4's OCaml syntax tree with new constructions 
> and its translation to the real OCaml AST (Parsetree).

Another  way  would be to treat {{...}} as some kind of quotation, and then by
only  using  OCaml  pretty printer (instead of the parsetree marshaller) where
these quotation are printed as is.

However  this  solution also have a cost, you will lose locations by not using
marshalled parsetrees, so I won't really recommend this direction.

> The OCamlDuce parser uses different lexers for the OCaml and CDuce 
> parts. This is done by switching lexing mode on a few tokens ( {{, {:, 
> :}, }}). It is possible to reproduce that with Camlp4 (you can plug an 
> arbitrary lexer).
> Let me know if you need more assistance on the OCamlDuce side...
Let me know if you need more assistance on the Camlp4 side...

> Good luck!
You will need some.
Nicolas Pouillard aka Ertai