Module
Module ParsetreeDocumentation
Module
Parsetree
:
sig end
Abstract syntax tree produced by parsing
=== Extension points ===
type attribute = string Asttypes.loc * payload
type extension = string Asttypes.loc * payload
type attributes = attribute list
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 = Longident.t Asttypes.loc * (Longident.t Asttypes.loc * core_type) list
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_type class_infos
type class_type_declaration = class_type class_infos
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_expr class_infos
=== 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 = signature_item list
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 = module_type include_infos
type include_declaration = module_expr include_infos
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 = structure_item list
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