module Parsetree: sig .. end
Abstract syntax tree produced by parsing
Extension points
type attribute = (Asttypes.loc(string), payload);
type extension = (Asttypes.loc(string), payload);
type attributes = list(attribute);
type payload = 
| | | PStr of structure | 
| | | PTyp of core_type | 
| | | PPat of pattern * expression option | 
Core language
type core_type = {
|    | ptyp_desc : core_type_desc; | 
|    | ptyp_loc : Location.t; | 
|    | ptyp_attributes : attributes; | 
}
type core_type_desc = 
| | | Ptyp_any | 
| | | Ptyp_var of string | 
| | | Ptyp_arrow of Asttypes.label * core_type * core_type | 
| | | Ptyp_tuple of core_type list | 
| | | Ptyp_constr of Longident.t Asttypes.loc * core_type list | 
| | | Ptyp_object of (string * attributes * core_type) list        * Asttypes.closed_flag | 
| | | Ptyp_class of Longident.t Asttypes.loc * core_type list | 
| | | Ptyp_alias of core_type * string | 
| | | Ptyp_variant of row_field list * Asttypes.closed_flag * Asttypes.label list option | 
| | | Ptyp_poly of string list * core_type | 
| | | Ptyp_package of package_type | 
| | | Ptyp_extension of extension | 
type package_type = (
  Asttypes.loc(Longident.t),
  list((Asttypes.loc(Longident.t), core_type))
);
type row_field = 
| | | Rtag of Asttypes.label * attributes * bool * core_type list | 
| | | Rinherit of core_type | 
type pattern = {
|    | ppat_desc : pattern_desc; | 
|    | ppat_loc : Location.t; | 
|    | ppat_attributes : attributes; | 
}
type pattern_desc = 
| | | Ppat_any | 
| | | Ppat_var of string Asttypes.loc | 
| | | Ppat_alias of pattern * string Asttypes.loc | 
| | | Ppat_constant of Asttypes.constant | 
| | | Ppat_interval of Asttypes.constant * Asttypes.constant | 
| | | Ppat_tuple of pattern list | 
| | | Ppat_construct of Longident.t Asttypes.loc * pattern option | 
| | | Ppat_variant of Asttypes.label * pattern option | 
| | | Ppat_record of (Longident.t Asttypes.loc * pattern) list * Asttypes.closed_flag | 
| | | Ppat_array of pattern list | 
| | | Ppat_or of pattern * pattern | 
| | | Ppat_constraint of pattern * core_type | 
| | | Ppat_type of Longident.t Asttypes.loc | 
| | | Ppat_lazy of pattern | 
| | | Ppat_unpack of string Asttypes.loc | 
| | | Ppat_exception of pattern | 
| | | Ppat_extension of extension | 
type expression = {
|    | pexp_desc : expression_desc; | 
|    | pexp_loc : Location.t; | 
|    | pexp_attributes : attributes; | 
}
type expression_desc = 
| | | Pexp_ident of Longident.t Asttypes.loc | 
| | | Pexp_constant of Asttypes.constant | 
| | | Pexp_let of Asttypes.rec_flag * value_binding list * expression | 
| | | Pexp_function of case list | 
| | | Pexp_fun of Asttypes.label * expression option * pattern        * expression | 
| | | Pexp_apply of expression * (Asttypes.label * expression) list | 
| | | Pexp_match of expression * case list | 
| | | Pexp_try of expression * case list | 
| | | Pexp_tuple of expression list | 
| | | Pexp_construct of Longident.t Asttypes.loc * expression option | 
| | | Pexp_variant of Asttypes.label * expression option | 
| | | Pexp_record of (Longident.t Asttypes.loc * expression) list        * expression option | 
| | | Pexp_field of expression * Longident.t Asttypes.loc | 
| | | Pexp_setfield of expression * Longident.t Asttypes.loc * expression | 
| | | Pexp_array of expression list | 
| | | Pexp_ifthenelse of expression * expression * expression option | 
| | | Pexp_sequence of expression * expression | 
| | | Pexp_while of expression * expression | 
| | | Pexp_for of pattern * expression * expression        * Asttypes.direction_flag * expression | 
| | | Pexp_constraint of expression * core_type | 
| | | Pexp_coerce of expression * core_type option * core_type | 
| | | Pexp_send of expression * string | 
| | | Pexp_new of Longident.t Asttypes.loc | 
| | | Pexp_setinstvar of string Asttypes.loc * expression | 
| | | Pexp_override of (string Asttypes.loc * expression) list | 
| | | Pexp_letmodule of string Asttypes.loc * module_expr * expression | 
| | | Pexp_assert of expression | 
| | | Pexp_lazy of expression | 
| | | Pexp_poly of expression * core_type option | 
| | | Pexp_object of class_structure | 
| | | Pexp_newtype of string * expression | 
| | | Pexp_pack of module_expr | 
| | | Pexp_open of Asttypes.override_flag * Longident.t Asttypes.loc * expression | 
| | | Pexp_extension of extension | 
type case = {
|    | pc_lhs : pattern; | 
|    | pc_guard : expression option; | 
|    | pc_rhs : expression; | 
}
type value_description = {
|    | pval_name : string Asttypes.loc; | 
|    | pval_type : core_type; | 
|    | pval_prim : string list; | 
|    | pval_attributes : attributes; | 
|    | pval_loc : Location.t; | 
}
type type_declaration = {
|    | ptype_name : string Asttypes.loc; | 
|    | ptype_params : (core_type * Asttypes.variance) list; | 
|    | ptype_cstrs : (core_type * core_type * Location.t) list; | 
|    | ptype_kind : type_kind; | 
|    | ptype_private : Asttypes.private_flag; | 
|    | ptype_manifest : core_type option; | 
|    | ptype_attributes : attributes; | 
|    | ptype_loc : Location.t; | 
}
type type_kind = 
| | | Ptype_abstract | 
| | | Ptype_variant of constructor_declaration list | 
| | | Ptype_record of label_declaration list | 
| | | Ptype_open | 
type label_declaration = {
|    | pld_name : string Asttypes.loc; | 
|    | pld_mutable : Asttypes.mutable_flag; | 
|    | pld_type : core_type; | 
|    | pld_loc : Location.t; | 
|    | pld_attributes : attributes; | 
}
type constructor_declaration = {
|    | pcd_name : string Asttypes.loc; | 
|    | pcd_args : core_type list; | 
|    | pcd_res : core_type option; | 
|    | pcd_loc : Location.t; | 
|    | pcd_attributes : attributes; | 
}
type type_extension = {
|    | ptyext_path : Longident.t Asttypes.loc; | 
|    | ptyext_params : (core_type * Asttypes.variance) list; | 
|    | ptyext_constructors : extension_constructor list; | 
|    | ptyext_private : Asttypes.private_flag; | 
|    | ptyext_attributes : attributes; | 
}
type extension_constructor = {
|    | pext_name : string Asttypes.loc; | 
|    | pext_kind : extension_constructor_kind; | 
|    | pext_loc : Location.t; | 
|    | pext_attributes : attributes; | 
}
type extension_constructor_kind = 
| | | Pext_decl of core_type list * core_type option | 
| | | Pext_rebind of Longident.t Asttypes.loc | 
Class language
type class_type = {
|    | pcty_desc : class_type_desc; | 
|    | pcty_loc : Location.t; | 
|    | pcty_attributes : attributes; | 
}
type class_type_desc = 
| | | Pcty_constr of Longident.t Asttypes.loc * core_type list | 
| | | Pcty_signature of class_signature | 
| | | Pcty_arrow of Asttypes.label * core_type * class_type | 
| | | Pcty_extension of extension | 
type class_signature = {
|    | pcsig_self : core_type; | 
|    | pcsig_fields : class_type_field list; | 
}
type class_type_field = {
|    | pctf_desc : class_type_field_desc; | 
|    | pctf_loc : Location.t; | 
|    | pctf_attributes : attributes; | 
}
type class_type_field_desc = 
| | | Pctf_inherit of class_type | 
| | | Pctf_val of (string * Asttypes.mutable_flag * Asttypes.virtual_flag * core_type) | 
| | | Pctf_method of (string * Asttypes.private_flag * Asttypes.virtual_flag * core_type) | 
| | | Pctf_constraint of (core_type * core_type) | 
| | | Pctf_attribute of attribute | 
| | | Pctf_extension of extension | 
type 'a class_infos = {
|    | pci_virt : Asttypes.virtual_flag; | 
|    | pci_params : (core_type * Asttypes.variance) list; | 
|    | pci_name : string Asttypes.loc; | 
|    | pci_expr : 'a; | 
|    | pci_loc : Location.t; | 
|    | pci_attributes : attributes; | 
}
type class_description = class_infos(class_type);
type class_type_declaration = class_infos(class_type);
type class_expr = {
|    | pcl_desc : class_expr_desc; | 
|    | pcl_loc : Location.t; | 
|    | pcl_attributes : attributes; | 
}
type class_expr_desc = 
| | | Pcl_constr of Longident.t Asttypes.loc * core_type list | 
| | | Pcl_structure of class_structure | 
| | | Pcl_fun of Asttypes.label * expression option * pattern        * class_expr | 
| | | Pcl_apply of class_expr * (Asttypes.label * expression) list | 
| | | Pcl_let of Asttypes.rec_flag * value_binding list * class_expr | 
| | | Pcl_constraint of class_expr * class_type | 
| | | Pcl_extension of extension | 
type class_structure = {
|    | pcstr_self : pattern; | 
|    | pcstr_fields : class_field list; | 
}
type class_field = {
|    | pcf_desc : class_field_desc; | 
|    | pcf_loc : Location.t; | 
|    | pcf_attributes : attributes; | 
}
type class_field_desc = 
| | | Pcf_inherit of Asttypes.override_flag * class_expr * string option | 
| | | Pcf_val of (string Asttypes.loc * Asttypes.mutable_flag * class_field_kind) | 
| | | Pcf_method of (string Asttypes.loc * Asttypes.private_flag * class_field_kind) | 
| | | Pcf_constraint of (core_type * core_type) | 
| | | Pcf_initializer of expression | 
| | | Pcf_attribute of attribute | 
| | | Pcf_extension of extension | 
type class_field_kind = 
| | | Cfk_virtual of core_type | 
| | | Cfk_concrete of Asttypes.override_flag * expression | 
type class_declaration = class_infos(class_expr);
Module language
type module_type = {
|    | pmty_desc : module_type_desc; | 
|    | pmty_loc : Location.t; | 
|    | pmty_attributes : attributes; | 
}
type module_type_desc = 
| | | Pmty_ident of Longident.t Asttypes.loc | 
| | | Pmty_signature of signature | 
| | | Pmty_functor of string Asttypes.loc * module_type option * module_type | 
| | | Pmty_with of module_type * with_constraint list | 
| | | Pmty_typeof of module_expr | 
| | | Pmty_extension of extension | 
| | | Pmty_alias of Longident.t Asttypes.loc | 
type signature = list(signature_item);
type signature_item = {
|    | psig_desc : signature_item_desc; | 
|    | psig_loc : Location.t; | 
}
type signature_item_desc = 
| | | Psig_value of value_description | 
| | | Psig_type of type_declaration list | 
| | | Psig_typext of type_extension | 
| | | Psig_exception of extension_constructor | 
| | | Psig_module of module_declaration | 
| | | Psig_recmodule of module_declaration list | 
| | | Psig_modtype of module_type_declaration | 
| | | Psig_open of open_description | 
| | | Psig_include of include_description | 
| | | Psig_class of class_description list | 
| | | Psig_class_type of class_type_declaration list | 
| | | Psig_attribute of attribute | 
| | | Psig_extension of extension * attributes | 
type module_declaration = {
|    | pmd_name : string Asttypes.loc; | 
|    | pmd_type : module_type; | 
|    | pmd_attributes : attributes; | 
|    | pmd_loc : Location.t; | 
}
type module_type_declaration = {
|    | pmtd_name : string Asttypes.loc; | 
|    | pmtd_type : module_type option; | 
|    | pmtd_attributes : attributes; | 
|    | pmtd_loc : Location.t; | 
}
type open_description = {
|    | popen_lid : Longident.t Asttypes.loc; | 
|    | popen_override : Asttypes.override_flag; | 
|    | popen_loc : Location.t; | 
|    | popen_attributes : attributes; | 
}
type 'a include_infos = {
|    | pincl_mod : 'a; | 
|    | pincl_loc : Location.t; | 
|    | pincl_attributes : attributes; | 
}
type include_description = include_infos(module_type);
type include_declaration = include_infos(module_expr);
type with_constraint = 
| | | Pwith_type of Longident.t Asttypes.loc * type_declaration | 
| | | Pwith_module of Longident.t Asttypes.loc * Longident.t Asttypes.loc | 
| | | Pwith_typesubst of type_declaration | 
| | | Pwith_modsubst of string Asttypes.loc * Longident.t Asttypes.loc | 
type module_expr = {
|    | pmod_desc : module_expr_desc; | 
|    | pmod_loc : Location.t; | 
|    | pmod_attributes : attributes; | 
}
type module_expr_desc = 
| | | Pmod_ident of Longident.t Asttypes.loc | 
| | | Pmod_structure of structure | 
| | | Pmod_functor of string Asttypes.loc * module_type option * module_expr | 
| | | Pmod_apply of module_expr * module_expr | 
| | | Pmod_constraint of module_expr * module_type | 
| | | Pmod_unpack of expression | 
| | | Pmod_extension of extension | 
type structure = list(structure_item);
type structure_item = {
|    | pstr_desc : structure_item_desc; | 
|    | pstr_loc : Location.t; | 
}
type structure_item_desc = 
| | | Pstr_eval of expression * attributes | 
| | | Pstr_value of Asttypes.rec_flag * value_binding list | 
| | | Pstr_primitive of value_description | 
| | | Pstr_type of type_declaration list | 
| | | Pstr_typext of type_extension | 
| | | Pstr_exception of extension_constructor | 
| | | Pstr_module of module_binding | 
| | | Pstr_recmodule of module_binding list | 
| | | Pstr_modtype of module_type_declaration | 
| | | Pstr_open of open_description | 
| | | Pstr_class of class_declaration list | 
| | | Pstr_class_type of class_type_declaration list | 
| | | Pstr_include of include_declaration | 
| | | Pstr_attribute of attribute | 
| | | Pstr_extension of extension * attributes | 
type value_binding = {
|    | pvb_pat : pattern; | 
|    | pvb_expr : expression; | 
|    | pvb_attributes : attributes; | 
|    | pvb_loc : Location.t; | 
}
type module_binding = {
|    | pmb_name : string Asttypes.loc; | 
|    | pmb_expr : module_expr; | 
|    | pmb_attributes : attributes; | 
|    | pmb_loc : Location.t; | 
}
Toplevel
type toplevel_phrase = 
| | | Ptop_def of structure | 
| | | Ptop_dir of string * directive_argument | 
type directive_argument = 
| | | Pdir_none | 
| | | Pdir_string of string | 
| | | Pdir_int of int | 
| | | Pdir_ident of Longident.t | 
| | | Pdir_bool of bool |