Version française
Home     About     Download     Resources     Contact us    
Browse thread
[camlp4] str_item filters & toplevel?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Nicolas Pouillard <nicolas.pouillard@g...>
Subject: Re: [Caml-list] [camlp4] str_item filters & toplevel?
Excerpts from Martin Jambon's message of Thu Apr 17 21:19:44 +0200 2008:
> On Thu, 17 Apr 2008, Nicolas Pouillard wrote:
> 
> > Excerpts from Martin Jambon's message of Thu Apr 17 17:25:20 +0200 2008:
> >> On Thu, 17 Apr 2008, Nicolas Pouillard wrote:
> >>
> >>> Excerpts from Martin Jambon's message of Thu Apr 17 16:17:15 +0200 2008:
> >>>> I started from the wiki page describing how to use AST filters:
> >>>> http://brion.inria.fr/gallium/index.php/Camlp4MapGenerator
> >>>>
> >>>> The example doesn't work in the toplevel (3.10.1), although it works
> >>>> otherwise. How to make it work?
> >>>
> >>> By patching the camlp4 sources :)
> >>
> >> Is it a bug that has to be fixed?
> >
> > It  could  be  seen  as a bug, but the behavior is not completely clear, since
> > applying  the  filters  to each toplevel phrase is different from calling them
> > only once on the whole module implem.
> 
> Thanks.
> I'll look at the code for a better understanding.
> 
> I think that the 2 following cases are pretty common:
> 
> a. inserting some constant code once at the beginning of the file (or
>     module), such as "open Foo"
> b. replacing a str_item by other str_items
> 
> Both were problematic in camlp4 3.09, requiring some fragile or 
> undocumented hacks. It would be extremely useful to have a clean solution 
> to these problems.
> 
> It seems to me that both (a) and (b) could be implemented and 

Currently  both  can  be  implemented  on  a per file basis, moreover they are
implemented by using the *same* registering construct.

> made available in the toplevel without theoretical difficulties.

If one don't add new registration functions the behavior will be odd.

> I can imagine a third situation consisting in performing a full 
> file/module analysis and inserting something at the beginning or at the 
> end. That also could be implemented, although it would clearly not be 
> available in the toplevel.

So  in the toplevel, filters registered using register_str_item_filter will be
called once on an empty phrase.

And  a  new  function register_toplevel_phrase_filter will gather functions to
be called on each toplevel phrase.

> >> If it's already fixed, which version?
> >
> > Not already fixed.

-- 
Nicolas Pouillard aka Ertai