Nicolas, Nicolas Pouillard wrote: > On 4/10/07, Hugo Ferreira <[EMAIL PROTECTED]> wrote: >> Hello, >> >> Nicolas Pouillard wrote: >>> On 4/8/07, Martin Jambon <[EMAIL PROTECTED]> wrote: >>>> On Sat, 7 Apr 2007, Nicolas Pouillard wrote: >>>> >>>>> On 4/5/07, Martin Jambon <[EMAIL PROTECTED]> wrote: >>>>>> On Thu, 5 Apr 2007, Hugo Ferreira wrote: >>>>>> > [...] > >> Just a comment: my greatest difficulty with camlp4 is twofold: >> >> - knowing how the AST maps to the actual Ocaml syntax. > > You can ask to camlp4 itself! > > Using the old one... > > $ cat test.ml > (* here is some expression that you want to understand *) > fun e -> <:expr< let x= HEAP in $e$ >> > > $ camlp4o q_MLast.cmo pr_o.cmo test.ml > let _ = > fun e -> > MLast.ExLet > (_loc, false, [MLast.PaLid (_loc, "x"), MLast.ExUid (_loc, "HEAP")], e) >
Great. One to be recorded in my "cheat sheet". BTW I tried to use the library you indicated in a previous e-mail but it did not compile (AST seems to have changed). >> - knowing when/where the camlp4 parser does its transformations so that >> I may alter these transformations (match and replace expressions). > > That's not really transformations of the AST. > > However there is some grammar tranformations: > When you add a rule to a grammar entry at a specific level camlp4 > insert it in a tree to factor out the prefix or rules as much as > possible. > > e1 = SELF; "+"; e2 = SELF -> ... > e1 = SELF; "*"; e2 = SELF -> ... > > is in fact something like: > > e1 = SELF; [ "+"; e2 = SELF -> ... | "*"; e2 = SELF -> ... ] > > So if you add something make it as much as possible a prefix of existing ones. > Ok. "Factoring" makes more sense now. Sound advice too. > [...] > >> In effect I write Ocaml "expression" which is automatically matched and >> I only need write an Ocaml expression to introduce the changes I want. >> All this using simply using the quotation system. The rules and the AST >> structure itself should, in my humble opinion, be avoided. > > Indeed, extension that are highly dependent on the actual grammar > should be avoided. > >> This will also allow the underlying camlp4 system to change without unduly >> affecting user's code. > > Exactly! > Thank you for the info. Appreciate it. Hugo F. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "ocaml-developer" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/ocaml-developer?hl=en For other OCaml forums, see http://caml.inria.fr/resources/forums.en.html -~----------~----~----~----~------~----~------~--~---
