Module Flx_types


module Flx_types: sig .. end
value typing

type partial_order_result_t = [ `Equal | `Greater | `Incomparable | `Less ] 

type version_data_t = {
   version_string : string;
   build_time_float : float;
   build_time : string;
   buildno : int;
}
type dir_t =
| DIR_open of Flx_ast.qualified_name_t
| DIR_inject_module of Flx_ast.qualified_name_t
| DIR_use of Flx_ast.id_t * Flx_ast.qualified_name_t
type dcl_t = [ `DCL_abs of Flx_ast.type_qual_t list * Flx_ast.c_t * Flx_ast.named_reqs_t
| `DCL_cclass of Flx_ast.class_member_t list
| `DCL_const of Flx_ast.typecode_t * Flx_ast.c_t * Flx_ast.named_reqs_t
| `DCL_cstruct of (Flx_ast.id_t * Flx_ast.typecode_t) list
| `DCL_fun of
Flx_ast.property_t list * Flx_ast.typecode_t list * Flx_ast.typecode_t *
Flx_ast.c_t * Flx_ast.named_reqs_t * Flx_ast.prec_t
| `DCL_function of
Flx_ast.params_t * Flx_ast.typecode_t * Flx_ast.property_t list *
asm_t list
| `DCL_glr of
Flx_ast.typecode_t * (Flx_ast.reduced_production_t * Flx_ast.expr_t)
| `DCL_inherit of Flx_ast.qualified_name_t
| `DCL_inherit_fun of Flx_ast.qualified_name_t
| `DCL_insert of Flx_ast.c_t * Flx_ast.ikind_t * Flx_ast.named_reqs_t
| `DCL_match_check of Flx_ast.pattern_t * (string * int)
| `DCL_match_handler of
Flx_ast.pattern_t * (string * int) * asm_t list
| `DCL_module of asm_t list
| `DCL_regdef of Flx_ast.regexp_t
| `DCL_reglex of (Flx_ast.regexp_t * Flx_ast.expr_t) list
| `DCL_regmatch of (Flx_ast.regexp_t * Flx_ast.expr_t) list
| `DCL_struct of (Flx_ast.id_t * Flx_ast.typecode_t) list
| `DCL_type_alias of Flx_ast.typecode_t
| `DCL_union of (Flx_ast.id_t * Flx_ast.typecode_t) list
| `DCL_val of Flx_ast.typecode_t
| `DCL_var of Flx_ast.typecode_t ]
type access_t = [ `Private | `Public ] 

type asm_t =
| Exe of Flx_ast.range_srcref * Flx_ast.exe_t
| Dcl of Flx_ast.range_srcref * Flx_ast.id_t * int option * access_t
* Flx_ast.vs_list_t * dcl_t
| Iface of Flx_ast.range_srcref * iface_t
| Dir of Flx_ast.range_srcref * dir_t
type entry_kind_t = int 

type entry_set_t =
| FunctionEntry of entry_kind_t list
| NonFunctionEntry of entry_kind_t

type module_rep_t =
| Simple_module of Flx_ast.bid_t * Flx_ast.typecode_t list * name_map_t
* dir_t list
type name_map_t = (string, entry_set_t) Hashtbl.t 
type iface_t = [ `IFACE_export_fun of Flx_ast.suffixed_name_t * string
| `IFACE_export_type of Flx_ast.typecode_t * string ]
type 'a b0typecode_t' = [ `BTYP_array of 'a * 'a
| `BTYP_fix of int
| `BTYP_function of 'a * 'a
| `BTYP_inst of Flx_ast.bid_t * 'a list
| `BTYP_intersect of 'a list
| `BTYP_lvalue of 'a
| `BTYP_pointer of 'a
| `BTYP_sum of 'a list
| `BTYP_tuple of 'a list
| `BTYP_unitsum of int
| `BTYP_void ]
value typing

type 'a btpattern_t' = {
   pattern : 'a;
   pattern_vars : Flx_mtypes1.IntSet.t;
   assignments : (int * 'a) list;
}
type 'a b1typecode_t' = [ `BTYP_apply of 'a * 'a
| `BTYP_type
| `BTYP_type_match of 'a * ('a btpattern_t' * 'a) list
| `BTYP_type_tuple of 'a list
| `BTYP_typefun of (int * 'a) list * 'a * 'a
| `BTYP_typeset of 'a list
| `BTYP_typesetintersection of 'a list
| `BTYP_typesetunion of 'a list
| `BTYP_var of int * 'a ]
meta typing
type 'a btypecode_t' = [ `BTYP_apply of 'a * 'a
| `BTYP_array of 'a * 'a
| `BTYP_fix of int
| `BTYP_function of 'a * 'a
| `BTYP_inst of Flx_ast.bid_t * 'a list
| `BTYP_intersect of 'a list
| `BTYP_lvalue of 'a
| `BTYP_pointer of 'a
| `BTYP_sum of 'a list
| `BTYP_tuple of 'a list
| `BTYP_type
| `BTYP_type_match of 'a * ('a btpattern_t' * 'a) list
| `BTYP_type_tuple of 'a list
| `BTYP_typefun of (int * 'a) list * 'a * 'a
| `BTYP_typeset of 'a list
| `BTYP_typesetintersection of 'a list
| `BTYP_typesetunion of 'a list
| `BTYP_unitsum of int
| `BTYP_var of int * 'a
| `BTYP_void ]
general typing
type b0typecode_t = 'a b0typecode_t' as 'a 
type btypecode_t = 'a btypecode_t' as 'a 
type btpattern_t = btypecode_t btpattern_t' 
type biface_t = [ `BIFACE_export_fun of Flx_ast.range_srcref * Flx_ast.bid_t * string
| `BIFACE_export_type of
Flx_ast.range_srcref * btypecode_t * string ]
type regular_args_t = int list * int * (int, tbexpr_t) Hashtbl.t *
(int * int, int) Hashtbl.t
type bexe_t = [ `BEXE_assert of Flx_ast.range_srcref * tbexpr_t
| `BEXE_assign of
Flx_ast.range_srcref * tbexpr_t * tbexpr_t
| `BEXE_begin
| `BEXE_call of
Flx_ast.range_srcref * tbexpr_t * tbexpr_t
| `BEXE_call_direct of
Flx_ast.range_srcref * Flx_ast.bid_t * btypecode_t list *
tbexpr_t
| `BEXE_call_prim of
Flx_ast.range_srcref * Flx_ast.bid_t * btypecode_t list *
tbexpr_t
| `BEXE_call_stack of
Flx_ast.range_srcref * Flx_ast.bid_t * btypecode_t list *
tbexpr_t
| `BEXE_code of Flx_ast.range_srcref * Flx_ast.c_t
| `BEXE_comment of Flx_ast.range_srcref * string
| `BEXE_end
| `BEXE_fun_return of Flx_ast.range_srcref * tbexpr_t
| `BEXE_goto of Flx_ast.range_srcref * string
| `BEXE_halt of Flx_ast.range_srcref * string
| `BEXE_ifgoto of Flx_ast.range_srcref * tbexpr_t * string
| `BEXE_ifnotgoto of Flx_ast.range_srcref * tbexpr_t * string
| `BEXE_init of Flx_ast.range_srcref * Flx_ast.bid_t * tbexpr_t
| `BEXE_jump of
Flx_ast.range_srcref * tbexpr_t * tbexpr_t
| `BEXE_jump_direct of
Flx_ast.range_srcref * Flx_ast.bid_t * btypecode_t list *
tbexpr_t
| `BEXE_label of Flx_ast.range_srcref * string
| `BEXE_loop of Flx_ast.range_srcref * int * tbexpr_t
| `BEXE_nonreturn_code of Flx_ast.range_srcref * Flx_ast.c_t
| `BEXE_nop of Flx_ast.range_srcref * string
| `BEXE_proc_return of Flx_ast.range_srcref
| `BEXE_svc of Flx_ast.range_srcref * Flx_ast.bid_t ]
type bexpr_t = [ `BEXPR_apply of tbexpr_t * tbexpr_t
| `BEXPR_apply_direct of
Flx_ast.bid_t * btypecode_t list * tbexpr_t
| `BEXPR_apply_prim of
Flx_ast.bid_t * btypecode_t list * tbexpr_t
| `BEXPR_apply_stack of
Flx_ast.bid_t * btypecode_t list * tbexpr_t
| `BEXPR_apply_struct of
Flx_ast.bid_t * btypecode_t list * tbexpr_t
| `BEXPR_case of int * btypecode_t
| `BEXPR_case_arg of int * tbexpr_t
| `BEXPR_case_index of tbexpr_t
| `BEXPR_closure of Flx_ast.bid_t * btypecode_t list
| `BEXPR_deref of tbexpr_t
| `BEXPR_expr of string * btypecode_t
| `BEXPR_get_n of int * tbexpr_t
| `BEXPR_literal of Flx_ast.literal_t
| `BEXPR_match_case of int * tbexpr_t
| `BEXPR_name of Flx_ast.bid_t * btypecode_t list
| `BEXPR_parse of tbexpr_t * int list
| `BEXPR_ref of Flx_ast.bid_t * btypecode_t list
| `BEXPR_tuple of tbexpr_t list ]
type tbexpr_t = bexpr_t * btypecode_t 
type glr_symbol_t = [ `Nonterm of int list | `Term of int ] 
type bglr_entry_t = string option * glr_symbol_t 
type bproduction_t = bglr_entry_t list 
type bparameter_t = string * (int * btypecode_t) 
type breqs_t = (Flx_ast.bid_t * btypecode_t list) list 
type bvs_t = (string * int) list 
type bparams_t = bparameter_t list * tbexpr_t option 
type bclass_member_t = [ `BMemberCtor of Flx_ast.id_t * btypecode_t
| `BMemberFun of Flx_ast.id_t * btypecode_t
| `BMemberProc of Flx_ast.id_t * btypecode_t
| `BMemberVal of Flx_ast.id_t * btypecode_t
| `BMemberVar of Flx_ast.id_t * btypecode_t ]
type bbdcl_t = [ `BBDCL_abs of
bvs_t * Flx_ast.type_qual_t list * Flx_ast.c_t *
breqs_t
| `BBDCL_cclass of bvs_t * bclass_member_t list
| `BBDCL_const of
bvs_t * btypecode_t * Flx_ast.c_t * breqs_t
| `BBDCL_cstruct of
bvs_t * (Flx_ast.id_t * btypecode_t) list
| `BBDCL_fun of
Flx_ast.property_t list * bvs_t * btypecode_t list *
btypecode_t * Flx_ast.c_t * breqs_t * Flx_ast.prec_t
| `BBDCL_function of
Flx_ast.property_t list * bvs_t * bparams_t *
btypecode_t * bexe_t list
| `BBDCL_glr of
Flx_ast.property_t list * bvs_t * btypecode_t *
(bproduction_t * bexe_t list)
| `BBDCL_insert of
bvs_t * Flx_ast.c_t * Flx_ast.ikind_t * breqs_t
| `BBDCL_nonconst_ctor of
bvs_t * int * btypecode_t * int *
btypecode_t
| `BBDCL_proc of
Flx_ast.property_t list * bvs_t * btypecode_t list *
Flx_ast.c_t * breqs_t
| `BBDCL_procedure of
Flx_ast.property_t list * bvs_t * bparams_t *
bexe_t list
| `BBDCL_reglex of
Flx_ast.property_t list * bvs_t * bparams_t *
int * btypecode_t * regular_args_t
| `BBDCL_regmatch of
Flx_ast.property_t list * bvs_t * bparams_t *
btypecode_t * regular_args_t
| `BBDCL_struct of
bvs_t * (Flx_ast.id_t * btypecode_t) list
| `BBDCL_tmp of bvs_t * btypecode_t
| `BBDCL_union of
bvs_t * (Flx_ast.id_t * btypecode_t) list
| `BBDCL_val of bvs_t * btypecode_t
| `BBDCL_var of bvs_t * btypecode_t ]
type typevarmap_t = (int, btypecode_t) Hashtbl.t 
type env_t = (Flx_ast.bid_t * Flx_ast.id_t * name_map_t *
name_map_t list)
list
type symbol_definition_t = [ `SYMDEF_abs of
Flx_ast.type_qual_t list * Flx_ast.c_t * Flx_ast.named_reqs_t
| `SYMDEF_cclass of Flx_ast.class_member_t list
| `SYMDEF_const of Flx_ast.typecode_t * Flx_ast.c_t * Flx_ast.named_reqs_t
| `SYMDEF_const_ctor of int * Flx_ast.typecode_t * int
| `SYMDEF_cstruct of (Flx_ast.id_t * Flx_ast.typecode_t) list
| `SYMDEF_fun of
Flx_ast.property_t list * Flx_ast.typecode_t list * Flx_ast.typecode_t *
Flx_ast.c_t * Flx_ast.named_reqs_t * Flx_ast.prec_t
| `SYMDEF_function of
Flx_ast.params_t * Flx_ast.typecode_t * Flx_ast.property_t list *
Flx_ast.sexe_t list
| `SYMDEF_glr of
Flx_ast.typecode_t * (Flx_ast.reduced_production_t * Flx_ast.sexe_t list)
| `SYMDEF_inherit of Flx_ast.qualified_name_t
| `SYMDEF_inherit_fun of Flx_ast.qualified_name_t
| `SYMDEF_insert of Flx_ast.c_t * Flx_ast.ikind_t * Flx_ast.named_reqs_t
| `SYMDEF_match_check of Flx_ast.pattern_t * (string * int)
| `SYMDEF_module
| `SYMDEF_nonconst_ctor of
int * Flx_ast.typecode_t * int * Flx_ast.typecode_t
| `SYMDEF_parameter of Flx_ast.typecode_t
| `SYMDEF_regdef of Flx_ast.regexp_t
| `SYMDEF_reglex of
Flx_ast.params_t * int * (Flx_ast.regexp_t * Flx_ast.expr_t) list
| `SYMDEF_regmatch of
Flx_ast.params_t * (Flx_ast.regexp_t * Flx_ast.expr_t) list
| `SYMDEF_struct of (Flx_ast.id_t * Flx_ast.typecode_t) list
| `SYMDEF_type_alias of Flx_ast.typecode_t
| `SYMDEF_typevar of Flx_ast.typecode_t
| `SYMDEF_union of (Flx_ast.id_t * Flx_ast.typecode_t) list
| `SYMDEF_val of Flx_ast.typecode_t
| `SYMDEF_var of Flx_ast.typecode_t ]

type symbol_data_t = {
   id : string;
   sr : Flx_ast.range_srcref;
   parent : int option;
   vs : Flx_ast.ivs_list_t;
   pubmap : name_map_t;
   privmap : name_map_t;
   dirs : dir_t list;
   symdef : symbol_definition_t;
}
type symbol_table_t = (int, symbol_data_t) Hashtbl.t 
type symbol_data3_t = string * int option * Flx_ast.range_srcref * bbdcl_t 
type fully_bound_symbol_table_t = (int, symbol_data3_t) Hashtbl.t 
type type_registry_t = (btypecode_t, int) Hashtbl.t