/usr/lib/ocaml/compiler-libs/parsing/parsetree.mli is in ocaml-compiler-libs 3.12.1-2ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 | (***********************************************************************)
(* *)
(* Objective Caml *)
(* *)
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 1996 Institut National de Recherche en Informatique et *)
(* en Automatique. All rights reserved. This file is distributed *)
(* under the terms of the Q Public License version 1.0. *)
(* *)
(***********************************************************************)
(* $Id: parsetree.mli 10263 2010-04-17 14:45:12Z garrigue $ *)
(* Abstract syntax tree produced by parsing *)
open Asttypes
(* Type expressions for the core language *)
type core_type =
{ ptyp_desc: core_type_desc;
ptyp_loc: Location.t }
and core_type_desc =
Ptyp_any
| Ptyp_var of string
| Ptyp_arrow of label * core_type * core_type
| Ptyp_tuple of core_type list
| Ptyp_constr of Longident.t * core_type list
| Ptyp_object of core_field_type list
| Ptyp_class of Longident.t * core_type list * label list
| Ptyp_alias of core_type * string
| Ptyp_variant of row_field list * bool * label list option
| Ptyp_poly of string list * core_type
| Ptyp_package of package_type
and package_type = Longident.t * (string * core_type) list
and core_field_type =
{ pfield_desc: core_field_desc;
pfield_loc: Location.t }
and core_field_desc =
Pfield of string * core_type
| Pfield_var
and row_field =
Rtag of label * bool * core_type list
| Rinherit of core_type
(* Type expressions for the class language *)
type 'a class_infos =
{ pci_virt: virtual_flag;
pci_params: string list * Location.t;
pci_name: string;
pci_expr: 'a;
pci_variance: (bool * bool) list;
pci_loc: Location.t }
(* Value expressions for the core language *)
type pattern =
{ ppat_desc: pattern_desc;
ppat_loc: Location.t }
and pattern_desc =
Ppat_any
| Ppat_var of string
| Ppat_alias of pattern * string
| Ppat_constant of constant
| Ppat_tuple of pattern list
| Ppat_construct of Longident.t * pattern option * bool
| Ppat_variant of label * pattern option
| Ppat_record of (Longident.t * pattern) list * closed_flag
| Ppat_array of pattern list
| Ppat_or of pattern * pattern
| Ppat_constraint of pattern * core_type
| Ppat_type of Longident.t
| Ppat_lazy of pattern
type expression =
{ pexp_desc: expression_desc;
pexp_loc: Location.t }
and expression_desc =
Pexp_ident of Longident.t
| Pexp_constant of constant
| Pexp_let of rec_flag * (pattern * expression) list * expression
| Pexp_function of label * expression option * (pattern * expression) list
| Pexp_apply of expression * (label * expression) list
| Pexp_match of expression * (pattern * expression) list
| Pexp_try of expression * (pattern * expression) list
| Pexp_tuple of expression list
| Pexp_construct of Longident.t * expression option * bool
| Pexp_variant of label * expression option
| Pexp_record of (Longident.t * expression) list * expression option
| Pexp_field of expression * Longident.t
| Pexp_setfield of expression * Longident.t * 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 string * expression * expression * direction_flag * expression
| Pexp_constraint of expression * core_type option * core_type option
| Pexp_when of expression * expression
| Pexp_send of expression * string
| Pexp_new of Longident.t
| Pexp_setinstvar of string * expression
| Pexp_override of (string * expression) list
| Pexp_letmodule of string * module_expr * expression
| Pexp_assert of expression
| Pexp_assertfalse
| 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 * package_type
| Pexp_open of Longident.t * expression
(* Value descriptions *)
and value_description =
{ pval_type: core_type;
pval_prim: string list }
(* Type declarations *)
and type_declaration =
{ ptype_params: string list;
ptype_cstrs: (core_type * core_type * Location.t) list;
ptype_kind: type_kind;
ptype_private: private_flag;
ptype_manifest: core_type option;
ptype_variance: (bool * bool) list;
ptype_loc: Location.t }
and type_kind =
Ptype_abstract
| Ptype_variant of (string * core_type list * Location.t) list
| Ptype_record of
(string * mutable_flag * core_type * Location.t) list
and exception_declaration = core_type list
(* Type expressions for the class language *)
and class_type =
{ pcty_desc: class_type_desc;
pcty_loc: Location.t }
and class_type_desc =
Pcty_constr of Longident.t * core_type list
| Pcty_signature of class_signature
| Pcty_fun of label * core_type * class_type
and class_signature = core_type * class_type_field list
and class_type_field =
Pctf_inher of class_type
| Pctf_val of (string * mutable_flag * virtual_flag * core_type * Location.t)
| Pctf_virt of (string * private_flag * core_type * Location.t)
| Pctf_meth of (string * private_flag * core_type * Location.t)
| Pctf_cstr of (core_type * core_type * Location.t)
and class_description = class_type class_infos
and class_type_declaration = class_type class_infos
(* Value expressions for the class language *)
and class_expr =
{ pcl_desc: class_expr_desc;
pcl_loc: Location.t }
and class_expr_desc =
Pcl_constr of Longident.t * core_type list
| Pcl_structure of class_structure
| Pcl_fun of label * expression option * pattern * class_expr
| Pcl_apply of class_expr * (label * expression) list
| Pcl_let of rec_flag * (pattern * expression) list * class_expr
| Pcl_constraint of class_expr * class_type
and class_structure = pattern * class_field list
and class_field =
Pcf_inher of override_flag * class_expr * string option
| Pcf_valvirt of (string * mutable_flag * core_type * Location.t)
| Pcf_val of (string * mutable_flag * override_flag * expression * Location.t)
| Pcf_virt of (string * private_flag * core_type * Location.t)
| Pcf_meth of (string * private_flag *override_flag * expression * Location.t)
| Pcf_cstr of (core_type * core_type * Location.t)
| Pcf_let of rec_flag * (pattern * expression) list * Location.t
| Pcf_init of expression
and class_declaration = class_expr class_infos
(* Type expressions for the module language *)
and module_type =
{ pmty_desc: module_type_desc;
pmty_loc: Location.t }
and module_type_desc =
Pmty_ident of Longident.t
| Pmty_signature of signature
| Pmty_functor of string * module_type * module_type
| Pmty_with of module_type * (Longident.t * with_constraint) list
| Pmty_typeof of module_expr
and signature = signature_item list
and signature_item =
{ psig_desc: signature_item_desc;
psig_loc: Location.t }
and signature_item_desc =
Psig_value of string * value_description
| Psig_type of (string * type_declaration) list
| Psig_exception of string * exception_declaration
| Psig_module of string * module_type
| Psig_recmodule of (string * module_type) list
| Psig_modtype of string * modtype_declaration
| Psig_open of Longident.t
| Psig_include of module_type
| Psig_class of class_description list
| Psig_class_type of class_type_declaration list
and modtype_declaration =
Pmodtype_abstract
| Pmodtype_manifest of module_type
and with_constraint =
Pwith_type of type_declaration
| Pwith_module of Longident.t
| Pwith_typesubst of type_declaration
| Pwith_modsubst of Longident.t
(* value expressions for the module language *)
and module_expr =
{ pmod_desc: module_expr_desc;
pmod_loc: Location.t }
and module_expr_desc =
Pmod_ident of Longident.t
| Pmod_structure of structure
| Pmod_functor of string * module_type * module_expr
| Pmod_apply of module_expr * module_expr
| Pmod_constraint of module_expr * module_type
| Pmod_unpack of expression * package_type
and structure = structure_item list
and structure_item =
{ pstr_desc: structure_item_desc;
pstr_loc: Location.t }
and structure_item_desc =
Pstr_eval of expression
| Pstr_value of rec_flag * (pattern * expression) list
| Pstr_primitive of string * value_description
| Pstr_type of (string * type_declaration) list
| Pstr_exception of string * exception_declaration
| Pstr_exn_rebind of string * Longident.t
| Pstr_module of string * module_expr
| Pstr_recmodule of (string * module_type * module_expr) list
| Pstr_modtype of string * module_type
| Pstr_open of Longident.t
| Pstr_class of class_declaration list
| Pstr_class_type of class_type_declaration list
| Pstr_include of module_expr
(* Toplevel phrases *)
type toplevel_phrase =
Ptop_def of structure
| Ptop_dir of string * directive_argument
and directive_argument =
Pdir_none
| Pdir_string of string
| Pdir_int of int
| Pdir_ident of Longident.t
| Pdir_bool of bool
|