caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] module declarations in camlp4
@ 2004-01-20 22:26 Michael Furr
  2004-01-21  9:01 ` [Caml-list] Re : " Francois Maurel
  0 siblings, 1 reply; 2+ messages in thread
From: Michael Furr @ 2004-01-20 22:26 UTC (permalink / raw)
  To: caml-list

Hi all,

I'm working on a project where I need to extend large portions of the
grammar.  This has been pretty straightforward with camlp4 for most things
but I'm having some trouble getting at the guts of the grammar in a few
spots.  For instance, I would like to modify the entries for module
declarations ala:
  DELETE_RULE
    str_item: "module"; UIDENT; module_binding
  END;
  EXTEND
  str_item:
    [ [	"module"; i = UIDENT; mb = module_binding ->
	(* call a few funcs *)
        <:str_item< module $i$ = $mb$ >>
      ]
    ];
  END;

However, since the entry "module_binding" is not defined to be GLOBAL, I
can not access it here.  Does anyone have any suggestions about how to get
around this?  Is there any specific reason that some of the grammar
entries are defined locally?

thanks,
-mike

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


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

* [Caml-list] Re : [Caml-list] module declarations in camlp4
  2004-01-20 22:26 [Caml-list] module declarations in camlp4 Michael Furr
@ 2004-01-21  9:01 ` Francois Maurel
  0 siblings, 0 replies; 2+ messages in thread
From: Francois Maurel @ 2004-01-21  9:01 UTC (permalink / raw)
  To: caml-list; +Cc: Michael Furr

> However, since the entry "module_binding" is not defined to be  
> GLOBAL, I can not access it here.  Does anyone have any suggestions  
> about how to get around this?  Is there any specific reason that some   
> of the grammar entries are defined locally?

For a similar problem, I used Grammar.Entry.find under a Obj.magic.

let type_declaration =
  Obj.magic (Grammar.Entry.find str_item "type_declaration")
let type_kind =
  Obj.magic (Grammar.Entry.find type_declaration "type_kind")
let type_parameters =
  Obj.magic (Grammar.Entry.find type_declaration "type_parameters")
let type_parameter =
  Obj.magic (Grammar.Entry.find type_parameters "type_parameter")

As far as I understand, the expression <str_item> is the first entry  
where module_binding appears in pa_o.ml which explains the use of:
- type_declaration in my example for type_kind or type_parameters
- type_parameters  in my example for type_parameter

So you should try

let module_binding =
  Obj.magic (Grammar.Entry.find str_item "module_binding")

--
Francois

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


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

end of thread, other threads:[~2004-01-21  9:01 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-01-20 22:26 [Caml-list] module declarations in camlp4 Michael Furr
2004-01-21  9:01 ` [Caml-list] Re : " Francois Maurel

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