Parsetree

Section: OCaml library (3o)
Updated: 2023-02-12
Index Return to Main Contents
 

NAME

Parsetree - Abstract syntax tree produced by parsing  

Module

Module Parsetree  

Documentation

Module Parsetree
 :  sig end

Abstract syntax tree produced by parsing

Warning: this module is unstable and part of Compiler_libs .

type constant =
 | Pconst_integer of string * char option
 | Pconst_char of char
 | Pconst_string of string * Location.t * string option
 | Pconst_float of string * char option
 

type location_stack = Location.t list

 

Extension points

type attribute = {
 attr_name :  string Asttypes.loc ;
 attr_payload :  payload ;
 attr_loc :  Location.t ;
 }

type extension = string Asttypes.loc * payload

type attributes = attribute list

type payload =
 | PStr of structure
 | PSig of signature
 | PTyp of core_type
 | PPat of pattern * expression option
 

 

Core language

type core_type = {
 ptyp_desc :  core_type_desc ;
 ptyp_loc :  Location.t ;
 ptyp_loc_stack :  location_stack ;
 ptyp_attributes :  attributes ;
 }

type core_type_desc =
 | Ptyp_any
 | Ptyp_var of string
 | Ptyp_arrow of Asttypes.arg_label * core_type * core_type
 | Ptyp_tuple of core_type list
 | Ptyp_constr of Longident.t Asttypes.loc * core_type list
 | Ptyp_object of object_field 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 Asttypes.loc 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 = {
 prf_desc :  row_field_desc ;
 prf_loc :  Location.t ;
 prf_attributes :  attributes ;
 }

type row_field_desc =
 | Rtag of Asttypes.label Asttypes.loc * bool * core_type list
 | Rinherit of core_type
 

type object_field = {
 pof_desc :  object_field_desc ;
 pof_loc :  Location.t ;
 pof_attributes :  attributes ;
 }

type object_field_desc =
 | Otag of Asttypes.label Asttypes.loc * core_type
 | Oinherit of core_type
 

type pattern = {
 ppat_desc :  pattern_desc ;
 ppat_loc :  Location.t ;
 ppat_loc_stack :  location_stack ;
 ppat_attributes :  attributes ;
 }

type pattern_desc =
 | Ppat_any
 | Ppat_var of string Asttypes.loc
 | Ppat_alias of pattern * string Asttypes.loc
 | Ppat_constant of constant
 | Ppat_interval of constant * constant
 | Ppat_tuple of pattern list
 | Ppat_construct of Longident.t Asttypes.loc * (string Asttypes.loc list * 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 option Asttypes.loc
 | Ppat_exception of pattern
 | Ppat_extension of extension
 | Ppat_open of Longident.t Asttypes.loc * pattern
 

type expression = {
 pexp_desc :  expression_desc ;
 pexp_loc :  Location.t ;
 pexp_loc_stack :  location_stack ;
 pexp_attributes :  attributes ;
 }

type expression_desc =
 | Pexp_ident of Longident.t Asttypes.loc
 | Pexp_constant of constant
 | Pexp_let of Asttypes.rec_flag * value_binding list * expression
 | Pexp_function of case list
 | Pexp_fun of Asttypes.arg_label * expression option * pattern * expression
 | Pexp_apply of expression * (Asttypes.arg_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 * Asttypes.label Asttypes.loc
 | Pexp_new of Longident.t Asttypes.loc
 | Pexp_setinstvar of Asttypes.label Asttypes.loc * expression
 | Pexp_override of (Asttypes.label Asttypes.loc * expression) list
 | Pexp_letmodule of string option Asttypes.loc * module_expr * expression
 | Pexp_letexception of extension_constructor * 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 Asttypes.loc * expression
 | Pexp_pack of module_expr
 | Pexp_open of open_declaration * expression
 | Pexp_letop of letop
 | Pexp_extension of extension
 | Pexp_unreachable
 

type case = {
 pc_lhs :  pattern ;
 pc_guard :  expression option ;
 pc_rhs :  expression ;
 }

type letop = {
 let_ :  binding_op ;
 ands :  binding_op list ;
 body :  expression ;
 }

type binding_op = {
 pbop_op :  string Asttypes.loc ;
 pbop_pat :  pattern ;
 pbop_exp :  expression ;
 pbop_loc :  Location.t ;
 }

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 * Asttypes.injectivity)) 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 :  constructor_arguments ;
 pcd_res :  core_type option ;
 pcd_loc :  Location.t ;
 pcd_attributes :  attributes ;
 }

type constructor_arguments =
 | Pcstr_tuple of core_type list
 | Pcstr_record of label_declaration list
 

type type_extension = {
 ptyext_path :  Longident.t Asttypes.loc ;
 ptyext_params :  (core_type * (Asttypes.variance * Asttypes.injectivity)) list ;
 ptyext_constructors :  extension_constructor list ;
 ptyext_private :  Asttypes.private_flag ;
 ptyext_loc :  Location.t ;
 ptyext_attributes :  attributes ;
 }

type extension_constructor = {
 pext_name :  string Asttypes.loc ;
 pext_kind :  extension_constructor_kind ;
 pext_loc :  Location.t ;
 pext_attributes :  attributes ;
 }

type type_exception = {
 ptyexn_constructor :  extension_constructor ;
 ptyexn_loc :  Location.t ;
 ptyexn_attributes :  attributes ;
 }

type extension_constructor_kind =
 | Pext_decl of constructor_arguments * 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.arg_label * core_type * class_type
 | Pcty_extension of extension
 | Pcty_open of open_description * class_type
 

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 (Asttypes.label Asttypes.loc * Asttypes.mutable_flag * Asttypes.virtual_flag * core_type)
 | Pctf_method of (Asttypes.label Asttypes.loc * 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 * Asttypes.injectivity)) 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.arg_label * expression option * pattern * class_expr
 | Pcl_apply of class_expr * (Asttypes.arg_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
 | Pcl_open of open_description * class_expr
 

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 Asttypes.loc option
 | Pcf_val of (Asttypes.label Asttypes.loc * Asttypes.mutable_flag * class_field_kind)
 | Pcf_method of (Asttypes.label 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 functor_parameter * 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 functor_parameter =
 | Unit
 | Named of string option Asttypes.loc * module_type
 

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 Asttypes.rec_flag * type_declaration list
 | Psig_typesubst of type_declaration list
 | Psig_typext of type_extension
 | Psig_exception of type_exception
 | Psig_module of module_declaration
 | Psig_modsubst of module_substitution
 | Psig_recmodule of module_declaration list
 | Psig_modtype of module_type_declaration
 | Psig_modtypesubst 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 option Asttypes.loc ;
 pmd_type :  module_type ;
 pmd_attributes :  attributes ;
 pmd_loc :  Location.t ;
 }

type module_substitution = {
 pms_name :  string Asttypes.loc ;
 pms_manifest :  Longident.t Asttypes.loc ;
 pms_attributes :  attributes ;
 pms_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 'a open_infos = {
 popen_expr :  'a ;
 popen_override :  Asttypes.override_flag ;
 popen_loc :  Location.t ;
 popen_attributes :  attributes ;
 }

type open_description = Longident.t Asttypes.loc open_infos

type open_declaration = module_expr open_infos

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_modtype of Longident.t Asttypes.loc * module_type
 | Pwith_modtypesubst of Longident.t Asttypes.loc * module_type
 | Pwith_typesubst of Longident.t Asttypes.loc * type_declaration
 | Pwith_modsubst of Longident.t 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 functor_parameter * 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 Asttypes.rec_flag * type_declaration list
 | Pstr_typext of type_extension
 | Pstr_exception of type_exception
 | Pstr_module of module_binding
 | Pstr_recmodule of module_binding list
 | Pstr_modtype of module_type_declaration
 | Pstr_open of open_declaration
 | 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 option Asttypes.loc ;
 pmb_expr :  module_expr ;
 pmb_attributes :  attributes ;
 pmb_loc :  Location.t ;
 }

 

Toplevel

type toplevel_phrase =
 | Ptop_def of structure
 | Ptop_dir of toplevel_directive
 

type toplevel_directive = {
 pdir_name :  string Asttypes.loc ;
 pdir_arg :  directive_argument option ;
 pdir_loc :  Location.t ;
 }

type directive_argument = {
 pdira_desc :  directive_argument_desc ;
 pdira_loc :  Location.t ;
 }

type directive_argument_desc =
 | Pdir_string of string
 | Pdir_int of string * char option
 | Pdir_ident of Longident.t
 | Pdir_bool of bool
 


 

Index

NAME
Module
Documentation
Extension points
Core language
Class language
Module language
Toplevel

This document was created by man2html, using the manual pages.
Time: 19:38:40 GMT, May 22, 2024