mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-05 22:38:44 +00:00
40 lines
858 B
Text
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
|
|
]])
|