caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* camlp4 question
@ 2005-11-30  9:29 Christophe Raffalli
  2005-12-01  9:13 ` [Caml-list] " Hendrik Tews
  0 siblings, 1 reply; 6+ messages in thread
From: Christophe Raffalli @ 2005-11-30  9:29 UTC (permalink / raw)
  To: caml-list

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


I would like to produce an abbreviated command for

camlp4 mylexer.cmo mypa_o.cmo pa_extend.cmo q_MLast.cmo pr_dump.cmo\
  pa_bindlib.cmo

I tried to mimic the compilation of camlp4o:

ocamlc -I +camlp4 odyl.cma camlp4.cma mylexer.cmo mypa_o.cmo\
 pa_bindlib.cmo pr_dump.cmo odyl.cmo -o camlp4bo

But when I try to use ocamlp4bo, it produces no output ...

What am I doing wrong ?


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 894 bytes --]

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

* Re: [Caml-list] camlp4 question
  2005-11-30  9:29 camlp4 question Christophe Raffalli
@ 2005-12-01  9:13 ` Hendrik Tews
  0 siblings, 0 replies; 6+ messages in thread
From: Hendrik Tews @ 2005-12-01  9:13 UTC (permalink / raw)
  To: Christophe Raffalli; +Cc: caml-list

Christophe Raffalli <christophe.raffalli@univ-savoie.fr> writes:

   I tried to mimic the compilation of camlp4o:
   
   ocamlc -I +camlp4 odyl.cma camlp4.cma mylexer.cmo mypa_o.cmo\
    pa_bindlib.cmo pr_dump.cmo odyl.cmo -o camlp4bo
   
You need the -linkall switch.

H.


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

* Re: [Caml-list] Camlp4 question
  2005-10-28 19:44 Camlp4 question Matt Gushee
@ 2005-11-01 14:04 ` Hendrik Tews
  0 siblings, 0 replies; 6+ messages in thread
From: Hendrik Tews @ 2005-11-01 14:04 UTC (permalink / raw)
  To: caml-list

Matt Gushee <matt@gushee.net> writes:

   I had occasion today to look through the pa_r.ml, and noticed the
   following (line 329 in OCaml 3.08.4):
   
     | "object"; cspo = OPT class_self_patt; cf = class_structure; "end" ->
         (* <:expr< object $opt:cspo$ $list:cf$ end >> *)
         MLast.ExObj loc cspo cf ]
   
   So a quotation expander was created for objects as ordinary expressions,
   but evidently there was something wrong with it. Anyone know what the
   problem was?
   
I believe the comment shows what the code should look like if
immediate objects would have been implemented in the quotation
expander q_MLast.ml. However, immediate objects are not yet in
the quotation expander, therefore the real code is what the
quoatation expander would have produced (if immediate objects had
been implemented).

Bye,

Hendrik

PS. Sorry Matt for posting separately to caml-list.


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

* Re: [Caml-list] camlp4 question
  2005-09-08  8:02 camlp4 question Christophe Raffalli
@ 2005-09-08 17:41 ` Martin Jambon
  0 siblings, 0 replies; 6+ messages in thread
From: Martin Jambon @ 2005-09-08 17:41 UTC (permalink / raw)
  To: Christophe Raffalli; +Cc: caml-list

On Thu, 8 Sep 2005, Christophe Raffalli wrote:

> I am writing a tool to facilitate the use of callback of camlfunction from C. 
> I have a first prototype running for lablGlut, but I want to make it nicer 
> using camlp4 (this extension should produce automatically the C wrapper for 
> each callback, the user will only have to compile the produced C file).
>
> The pb is that I need to retrieve information given in one module from 
> another. The minimum I need to do is to search for the path given to ocamlc 
> (the -I options) from camlp4 code, but I would prefer a better way, and I do 
> not know how to retrive this PATH anyway.

Maybe write a script which would transmit the -I options to camlp4o and to 
ocamlopt/ocamlc (each camlp4 loadable module can define additional options 
to pass to camlp4/camlp4o)

Martin

>
> Here is an example to illustrate what I need (the type 'a callback is a type 
> to a C wrapper for a function of type 'a) :
>
> -- file glut.ml, part of the lablGlut library --
>
> ...
>
> let visibility_state_of_int = function
>    0 ->  NOT_VISIBLE
>  | 1 -> VISIBLE
>  | _ -> raise (BadEnum "visibility_state")
>
> REGISTER_CONVERSION visibility_state_of_int
>
> external visibilityFunc :
>  cb:(state:visibility_state_t->unit) callback->unit
>   = "ml_glutVisibilityFunc"
>
> ...
>
> -- file test.ml an example using lablGlut --
>
> open Glut
>
> ...
>
> let state_changed ~state =
>  match value with
>    NOT_VISIBLE -> printf "window not visible."; print_newline()
>  | VISIBLE -> printf "window not visible."; print_newline()
>
> MAKE_WRAPPER state_changed state_changed_cb
> (* here I need to search for the convertion for the type 
> visibility_state_of_int which was defined in glut.ml to make the
> C wrapper state_changed_cb : (visibility_state_of_int -> unit) callback *)
>
> let _ = Glut.visibilityFunc state_changed_cb
>
> ...
>
> Can someone help ?
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>

--
Martin Jambon, PhD
http://martin.jambon.free.fr


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

* Re: [Caml-list] camlp4 question...
  2004-10-05  3:45 Pietro Abate
@ 2004-10-05  5:38 ` Dmitry Lomov
  0 siblings, 0 replies; 6+ messages in thread
From: Dmitry Lomov @ 2004-10-05  5:38 UTC (permalink / raw)
  To: ocaml ml; +Cc: Pietro Abate

Pietro Abate wrote:

> Hi all,
> 
> I'd like to write a small extension to transform 
> 
> let f <a;b;c> = ...
> 
> in 
> 
> let f new_id =
> 	match new_id with
> 	|[a;b;c] -> ...
> 	|_ -> failwith "wrong arguments"
> 
> I've tried with something like:
>         expr: LEVEL "simple"
>         [[
>             "let"; OPT "rec"; "<"; l = LIST1 LIDENT; ">"; $list:pel$ "in" e = expr ->
>                 <:expr< let .... = function [] -> failwith "ffff" | $list:l$ -> $e$ >>
>         ]];
> 
> but I'm stuck... In particular, how can I parse $list:pel$ ?
> pel = LIST patt ?

Do check your syntax once again. $list:pel$ is an antiquotation, and not 
a parsing rule. As such, it cannot appear to the left of '->'.
The LHS should look about like that:

expr: LEVEL "let" (* sic! *)
[[ "let"; OPT "rec"; LIDENT; "<"; LIST patt; ">";"=";
      expr;"in" expr -> ....
]]

RHS should be quite straightforward (you should bind subparsing results, 
of course)

HTH,
Friendly,
Dmitry

-- 
Dmitry Lomov
JetBrains Inc.
http://www.jetbrains.com
"Develop With Pleasure!"

-------------------
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] 6+ messages in thread

* [Caml-list] camlp4 question...
@ 2004-10-05  3:45 Pietro Abate
  2004-10-05  5:38 ` Dmitry Lomov
  0 siblings, 1 reply; 6+ messages in thread
From: Pietro Abate @ 2004-10-05  3:45 UTC (permalink / raw)
  To: ocaml ml

Hi all,

I'd like to write a small extension to transform 

let f <a;b;c> = ...

in 

let f new_id =
	match new_id with
	|[a;b;c] -> ...
	|_ -> failwith "wrong arguments"

I've tried with something like:
        expr: LEVEL "simple"
        [[
            "let"; OPT "rec"; "<"; l = LIST1 LIDENT; ">"; $list:pel$ "in" e = expr ->
                <:expr< let .... = function [] -> failwith "ffff" | $list:l$ -> $e$ >>
        ]];

but I'm stuck... In particular, how can I parse $list:pel$ ?
pel = LIST patt ?

thanks,
p

-- 
++ "All great truths begin as blasphemies." -George Bernard Shaw
++ Please avoid sending me Word or PowerPoint attachments.
   See http://www.fsf.org/philosophy/no-word-attachments.html

-------------------
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] 6+ messages in thread

end of thread, other threads:[~2005-12-01  9:13 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-11-30  9:29 camlp4 question Christophe Raffalli
2005-12-01  9:13 ` [Caml-list] " Hendrik Tews
  -- strict thread matches above, loose matches on Subject: below --
2005-10-28 19:44 Camlp4 question Matt Gushee
2005-11-01 14:04 ` [Caml-list] " Hendrik Tews
2005-09-08  8:02 camlp4 question Christophe Raffalli
2005-09-08 17:41 ` [Caml-list] " Martin Jambon
2004-10-05  3:45 Pietro Abate
2004-10-05  5:38 ` Dmitry Lomov

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