39 lines
1.3 KiB
OCaml
39 lines
1.3 KiB
OCaml
(* camlp4r pa_extend.cmo q_MLast.cmo *)
|
|
(***********************************************************************)
|
|
(* *)
|
|
(* Camlp4 *)
|
|
(* *)
|
|
(* Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt *)
|
|
(* *)
|
|
(* Copyright 2001 Institut National de Recherche en Informatique et *)
|
|
(* Automatique. Distributed only by permission. *)
|
|
(* *)
|
|
(***********************************************************************)
|
|
|
|
(* $Id$ *)
|
|
|
|
open Pcaml;
|
|
|
|
value t = ref "";
|
|
|
|
Quotation.add ""
|
|
(Quotation.ExAst
|
|
(fun c s ->
|
|
let _loc = c.Quotation.loc in
|
|
let t =
|
|
if t.val = "" then "<<" ^ s ^ ">>"
|
|
else "<:" ^ t.val ^ "<" ^ s ^ ">>"
|
|
in
|
|
<:expr< $uid:t$ >>,
|
|
fun c s ->
|
|
let _loc = c.Quotation.loc in
|
|
let t =
|
|
if t.val = "" then "<<" ^ s ^ ">>"
|
|
else "<:" ^ t.val ^ "<" ^ s ^ ">>"
|
|
in
|
|
<:patt< $uid:t$ >>))
|
|
;
|
|
|
|
Quotation.default.val := "";
|
|
Quotation.translate.val := fun s -> do { t.val := s; "" };
|