lama_byterun/bench/pp_gt.m4
Kakadu 62d1aa7316 Adding benchmarking executable
Signed-off-by: Kakadu <Kakadu@pm.me>
2020-12-11 18:06:33 +03:00

40 lines
858 B
Text

changequote([[,]])
define(HEADER_EXPR, [[
class pp_e pp_decl fself = object
inherit [Format.formatter, Expr.t, unit] Expr.t_t
]])
define(METH, [[
method c_$1 $2 _ $3 =
$5
]])
define(METH0, [[
method c_$1 $2 $3 =
$4]])
define(FOOTER_EXPR, [[
end (* class *)
]])
define(HEADER_DECL, [[
class pp_d fself pp_expr =
let (_: (string*Format.formatter) -> Expr.decl -> unit) = fself in
let (_: Format.formatter -> Expr.t -> unit) = pp_expr in
object
inherit [(string*Format.formatter), _, unit] Expr.decl_t]])
define(FOOTER_DECL, [[
end (* class *)
]])
define(FIX, [[
let fix_decl decl0 t0 =
let rec traitdecl inh subj =
Expr.gcata_decl (decl0 traitdecl traitt) inh subj
and traitt inh subj =
Expr.gcata_t (t0 traitdecl traitt) inh subj
in
(traitdecl, traitt)
let pp fmt s =
snd (fix_decl (new pp_d) (new pp_e)) fmt s
]])