Module Pa_extend

val split_ext : bool ref
type loc = Ploc.t
type (!'e, !'p) a_entry = {
  1. ae_loc : loc;
  2. ae_name : string * 'e;
  3. ae_pos : 'e option;
  4. ae_levels : ('e, 'p) a_level list;
}
and (!'e, !'p) a_level = {
  1. al_loc : loc;
  2. al_label : string option;
  3. al_assoc : 'e option;
  4. al_rules : ('e, 'p) a_rules;
}
and (!'e, !'p) a_rules = {
  1. au_loc : loc;
  2. au_rules : ('e, 'p) a_rule list;
}
and (!'e, !'p) a_rule = {
  1. ar_loc : loc;
  2. ar_psymbols : ('e, 'p) a_psymbol list;
  3. ar_action : 'e option;
}
and (!'e, !'p) a_psymbol = {
  1. ap_loc : loc;
  2. ap_patt : 'p option;
  3. ap_symb : ('e, 'p) a_symbol;
}
and (!'e, !'p) a_symbol =
  1. | ASflag of loc * ('e, 'p) a_symbol
  2. | ASkeyw of loc * 'e a_string
  3. | ASlist of loc * lmin_len * ('e, 'p) a_symbol * (('e, 'p) a_symbol * bool) option
  4. | ASnext of loc
  5. | ASnterm of loc * string * 'e * string option
  6. | ASopt of loc * ('e, 'p) a_symbol
  7. | ASquot of loc * ('e, 'p) a_symbol
  8. | ASrules of loc * ('e, 'p) a_rules
  9. | ASself of loc
  10. | AScut of loc
  11. | AStok of loc * string * 'e a_string option
  12. | ASvala of loc * ('e, 'p) a_symbol * string list
  13. | ASvala2 of loc * ('e, 'p) a_symbol * string list * (string * 'e) option
and !'e a_string =
  1. | ATstring of loc * string
  2. | ATexpr of loc * 'e
and lmin_len =
  1. | LML_0
  2. | LML_1
type !'e name = {
  1. expr : 'e;
  2. tvar : string;
  3. loc : loc;
}
type styp =
  1. | STlid of loc * string
  2. | STapp of loc * styp * styp
  3. | STquo of loc * string
  4. | STself of loc * string
  5. | STtyp of MLast.ctyp
  6. | STnone
  7. | STvala of loc * styp
type (!'e, !'p) text =
  1. | TXfacto of loc * ('e, 'p) text
  2. | TXlist of loc * lmin_len * ('e, 'p) text * (('e, 'p) text * bool) option
  3. | TXnext of loc
  4. | TXnterm of loc * 'e name * string option
  5. | TXopt of loc * ('e, 'p) text
  6. | TXflag of loc * ('e, 'p) text
  7. | TXrules of loc * string * ('e, 'p) rule list
  8. | TXself of loc
  9. | TXtok of loc * string * 'e
  10. | TXcut of loc
  11. | TXvala of loc * string list * ('e, 'p) text
and (!'e, !'p) entry = {
  1. name : 'e name;
  2. pos : 'e option;
  3. levels : ('e, 'p) level list;
}
and (!'e, !'p) level = {
  1. label : string option;
  2. assoc : 'e option;
  3. rules : ('e, 'p) rule list;
}
and (!'e, !'p) rule = {
  1. prod : ('e, 'p) psymbol list;
  2. action : 'e option;
}
and (!'e, !'p) psymbol = {
  1. pattern : 'p option;
  2. symbol : ('e, 'p) symbol;
}
and (!'e, !'p) symbol = {
  1. used : string list;
  2. text : ('e, 'p) text;
  3. styp : styp;
}
type used =
  1. | Unused
  2. | UsedScanned
  3. | UsedNotScanned
val option_map : ('a -> 'b) -> 'a option -> 'b option
val mark_used : bool ref -> ('a, used ref * 'b) Hashtbl.t -> 'a -> unit
val mark_symbol : bool ref -> (string, used ref * 'a) Hashtbl.t -> ('b, 'c) symbol -> unit
val check_use : 'a name list -> (MLast.expr, 'b) entry list -> unit
val locate : 'a name -> 'a
val new_type_var : unit -> string
val used_of_rule_list : ('a, 'b) rule list -> string list
val retype_rule_list_without_patterns : MLast.loc -> (MLast.expr, MLast.patt) rule list -> (MLast.expr, MLast.patt) rule list
val make_list : MLast.loc -> ('a -> MLast.expr) -> 'a list -> MLast.expr
val quotify : bool ref
val meta_action : bool ref
module MetaAction : sig ... end
val mklistexp : MLast.loc -> MLast.expr list -> MLast.expr
val mklistpat : MLast.loc -> MLast.patt list -> MLast.patt
val expr_fa : MLast.expr list -> MLast.expr -> MLast.expr * MLast.expr list
val assoc_anti : (string * string) list
val anti_str : (MLast.expr, 'a) psymbol list -> string
val anti_anti : string -> string
val is_anti_anti : string -> bool
val anti_of_tok : string -> string list
val is_not_translated_function : string -> bool
val quot_expr : (MLast.expr, 'a) psymbol list -> MLast.expr -> MLast.expr
val symgen : string
val pname_of_ptuple : MLast.patt list -> string
val quotify_action : (MLast.expr, MLast.patt) psymbol list -> MLast.expr -> MLast.expr
val make_ctyp : styp -> string -> MLast.ctyp
val text_of_action : MLast.loc -> (MLast.expr, MLast.patt) psymbol list -> string -> MLast.expr option -> string -> MLast.expr
val srules : MLast.loc -> string -> (MLast.expr, MLast.patt) rule list -> string -> ((MLast.expr, MLast.patt) text list * MLast.expr) list
val is_cut : ('a, 'b) text -> bool
val make_expr : string -> string -> (MLast.expr, MLast.patt) text -> MLast.expr
val make_expr_rules : loc -> string -> ((MLast.expr, MLast.patt) text list * MLast.expr) list -> string -> MLast.expr
val ident_of_longid : MLast.longid -> string
val ident_of_expr : MLast.expr -> string
val mk_name : loc -> MLast.expr -> MLast.expr name
val mk_name2 : (string * MLast.expr) -> MLast.expr name
val slist : loc -> lmin_len -> (('a, 'b) symbol * bool) option -> ('a, 'b) symbol -> ('a, 'b) text
val mk_psymbol : 'a -> ('b, 'a) text -> styp -> ('b, 'a) psymbol
val ss2 : loc -> string list -> (string * MLast.expr) option -> (MLast.expr, MLast.patt) symbol -> (MLast.expr, MLast.patt) symbol
val string_of_a : MLast.expr a_string -> MLast.expr
val rules_of_a : (MLast.expr, MLast.patt) a_rules -> (MLast.expr, MLast.patt) rule list
val entry_of_a : (MLast.expr, MLast.patt) a_entry -> (MLast.expr, MLast.patt) entry
val expr_of_delete_rule : MLast.loc -> string -> (string * MLast.expr) -> (MLast.expr, MLast.patt) a_symbol list -> MLast.expr * MLast.expr
val text_of_entry : Ploc.t -> string -> (MLast.expr, MLast.patt) entry -> MLast.expr * MLast.expr * MLast.expr
val let_in_of_extend : MLast.loc -> string -> bool -> MLast.expr name list option -> (MLast.expr, 'a) entry list -> MLast.expr -> MLast.expr
val text_of_extend : MLast.loc -> string -> (string * MLast.expr) list option -> (MLast.expr, MLast.patt) a_entry list -> MLast.expr -> MLast.expr
val text_of_functorial_extend : MLast.loc -> string -> (string * MLast.expr) list option -> (MLast.expr, MLast.patt) a_entry list -> MLast.expr
val longname_of_raw_qualid : (string list * string) -> string
val expr_of_raw_qualid : MLast.loc -> (string list * string) -> MLast.expr
val level_list : (MLast.expr, MLast.patt) a_level list Grammar.Entry.e
val semi_sep : unit Grammar.Entry.e