(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* c" or "x -> f x" *) type constructor_info = { c_kind : inductive_kind; c_typs : ml_type list; } type branch_same = | BranchNone | BranchFun of Intset.t | BranchCst of Intset.t type match_info = { m_kind : inductive_kind; m_typs : ml_type list; m_same : branch_same } type ml_branch = NReference.reference * ml_ident list * ml_ast and ml_ast = | MLrel of int | MLapp of ml_ast * ml_ast list | MLlam of ml_ident * ml_ast | MLletin of ml_ident * ml_ast * ml_ast | MLglob of NReference.reference | MLcons of constructor_info * NReference.reference * ml_ast list | MLcase of match_info * ml_ast * ml_branch array | MLfix of int * identifier array * ml_ast array | MLexn of string | MLdummy | MLaxiom | MLmagic of ml_ast (*s ML declarations. *) type ml_decl = | Dind of ml_ind | Dtype of NReference.reference * identifier list * ml_type | Dterm of NReference.reference * ml_ast * ml_type | Dfix of NReference.reference array * ml_ast array * ml_type array type ml_spec = | Sind of ml_ind | Stype of NReference.reference * identifier list * ml_type option | Sval of NReference.reference * ml_type type ml_specif = | Spec of ml_spec and ml_module_sig = (label * ml_specif) list type ml_structure_elem = | SEdecl of ml_decl and ml_module_structure = (label * ml_structure_elem) list type ml_structure = module_path * ml_module_structure type ml_signature = module_path * ml_module_sig type unsafe_needs = { mldummy : bool; tdummy : bool; tunknown : bool; magic : bool } type language_descr = { keywords : Idset.t; (* Concerning the source file *) file_suffix : string; preamble : identifier -> module_path list -> unsafe_needs -> std_ppcmds; pp_struct : ml_structure -> std_ppcmds; (* Concerning a possible interface file *) sig_suffix : string option; sig_preamble : identifier -> module_path list -> unsafe_needs -> std_ppcmds; pp_sig : ml_signature -> std_ppcmds; (* for an isolated declaration print *) pp_decl : ml_decl -> std_ppcmds; }