caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [camlp4] str_item filters & toplevel?
@ 2008-04-17 14:17 Martin Jambon
  2008-04-17 14:42 ` [Caml-list] " Nicolas Pouillard
  0 siblings, 1 reply; 6+ messages in thread
From: Martin Jambon @ 2008-04-17 14:17 UTC (permalink / raw)
  To: caml-list

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?

Here is my testing session:

$ cat simplify.ml
open Camlp4.PreCast

let simplify = Ast.map_expr begin function
   | <:expr< $x$ + zero >> | <:expr< zero + $x$ >> -> x
   | x -> x
end
in AstFilters.register_str_item_filter simplify#str_item

let _ =
   prerr_string "Loaded \"simplify\"\n";
   flush stderr

$ ocamlc -c -pp camlp4of -I +camlp4 simplify.ml

$ \ocaml -I +camlp4 camlp4lib.cma simplify.cmo
Loaded "simplify"
         Objective Caml version 3.10.1

# 1 + zero;;
Unbound value zero
#

$ camlp4o ./simplify.cmo -str '1 + zero'
Loaded "simplify"
1




--
http://wink.com/profile/mjambon
http://mjambon.com


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Caml-list] [camlp4] str_item filters & toplevel?
  2008-04-17 14:17 [camlp4] str_item filters & toplevel? Martin Jambon
@ 2008-04-17 14:42 ` Nicolas Pouillard
  2008-04-17 15:25   ` Martin Jambon
  0 siblings, 1 reply; 6+ messages in thread
From: Nicolas Pouillard @ 2008-04-17 14:42 UTC (permalink / raw)
  To: Martin Jambon; +Cc: caml-list

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

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 :)

-- 
Nicolas Pouillard aka Ertai

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 194 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Caml-list] [camlp4] str_item filters & toplevel?
  2008-04-17 14:42 ` [Caml-list] " Nicolas Pouillard
@ 2008-04-17 15:25   ` Martin Jambon
  2008-04-17 18:35     ` Nicolas Pouillard
  0 siblings, 1 reply; 6+ messages in thread
From: Martin Jambon @ 2008-04-17 15:25 UTC (permalink / raw)
  To: Nicolas Pouillard; +Cc: caml-list

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?
If it's already fixed, which version?


Thanks,

Martin

--
http://wink.com/profile/mjambon
http://mjambon.com


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Caml-list] [camlp4] str_item filters & toplevel?
  2008-04-17 15:25   ` Martin Jambon
@ 2008-04-17 18:35     ` Nicolas Pouillard
  2008-04-17 19:19       ` Martin Jambon
  0 siblings, 1 reply; 6+ messages in thread
From: Nicolas Pouillard @ 2008-04-17 18:35 UTC (permalink / raw)
  To: Martin Jambon; +Cc: caml-list

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

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.

> If it's already fixed, which version?

Not already fixed.

-- 
Nicolas Pouillard aka Ertai

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 194 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Caml-list] [camlp4] str_item filters & toplevel?
  2008-04-17 18:35     ` Nicolas Pouillard
@ 2008-04-17 19:19       ` Martin Jambon
  2008-04-18  7:19         ` Nicolas Pouillard
  0 siblings, 1 reply; 6+ messages in thread
From: Martin Jambon @ 2008-04-17 19:19 UTC (permalink / raw)
  To: Nicolas Pouillard; +Cc: caml-list

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 
made available in the toplevel without theoretical difficulties.

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.


Martin


>> If it's already fixed, which version?
>
> Not already fixed.
>
> -- 
> Nicolas Pouillard aka Ertai

--
http://wink.com/profile/mjambon
http://mjambon.com


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Caml-list] [camlp4] str_item filters & toplevel?
  2008-04-17 19:19       ` Martin Jambon
@ 2008-04-18  7:19         ` Nicolas Pouillard
  0 siblings, 0 replies; 6+ messages in thread
From: Nicolas Pouillard @ 2008-04-18  7:19 UTC (permalink / raw)
  To: Martin Jambon; +Cc: caml-list

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

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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 194 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-04-18  7:19 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-04-17 14:17 [camlp4] str_item filters & toplevel? Martin Jambon
2008-04-17 14:42 ` [Caml-list] " Nicolas Pouillard
2008-04-17 15:25   ` Martin Jambon
2008-04-17 18:35     ` Nicolas Pouillard
2008-04-17 19:19       ` Martin Jambon
2008-04-18  7:19         ` Nicolas Pouillard

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).