Browse thread
Camlp4. print variable value to target source.
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Сергей_ Плаксин <serp@s...> |
| Subject: | Re: [Caml-list] Camlp4. print variable value to target source. |
Thanks. It's what I need. On Thu, 2008-09-11 at 14:56 +0200, Nicolas Pouillard wrote: > Excerpts from SerP's message of Thu Sep 11 14:15:59 +0200 2008: > > On Thu, 2008-09-11 at 13:00 +0100, Jeremy Yallop wrote: > > > Quoting ?????? ??????? <serp@stork.ru>: > > > > Exitst any way to do such things? > > > > > > > > ------ > > > > let t = <:ctyp<int>> in > > > > <:str_item<let t = ?content of t here? >> > > > > > > I think that you're looking for this: > > > > > > let t = <:expr< <:ctyp<int>> >> in > > > <:str_item<let t = $t$ >> > > > > > > although I'm curious as to why. > > > > > > Jeremy. > > > > > > > The problem what t variable result of parsing > > > > EXTEND Gram > > str_item: > > [ > > [ "mtype" ; n = a_LIDENT ; "=" ; t = ctype -> > > <:expr< > > let f = <:expr<$t$>> > > >> > > ] > > END > > > > And result now is: > > > > let f = t > > > > But i need to: > > > > let f = Ast.TyId (_loc, Ast.IdLid (_loc, "int")) > > You the syntactic meta lifting (as in <:expr< <:ctyp< int >> >>) is not > sufficient, you need to call the function that do this lifting. > > #load "camlp4of.cma";; > open Camlp4.PreCast;; > module M = Ast.Meta.Make(Ast.Meta.MetaGhostLoc);; > let ghost = Loc.ghost;; > let t = <:ctyp@ghost< int >>;; > M.Expr.meta_ctyp ghost t;; > > Best regards, > > PS: Tolevel output :) > > - : Camlp4.PreCast.Ast.expr = > Camlp4.PreCast.Ast.ExApp (<abstr>, > Camlp4.PreCast.Ast.ExApp (<abstr>, > Camlp4.PreCast.Ast.ExId (<abstr>, > Camlp4.PreCast.Ast.IdAcc (<abstr>, > Camlp4.PreCast.Ast.IdUid (<abstr>, "Ast"), > Camlp4.PreCast.Ast.IdUid (<abstr>, "TyId"))), > Camlp4.PreCast.Ast.ExId (<abstr>, > Camlp4.PreCast.Ast.IdAcc (<abstr>, > Camlp4.PreCast.Ast.IdUid (<abstr>, "Loc"), > Camlp4.PreCast.Ast.IdLid (<abstr>, "ghost")))), > Camlp4.PreCast.Ast.ExApp (<abstr>, > Camlp4.PreCast.Ast.ExApp (<abstr>, > Camlp4.PreCast.Ast.ExId (<abstr>, > Camlp4.PreCast.Ast.IdAcc (<abstr>, > Camlp4.PreCast.Ast.IdUid (<abstr>, "Ast"), > Camlp4.PreCast.Ast.IdUid (<abstr>, > "IdLid"))), > Camlp4.PreCast.Ast.ExId (<abstr>, > Camlp4.PreCast.Ast.IdAcc (<abstr>, > Camlp4.PreCast.Ast.IdUid (<abstr>, "Loc"), > Camlp4.PreCast.Ast.IdLid (<abstr>, > "ghost")))), > Camlp4.PreCast.Ast.ExStr (<abstr>, "int"))) >