Module Pa_macro

type macro_value =
  1. | MvExpr of string list * MLast.expr
  2. | MvType of string list * MLast.ctyp
  3. | MvNone
type !'a item_or_def =
  1. | SdStr of 'a
  2. | SdDef of string * macro_value
  3. | SdUnd of string
  4. | SdNop
val list_remove : 'a -> ('a * 'b) list -> ('a * 'b) list
val oversion : string
val oname : (string * macro_value) list
val defined : (string * macro_value) list ref
val defined_version : Ploc.t -> string
val is_defined : string -> bool
val print_defined : unit -> unit
val loc : Ploc.t
val subst : 'a -> (string * MLast.expr) list -> MLast.expr -> MLast.expr
val substp : Ploc.t -> (string * MLast.patt) list -> MLast.expr -> MLast.patt
val substt : 'a -> (string * MLast.ctyp) list -> MLast.ctyp -> MLast.ctyp
val cannot_eval : MLast.expr -> 'a
val eval : MLast.expr -> MLast.expr
val may_eval : MLast.expr -> MLast.expr
val incorrect_number : Ploc.t -> 'a list -> 'b list -> 'c
val define : macro_value -> string -> unit
val undef : string -> unit
val apply_directive : Ploc.t -> string Ploc.vala -> MLast.expr option Ploc.vala -> unit
val dexpr : bool Grammar.Entry.e