diff --git a/Makefile b/Makefile deleted file mode 120000 index 4b0debf6991731a2edbdcc63ce0ee45b7912cf8d..0000000000000000000000000000000000000000 --- a/Makefile +++ /dev/null @@ -1 +0,0 @@ -src/Makefile \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..2231b3dcd036f8b2ad7a02bc005311bbabea3b75 --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ + + + +all: + cd src; make + +.PHONY: diff test log + +diff: + rm -f lv6.diff; git diff --ignore-all-space > lv6.diff + +log: + rm -f lv6.log; git log > lv6.log + + +test: + cd test ; make test + + +co: + git commit -a -F log \ No newline at end of file diff --git a/src/.#compile.ml b/src/.#compile.ml deleted file mode 120000 index 6b9ef0b909a9b1cc3b1d78bf22f5d971a08b2060..0000000000000000000000000000000000000000 --- a/src/.#compile.ml +++ /dev/null @@ -1 +0,0 @@ -jahier@peouvou.imag.fr.3380:1190617109 \ No newline at end of file diff --git a/src/Makefile b/src/Makefile index f68aeeca6a5ea455afa54356487ddf5b9932bf6f..fee992273a1245030ffadd261313763952f7e985 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,6 +1,6 @@ OCAMLMAKEFILE = ./OCamlMakefile -RESULT=lpp +RESULT=lus2lic LIBS = str SOURCES = \ @@ -33,4 +33,10 @@ SOURCES = \ ./compile.ml \ ./main.ml + + include $(OCAMLMAKEFILE) + + +test: $(RESULT) + cd test; make test \ No newline at end of file diff --git a/src/OCamlMakefile b/src/OCamlMakefile index 98864ed8fab240f51d4fd5c46a0e1752623cca8b..ee9d1f70b8facac164120722382cdab21773bea7 100644 --- a/src/OCamlMakefile +++ b/src/OCamlMakefile @@ -845,7 +845,7 @@ libuninstall: .PHONY: clean clean: - rm -f $(TARGETS) $(TRASH) + rm -f $(TARGETS) $(TRASH) *~ rm -rf $(BCDIDIR) $(NCDIDIR) $(MLDEPDIR) .PHONY: cleanup @@ -862,4 +862,5 @@ nobackup: rm -f *.bak *~ *.dup tags: $(SOURCES) - /usr/local/soft/ocaml/3.09.0/bin/otags -v $(SOURCES) + otags $(SOURCES) $(shell ocamlc -where)/*.mli +# /usr/local/soft/ocaml/3.09.0/bin/otags -v $(SOURCES) diff --git a/src/TAGS b/src/TAGS index bc17d21d9f1c37a28a9aaeb31970cf53c645a1d7..230150963c4cc6df2be88344d3e0544aed526c8f 100644 --- a/src/TAGS +++ b/src/TAGS @@ -132,63 +132,62 @@ let node_error_stringnode_error_string524,18029 let print_compile_node_errorprint_compile_node_error531,18322 let print_global_node_errorprint_global_node_error537,18476 -./dump.ml,1947 +./dump.ml,1948 Dump1,0 let rec dump_packinfodump_packinfo18,361 dump_packgivendump_packgiven34,964 dump_packinstancedump_packinstance46,1296 dump_modelinfodump_modelinfo52,1471 dump_packbodydump_packbody81,2418 -and dump_constdump_const111,3380 -and dump_const_defdump_const_def118,3630 -and dump_typedump_type133,4099 -and dump_type_defdump_type_def141,4360 -and dump_id_listdump_id_list161,5052 -and dump_field_listdump_field_list170,5360 -and dump_fielddump_field176,5586 -and dump_funcdump_func188,5988 -and dump_param_listdump_param_list197,6350 -and dump_paramdump_param206,6605 -and dump_item_info_listdump_item_info_list214,6912 -and dump_item_infodump_item_info223,7156 -and dump_static_param_listdump_static_param_list245,7596 -and dump_static_paramdump_static_param254,7855 -and dump_nodedump_node273,8384 -and dump_node_bodydump_node_body289,9012 -and dump_var_decl_listdump_var_decl_list315,9976 -and dump_line_var_decl_listdump_line_var_decl_list322,10260 -and dump_var_decldump_var_decl328,10518 -and dump_type_expdump_type_exp339,10866 -and dump_assert_listdump_assert_list354,11345 -and dump_eq_listdump_eq_list365,11681 -and dump_left_part_listdump_left_part_list375,11974 -and dump_left_partdump_left_part383,12276 -and dump_val_expdump_val_exp396,12796 -and dump_val_exp_listdump_val_exp_list405,13055 -and dump_by_pos_expdump_by_pos_exp414,13376 -and dump_leaf_expdump_leaf_exp474,16475 -and dump_unary_expdump_unary_exp477,16556 -and dump_binary_expdump_binary_exp484,16703 -and dump_ternary_expdump_ternary_exp492,16890 -and dump_nary_expdump_nary_exp504,17162 -and op2stringop2string513,17393 -and dump_oper_expdump_oper_exp546,18242 -and dump_static_arg_listdump_static_arg_list562,18614 -and dump_static_argdump_static_arg571,18888 -and dump_slice_infodump_slice_info589,19319 -and dump_by_name_expdump_by_name_exp601,19680 -and dump_named_parsdump_named_pars616,20040 - -./errors.ml,395 +and dump_constdump_const115,3468 +and dump_const_defdump_const_def122,3718 +and dump_typedump_type137,4187 +and dump_type_defdump_type_def145,4448 +and dump_id_listdump_id_list165,5140 +and dump_field_listdump_field_list174,5448 +and dump_fielddump_field180,5674 +and dump_funcdump_func192,6076 +and dump_param_listdump_param_list201,6438 +and dump_paramdump_param210,6693 +and dump_item_info_listdump_item_info_list218,7000 +and dump_item_infodump_item_info227,7244 +and dump_static_param_listdump_static_param_list249,7684 +and dump_static_paramdump_static_param258,7943 +and dump_nodedump_node277,8472 +and dump_node_bodydump_node_body293,9100 +and dump_var_decl_listdump_var_decl_list319,10064 +and dump_line_var_decl_listdump_line_var_decl_list326,10348 +and dump_var_decldump_var_decl332,10606 +and dump_type_expdump_type_exp343,10954 +and dump_assert_listdump_assert_list358,11433 +and dump_eq_listdump_eq_list369,11769 +and dump_left_part_listdump_left_part_list379,12062 +and dump_left_partdump_left_part387,12311 +and dump_val_expdump_val_exp400,12831 +and dump_val_exp_listdump_val_exp_list409,13090 +and dump_by_pos_expdump_by_pos_exp418,13411 +and dump_leaf_expdump_leaf_exp522,18003 +and dump_unary_expdump_unary_exp525,18084 +and dump_binary_expdump_binary_exp532,18231 +and dump_ternary_expdump_ternary_exp540,18418 +and dump_nary_expdump_nary_exp552,18690 +and op2stringop2string561,18921 +and dump_oper_expdump_oper_exp617,20492 +and dump_static_arg_listdump_static_arg_list633,20864 +and dump_static_argdump_static_arg642,21138 +and dump_slice_infodump_slice_info660,21569 +and dump_by_name_expdump_by_name_exp672,21930 +and dump_named_parsdump_named_pars687,22290 + +./errors.ml,346 Errors1,0 exception Compile_errorCompile_error96,3319 exception Global_errorGlobal_error101,3532 -exception Internal_errorInternal_error106,3771 -let compile_error_stringcompile_error_string112,4003 -let print_compile_errorprint_compile_error119,4300 -let warningwarning127,4596 -let print_global_errorprint_global_error134,4877 -let print_internal_errorprint_internal_error142,5160 +let compile_error_stringcompile_error_string107,3753 +let print_compile_errorprint_compile_error114,4050 +let warningwarning122,4346 +let print_global_errorprint_global_error129,4627 +let print_internal_errorprint_internal_error137,4910 ./evalConst.mli,237 EvalConst1,0 @@ -206,13 +205,13 @@ let type_errortype_error87,2326 let arity_errorarity_error91,2491 let uneval_erroruneval_error96,2683 let op_computerop_computer109,3176 -let make_slice_constmake_slice_const371,11437 -let make_array_constmake_array_const385,11846 -let make_struct_constmake_struct_const419,12850 -let rec eval_consteval_const534,16556 -and eval_array_sizeeval_array_size746,23834 -and eval_array_indexeval_array_index777,24773 -and eval_array_sliceeval_array_slice814,25976 +let make_slice_constmake_slice_const373,11349 +let make_array_constmake_array_const387,11758 +let make_struct_constmake_struct_const421,12762 +let rec eval_consteval_const536,16468 +and eval_array_sizeeval_array_size751,23770 +and eval_array_indexeval_array_index782,24709 +and eval_array_sliceeval_array_slice819,25912 ./evalType.mli,46 EvalType1,0 @@ -240,7 +239,7 @@ val do_prov_typedo_prov_type15,262 val do_nodedo_node18,361 val test_typestest_types21,487 -./lazyCompiler.ml,877 +./lazyCompiler.ml,914 LazyCompiler1,0 type 'a chkflagedchkflaged22,314 CheckingChecking23,334 @@ -250,24 +249,24 @@ exception Recursion_errorRecursion_error31,533 exception BadCheckRef_errorBadCheckRef_error34,632 let recursion_errorrecursion_error37,662 tt49,975 - src_tabsrc_tab50,986 - typestypes52,1029 - constsconsts53,1097 - nodesnodes54,1166 - prov_typesprov_types56,1252 - prov_constsprov_consts57,1325 - prov_nodesprov_nodes58,1399 -let createcreate61,1470 -let rec do_typedo_type91,2476 -do_prov_typedo_prov_type120,3361 -and check_type_defcheck_type_def180,5159 -do_constdo_const259,7811 -do_prov_constdo_prov_const290,8749 -check_const_defcheck_const_def347,10449 -solve_type_idrefsolve_type_idref401,12402 -solve_const_idrefsolve_const_idref430,13180 -let do_nodedo_node463,14011 -let test_typestest_types471,14293 + src_tabsrc_tab50,986 + typestypes52,1031 + constsconsts53,1100 + nodesnodes54,1170 + prov_typesprov_types56,1258 + prov_constsprov_consts57,1332 + prov_nodesprov_nodes58,1407 +let createcreate61,1479 +let rec do_typedo_type91,2504 + do_prov_typedo_prov_type119,3415 + and check_type_defcheck_type_def180,5288 + do_constdo_const266,8214 + do_prov_constdo_prov_const296,9198 + check_const_defcheck_const_def354,10981 + solve_type_idrefsolve_type_idref411,13151 + solve_const_idrefsolve_const_idref440,14028 +let do_nodedo_node473,14963 +let test_typestest_types480,15170 ./lxm.mli,396 Lxm1,0 @@ -312,61 +311,61 @@ let last_lexemelast_lexeme53,1027 let makemake55,1057 let last_madelast_made65,1357 -./main.ml,569 +./main.ml,570 Main1,0 -let usage_msgusage_msg13,116 -type lpp_argslpp_args18,363 - mutable infileinfile19,381 - mutable main_nodemain_node20,409 - mutable runmoderunmode21,440 -let rec _LPP_ARGS_LPP_ARGS23,471 -and set_infileset_infile29,649 -and set_run_modeset_run_mode40,901 -and print_versionprint_version43,973 -and arg_listarg_list46,1076 - parse_argsparse_args67,1735 -let test_lextest_lex75,1929 -let lus_loadlus_load88,2237 -let dump_bodydump_body93,2330 -let dump_nsdump_ns100,2508 -let get_source_listget_source_list118,2954 -let mainmain132,3245 +let usage_msgusage_msg14,188 +type lpp_argslpp_args20,438 + mutable infileinfile21,456 + mutable main_nodemain_node22,484 + mutable runmoderunmode23,515 +let rec _LPP_ARGS_LPP_ARGS25,546 +and set_infileset_infile31,724 +and set_run_modeset_run_mode42,976 +and print_versionprint_version45,1048 +and arg_listarg_list48,1151 + parse_argsparse_args69,1810 +let test_lextest_lex77,2004 +let lus_loadlus_load90,2312 +let dump_bodydump_body95,2405 +let dump_nsdump_ns101,2582 +let get_source_listget_source_list119,3062 +let mainmain132,3370 ./srcTab.mli,178 SrcTab1,0 -tt14,354 -val createcreate17,373 -val pack_body_envpack_body_env20,437 -val pack_prov_envpack_prov_env21,484 -val pack_listpack_list25,570 -val dumpdump29,617 - -./srcTab.ml,847 +tt15,415 +val createcreate17,423 +val pack_body_envpack_body_env20,487 +val pack_prov_envpack_prov_env21,534 +val pack_listpack_list25,620 +val dumpdump29,662 + +./srcTab.ml,862 SrcTab1,0 -tt44,1461 - st_listst_list46,1512 - st_raw_mod_tabst_raw_mod_tab47,1548 - st_raw_pack_tabst_raw_pack_tab48,1610 - st_pack_mng_tabst_pack_mng_tab50,1707 -pack_mngpack_mng68,2498 - pm_lxmpm_lxm70,2535 - pm_raw_srcpm_raw_src72,2574 - pm_actual_srcpm_actual_src74,2633 - pm_user_itemspm_user_items77,2742 - pm_body_stabpm_body_stab79,2867 - pm_provide_stabpm_provide_stab81,2956 -let pack_listpack_list84,2999 -let pack_body_envpack_body_env90,3114 -let pack_prov_envpack_prov_env93,3198 -let init_user_itemsinit_user_items101,3496 -let create_pack_mngcreate_pack_mng176,5634 -let rec createcreate212,6717 -init_raw_tabsinit_raw_tabs244,7611 -init_pack_mng_stabsinit_pack_mng_stabs283,8708 -let find_typefind_type364,11052 -let find_constfind_const367,11181 -let find_operfind_oper370,11312 -let dumpdump377,11459 +type pack_mngpack_mng47,1402 + pm_lxmpm_lxm49,1445 + pm_raw_srcpm_raw_src51,1486 + pm_actual_srcpm_actual_src53,1546 + pm_user_itemspm_user_items56,1657 + pm_body_stabpm_body_stab58,1783 + pm_provide_stabpm_provide_stab60,1873 +tt75,2350 + st_listst_list77,2402 + st_raw_mod_tabst_raw_mod_tab78,2439 + st_raw_pack_tabst_raw_pack_tab79,2502 + st_pack_mng_tabst_pack_mng_tab81,2601 +let pack_listpack_list86,2660 +let pack_body_envpack_body_env92,2779 +let pack_prov_envpack_prov_env98,2906 +let init_user_itemsinit_user_items108,3246 +let create_pack_mngcreate_pack_mng183,5519 +let rec createcreate219,6602 +init_raw_tabsinit_raw_tabs251,7496 +init_pack_mng_stabsinit_pack_mng_stabs290,8593 +let find_typefind_type374,10895 +let find_constfind_const378,11016 +let find_operfind_oper382,11138 +let dumpdump390,11277 ./symbolTab.mli,579 SymbolTab1,0 @@ -389,7 +388,7 @@ val iter_constsiter_consts49,1640 val iter_opersiter_opers50,1737 val dumpdump52,1833 -./symbolTab.ml,656 +./symbolTab.ml,658 SymbolTab1,0 type 'a hereflagedhereflaged10,82 HereHere11,103 @@ -400,217 +399,217 @@ tt14,137 st_opersst_opers17,286 let createcreate21,405 let find_typefind_type27,526 -let find_constfind_const28,600 -let find_operfind_oper29,676 -let add_import_constadd_import_const33,779 -let add_import_typeadd_import_type37,895 -let add_import_operadd_import_oper41,1009 -let add_constadd_const45,1123 -let add_typeadd_type49,1240 -let add_operadd_oper65,1742 -let iter_typesiter_types69,1852 -let iter_constsiter_consts70,1908 -let iter_opersiter_opers71,1966 -let dumpdump73,2023 - -./syntaxe.ml,6042 +let find_constfind_const35,701 +let find_operfind_oper43,877 +let add_import_constadd_import_const52,1080 +let add_import_typeadd_import_type56,1196 +let add_import_operadd_import_oper60,1310 +let add_constadd_const64,1424 +let add_typeadd_type68,1541 +let add_operadd_oper84,2043 +let iter_typesiter_types88,2153 +let iter_constsiter_consts89,2209 +let iter_opersiter_opers90,2267 +let dumpdump92,2324 + +./syntaxe.ml,6394 Syntaxe1,0 -type 'a errorerror19,543 - OkOk20,561 -| ErrorError21,571 -type idrefidref27,774 - id_packid_pack29,790 - id_idid_id30,816 -let pack_of_idrefpack_of_idref32,835 -let name_of_idrefname_of_idref34,870 -let idref_of_stringidref_of_string38,928 -let string_of_idrefstring_of_idref46,1186 -type parseresparseres55,1416 - PRPackBodyPRPackBody56,1433 -| PRNameSpacesPRNameSpaces57,1457 -namespacenamespace59,1494 - NSPackNSPack60,1506 -| NSModelNSModel61,1540 -model_infomodel_info63,1580 - mo_namemo_name64,1595 - mo_usesmo_uses65,1615 - mo_needsmo_needs66,1654 - mo_providesmo_provides68,1740 - mo_bodymo_body69,1788 -pack_infopack_info72,1816 - pa_namepa_name73,1830 - pa_defpa_def74,1850 -pack_defpack_def77,1877 - PackGivenPackGiven78,1889 -| PackInstancePackInstance79,1914 -pack_givenpack_given81,1950 - pg_usespg_uses82,1966 - pg_providespg_provides84,2043 - pg_bodypg_body85,2091 -pack_instancepack_instance88,2119 - pi_modelpi_model89,2137 - pi_argspi_args90,2158 -packbodypackbody99,2494 - pk_const_tablepk_const_table100,2507 - pk_type_tablepk_type_table101,2569 - pk_oper_tablepk_oper_table102,2631 - pk_def_listpk_def_list103,2693 -item_identitem_ident106,2736 - ConstItemConstItem110,2833 -| TypeItemTypeItem111,2854 -| OperItemOperItem112,2876 -item_infoitem_info114,2902 - ConstInfoConstInfo115,2914 -| TypeInfoTypeInfo116,2939 -| OperInfoOperInfo117,2964 -const_infoconst_info122,3153 - ExternalConstExternalConst123,3167 -| EnumConstEnumConst124,3206 -| DefinedConstDefinedConst125,3246 -type_infotype_info130,3462 - ExternalTypeExternalType131,3474 -| AliasedTypeAliasedType132,3500 -| EnumTypeEnumType133,3538 -| StructTypeStructType135,3646 -struct_type_infostruct_type_info145,4117 - st_namest_name146,4138 - st_flistst_flist147,4158 - st_ftablest_ftable148,4184 -and field_infofield_info150,4243 - fd_namefd_name151,4262 - fd_typefd_type152,4283 - fd_valuefd_value153,4306 -type_exptype_exp161,4657 -type_exp_coretype_exp_core163,4696 - Bool_type_expBool_type_exp164,4712 -| Int_type_expInt_type_exp165,4727 -| Real_type_expReal_type_exp166,4742 -| Named_type_expNamed_type_exp167,4758 -| Array_type_expArray_type_exp168,4786 -oper_infooper_info174,5042 - NodeNode175,5054 -| FuncFunc176,5074 -func_infofunc_info181,5256 - fn_namefn_name182,5270 - fn_inparsfn_inpars183,5293 - fn_outparsfn_outpars184,5341 -node_infonode_info191,5591 - ni_nameni_name192,5605 - ni_staticlistni_staticlist193,5631 - ni_valueni_value194,5678 -and node_profilenode_profile196,5701 -and node_defnode_def197,5772 - NodeExternNodeExtern198,5787 -| NodeBodyNodeBody199,5815 -| NodeAliasNodeAlias200,5840 -and node_bodynode_body207,6190 - nbdy_inlistnbdy_inlist208,6208 - nbdy_outlistnbdy_outlist209,6240 - nbdy_loclistnbdy_loclist210,6272 - nbdy_vartablenbdy_vartable211,6304 - nbdy_assertsnbdy_asserts212,6339 - nbdy_eqsnbdy_eqs213,6384 -and var_info_tablevar_info_table215,6429 -and static_paramstatic_param216,6490 - StaticParamTypeStaticParamType217,6509 -| StaticParamConstStaticParamConst218,6537 -| StaticParamNodeStaticParamNode219,6579 -and var_infovar_info220,6662 - va_natureva_nature221,6679 - va_nameva_name222,6704 - va_typeva_type223,6725 - va_clockva_clock224,6748 -and var_naturevar_nature226,6774 - VarInputVarInput227,6791 -| VarOutputVarOutput228,6801 -| VarLocalVarLocal229,6813 -and eq_infoeq_info230,6824 - eq_lefteq_left231,6840 - eq_righteq_right232,6868 -and clock_expclock_exp237,7042 - BaseClockBaseClock238,7058 -| NamedClockNamedClock239,7069 -and left_partleft_part240,7102 - LeftVarLeftVar242,7170 -| LeftFieldLeftField243,7201 -| LeftArrayLeftArray244,7249 -| LeftSliceLeftSlice245,7300 -and slice_infoslice_info246,7352 - si_firstsi_first247,7371 - si_lastsi_last248,7393 - si_stepsi_step249,7415 -and val_expval_exp262,7957 - CallByPosCallByPos263,7971 -| CallByNameCallByName264,8026 -and by_pos_opby_pos_op266,8141 - NULL_expNULL_exp268,8172 -| TRUE_nTRUE_n269,8182 -| FALSE_nFALSE_n270,8191 -| ICONST_nICONST_n271,8201 -| RCONST_nRCONST_n272,8222 -| IDENT_nIDENT_n273,8243 -| NOT_nNOT_n275,8278 -| UMINUS_nUMINUS_n276,8286 -| PRE_nPRE_n277,8297 -| CURRENT_nCURRENT_n278,8305 -| REAL2INT_nREAL2INT_n279,8317 -| INT2REAL_nINT2REAL_n280,8330 -| ARROW_nARROW_n282,8358 -| FBY_nFBY_n283,8368 -| WHEN_nWHEN_n284,8376 -| AND_nAND_n285,8385 -| OR_nOR_n286,8393 -| XOR_nXOR_n287,8400 -| IMPL_nIMPL_n288,8408 -| EQ_nEQ_n289,8417 -| NEQ_nNEQ_n290,8424 -| LT_nLT_n291,8432 -| LTE_nLTE_n292,8439 -| GT_nGT_n293,8447 -| GTE_nGTE_n294,8454 -| DIV_nDIV_n295,8462 -| MOD_nMOD_n296,8470 -| MINUS_nMINUS_n297,8478 -| PLUS_nPLUS_n298,8488 -| SLASH_nSLASH_n299,8497 -| TIMES_nTIMES_n300,8507 -| POWER_nPOWER_n301,8517 -| HAT_nHAT_n302,8527 -| CONCAT_nCONCAT_n303,8535 -| IF_nIF_n305,8562 -| WITH_nWITH_n306,8569 -| NOR_nNOR_n308,8592 -| DIESE_nDIESE_n309,8600 -| TUPLE_nTUPLE_n310,8610 -| ARRAY_nARRAY_n311,8620 -| PROJ_nPROJ_n317,8859 -| CALL_nCALL_n319,8916 -| ARRAY_ACCES_nARRAY_ACCES_n321,8983 -| ARRAY_SLICE_nARRAY_SLICE_n322,9010 -| STRUCT_ACCESS_nSTRUCT_ACCESS_n324,9078 -and by_name_opby_name_op326,9155 - BYNAME_CALL_nBYNAME_CALL_n327,9172 -| STRUCT_EXP_nSTRUCT_EXP_n329,9222 -and oper_expoper_exp333,9362 - CallPreDefCallPreDef334,9377 -| CallUsrDefCallUsrDef335,9402 -and static_argstatic_arg343,9719 - StaticArgIdentStaticArgIdent344,9736 -| StaticArgConstStaticArgConst345,9762 -| StaticArgTypeStaticArgType346,9790 -| StaticArgNodeStaticArgNode347,9819 -let give_pack_this_namegive_pack_this_name354,9987 -let leafexpleafexp369,10296 -let unexpunexp373,10367 -let binexpbinexp377,10441 -let ternexpternexp381,10524 -let naryexpnaryexp385,10615 -let bynameexpbynameexp389,10693 -let make_packbodymake_packbody404,11211 -let add_infoadd_info423,11768 -let lexeme_of_val_explexeme_of_val_exp458,12722 -let rec lexeme_of_left_partlexeme_of_left_part462,12847 -let lexeme_of_namespacelexeme_of_namespace469,13059 +type 'a errorerror15,351 + OkOk16,369 + | ErrorError17,382 +type idrefidref23,587 + id_packid_pack25,607 + id_idid_id26,638 +let pack_of_idrefpack_of_idref28,666 +let name_of_idrefname_of_idref30,701 +let idref_of_stringidref_of_string34,759 +let string_of_idrefstring_of_idref42,1027 +type parseresparseres51,1264 + PRPackBodyPRPackBody52,1281 + | PRNameSpacesPRNameSpaces53,1308 + namespacenamespace55,1347 + NSPackNSPack56,1361 + | NSModelNSModel57,1398 + model_infomodel_info59,1440 + mo_namemo_name60,1457 + mo_usesmo_uses61,1481 + mo_needsmo_needs62,1520 + mo_providesmo_provides64,1609 + mo_bodymo_body65,1660 +and pack_infopack_info67,1689 + pa_namepa_name68,1707 + pa_defpa_def69,1730 + pack_defpack_def72,1762 + PackGivenPackGiven73,1776 + | PackInstancePackInstance74,1804 + pack_givenpack_given76,1842 + pg_usespg_uses77,1860 + pg_providespg_provides79,1943 + pg_bodypg_body80,1994 + pack_instancepack_instance83,2027 + pi_modelpi_model84,2047 + pi_argspi_args85,2071 + packbodypackbody93,2296 + pk_const_tablepk_const_table94,2311 + pk_type_tablepk_type_table95,2376 + pk_oper_tablepk_oper_table96,2441 + pk_def_listpk_def_list97,2506 + item_identitem_ident100,2554 + ConstItemConstItem104,2661 + | TypeItemTypeItem105,2685 + | OperItemOperItem106,2709 + item_infoitem_info108,2737 + ConstInfoConstInfo109,2751 + | TypeInfoTypeInfo110,2779 + | OperInfoOperInfo111,2806 + const_infoconst_info116,3003 + ExternalConstExternalConst117,3019 + | EnumConstEnumConst118,3061 + | DefinedConstDefinedConst119,3103 + type_infotype_info124,3327 + ExternalTypeExternalType125,3341 + | AliasedTypeAliasedType126,3370 + | EnumTypeEnumType127,3410 + | StructTypeStructType129,3523 + struct_type_infostruct_type_info139,4012 + st_namest_name140,4035 + st_flistst_flist141,4058 + st_ftablest_ftable142,4087 +and field_infofield_info144,4151 + fd_namefd_name145,4170 + fd_typefd_type146,4192 + fd_valuefd_value147,4216 + type_exptype_exp155,4578 + type_exp_coretype_exp_core157,4619 + Bool_type_expBool_type_exp158,4637 + | Int_type_expInt_type_exp159,4655 + | Real_type_expReal_type_exp160,4672 + | Named_type_expNamed_type_exp161,4690 + | Array_type_expArray_type_exp162,4720 + oper_infooper_info168,4986 + NodeNode169,5000 + | FuncFunc170,5023 + func_infofunc_info175,5213 + fn_namefn_name176,5229 + fn_inparsfn_inpars177,5255 + fn_outparsfn_outpars178,5306 + node_infonode_info185,5569 + ni_nameni_name186,5585 + ni_staticlistni_staticlist187,5614 + ni_valueni_value188,5664 +and node_profilenode_profile190,5692 +and node_defnode_def191,5763 + NodeExternNodeExtern192,5778 + | NodeBodyNodeBody193,5809 + | NodeAliasNodeAlias194,5836 +and node_bodynode_body201,6206 + nbdy_inlistnbdy_inlist202,6224 + nbdy_outlistnbdy_outlist203,6257 + nbdy_loclistnbdy_loclist204,6290 + nbdy_vartablenbdy_vartable205,6323 + nbdy_assertsnbdy_asserts206,6359 + nbdy_eqsnbdy_eqs207,6405 +and var_info_tablevar_info_table209,6451 +and static_paramstatic_param210,6512 + StaticParamTypeStaticParamType211,6531 + | StaticParamConstStaticParamConst212,6562 + | StaticParamNodeStaticParamNode213,6606 +and var_infovar_info214,6691 + va_natureva_nature215,6708 + va_nameva_name216,6734 + va_typeva_type217,6756 + va_clockva_clock218,6780 +and var_naturevar_nature220,6807 + VarInputVarInput221,6824 + | VarOutputVarOutput222,6837 + | VarLocalVarLocal223,6851 +and eq_infoeq_info224,6864 + eq_lefteq_left225,6880 + eq_righteq_right226,6909 +and clock_expclock_exp229,6991 + BaseClockBaseClock230,7007 + | NamedClockNamedClock231,7021 +and left_partleft_part232,7056 + LeftVarLeftVar234,7127 + | LeftFieldLeftField235,7161 + | LeftArrayLeftArray236,7211 + | LeftSliceLeftSlice237,7264 +and slice_infoslice_info238,7318 + si_firstsi_first239,7337 + si_lastsi_last240,7360 + si_stepsi_step241,7383 +and val_expval_exp254,7926 + CallByPosCallByPos255,7940 + | CallByNameCallByName256,7998 +and by_pos_opby_pos_op259,8122 + NULL_expNULL_exp261,8157 + | TRUE_nTRUE_n262,8170 + | FALSE_nFALSE_n263,8181 + | ICONST_nICONST_n264,8193 + | RCONST_nRCONST_n265,8216 + | IDENT_nIDENT_n266,8239 + | NOT_nNOT_n268,8279 + | UMINUS_nUMINUS_n269,8289 + | PRE_nPRE_n270,8302 + | CURRENT_nCURRENT_n271,8312 + | REAL2INT_nREAL2INT_n272,8326 + | INT2REAL_nINT2REAL_n273,8341 + | ARROW_nARROW_n275,8377 + | FBY_nFBY_n276,8389 + | WHEN_nWHEN_n277,8399 + | AND_nAND_n278,8410 + | OR_nOR_n279,8420 + | XOR_nXOR_n280,8429 + | IMPL_nIMPL_n281,8439 + | EQ_nEQ_n282,8450 + | NEQ_nNEQ_n283,8459 + | LT_nLT_n284,8469 + | LTE_nLTE_n285,8478 + | GT_nGT_n286,8488 + | GTE_nGTE_n287,8497 + | DIV_nDIV_n288,8507 + | MOD_nMOD_n289,8517 + | MINUS_nMINUS_n290,8527 + | PLUS_nPLUS_n291,8539 + | SLASH_nSLASH_n292,8550 + | TIMES_nTIMES_n293,8562 + | POWER_nPOWER_n294,8574 + | HAT_nHAT_n295,8586 + | CONCAT_nCONCAT_n296,8596 + | IF_nIF_n298,8631 + | WITH_nWITH_n299,8640 + | NOR_nNOR_n301,8671 + | DIESE_nDIESE_n302,8681 + | TUPLE_nTUPLE_n303,8693 + | ARRAY_nARRAY_n304,8705 + | PROJ_nPROJ_n310,8976 + | CALL_nCALL_n312,9041 + | ARRAY_ACCES_nARRAY_ACCES_n314,9116 + | ARRAY_SLICE_nARRAY_SLICE_n315,9145 + | STRUCT_ACCESS_nSTRUCT_ACCESS_n317,9221 +and by_name_opby_name_op323,9369 + BYNAME_CALL_nBYNAME_CALL_n324,9386 + | STRUCT_EXP_nSTRUCT_EXP_n326,9445 +and oper_expoper_exp328,9503 + CallPreDefCallPreDef329,9518 + | CallUsrDefCallUsrDef330,9546 +and static_argstatic_arg338,9806 + StaticArgIdentStaticArgIdent339,9823 + | StaticArgConstStaticArgConst340,9852 + | StaticArgTypeStaticArgType341,9882 + | StaticArgNodeStaticArgNode342,9913 +let give_pack_this_namegive_pack_this_name349,10083 +let leafexpleafexp364,10392 +let unexpunexp368,10464 +let binexpbinexp372,10539 +let ternexpternexp376,10623 +let naryexpnaryexp380,10715 +let bynameexpbynameexp384,10794 +let make_packbodymake_packbody399,11313 +let add_infoadd_info418,11880 +let lexeme_of_val_explexeme_of_val_exp454,12828 +let rec lexeme_of_left_partlexeme_of_left_part458,12958 +let lexeme_of_namespacelexeme_of_namespace465,13170 ./utils.ml,334 Utils1,0 @@ -644,3 +643,3278 @@ let prjvtabprjvtab1,0 let tooltool3,49 let numbernumber4,79 let releaserelease5,127 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/arg.mli,655 +Arg1,0 +type specspec43,2206 + | UnitUnit44,2218 + | BoolBool45,2293 + | SetSet46,2370 + | ClearClear47,2434 + | StringString48,2499 + | Set_stringSet_string49,2578 + | IntInt50,2657 + | Set_intSet_int51,2734 + | FloatFloat52,2810 + | Set_floatSet_float53,2888 + | TupleTuple54,2966 + | SymbolSymbol56,3089 + | RestRest59,3281 +type keykey64,3512 +type docdoc65,3530 +type usage_msgusage_msg66,3548 +type anon_funanon_fun67,3572 +val parseparse69,3606 +val parse_argvparse_argv96,4900 +exception HelpHelp109,5566 +exception BadBad112,5655 +val usageusage117,5866 +val alignalign123,6164 +val currentcurrent130,6525 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/arith_status.mli,692 +Arith_status1,0 +val arith_statusarith_status18,1005 +val get_error_when_null_denominatorget_error_when_null_denominator21,1102 +val set_error_when_null_denominatorset_error_when_null_denominator23,1220 +val get_normalize_ratioget_normalize_ratio29,1519 +val set_normalize_ratioset_normalize_ratio31,1613 +val get_normalize_ratio_when_printingget_normalize_ratio_when_printing37,1880 +val set_normalize_ratio_when_printingset_normalize_ratio_when_printing39,2002 +val get_approx_printingget_approx_printing45,2304 +val set_approx_printingset_approx_printing47,2398 +val get_floating_precisionget_floating_precision53,2661 +val set_floating_precisionset_floating_precision55,2760 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/array.mli,778 +Array1,0 +external lengthlength18,978 +external getget21,1097 +external setset30,1480 +external makemake38,1816 +external createcreate51,2446 +val initinit54,2571 +val make_matrixmake_matrix64,3016 +val create_matrixcreate_matrix77,3604 +val appendappend80,3739 +val concatconcat84,3897 +val subsub87,4003 +val copycopy96,4383 +val fillfill100,4524 +val blitblit107,4804 +val to_listto_list118,5315 +val of_listof_list121,5420 +val iteriter125,5537 +val mapmap130,5745 +val iteriiteri135,5980 +val mapimapi140,6187 +val fold_leftfold_left145,6394 +val fold_rightfold_right150,6585 +val sortsort159,6801 +val stable_sortstable_sort185,8013 +val fast_sortfast_sort195,8458 +external unsafe_getunsafe_get204,8653 +external unsafe_setunsafe_set205,8719 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/arrayLabels.mli,784 +ArrayLabels1,0 +external lengthlength18,985 +external getget21,1104 +external setset30,1487 +external makemake38,1823 +external createcreate51,2453 +val initinit54,2584 +val make_matrixmake_matrix64,3031 +val create_matrixcreate_matrix77,3629 +val appendappend81,3783 +val concatconcat85,3941 +val subsub88,4047 +val copycopy97,4435 +val fillfill101,4576 +val blitblit108,4864 +val to_listto_list121,5409 +val of_listof_list124,5514 +val iteriter128,5631 +val mapmap133,5841 +val iteriiteri138,6078 +val mapimapi143,6293 +val fold_leftfold_left148,6508 +val fold_rightfold_right153,6706 +val sortsort162,6929 +val stable_sortstable_sort188,8145 +val fast_sortfast_sort198,8606 +external unsafe_getunsafe_get208,8806 +external unsafe_setunsafe_set209,8872 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/big_int.mli,1909 +Big_int1,0 +type big_intbig_int23,1092 +val zero_big_intzero_big_int26,1147 +val unit_big_intunit_big_int28,1210 +val minus_big_intminus_big_int33,1308 +val abs_big_intabs_big_int35,1378 +val add_big_intadd_big_int37,1446 +val succ_big_intsucc_big_int39,1519 +val add_int_big_intadd_int_big_int41,1591 +val sub_big_intsub_big_int43,1700 +val pred_big_intpred_big_int45,1776 +val mult_big_intmult_big_int47,1855 +val mult_int_big_intmult_int_big_int49,1955 +val square_big_intsquare_big_int51,2070 +val sqrt_big_intsqrt_big_int53,2167 +val quomod_big_intquomod_big_int57,2404 +val div_big_intdiv_big_int64,2786 +val mod_big_intmod_big_int67,2962 +val gcd_big_intgcd_big_int70,3138 +val power_int_positive_intpower_int_positive_int72,3246 +val power_big_int_positive_intpower_big_int_positive_int73,3296 +val power_int_positive_big_intpower_int_positive_big_int74,3354 +val power_big_int_positive_big_intpower_big_int_positive_big_int75,3412 +val sign_big_intsign_big_int84,3837 +val compare_big_intcompare_big_int87,3993 +val eq_big_inteq_big_int91,4207 +val le_big_intle_big_int92,4251 +val ge_big_intge_big_int93,4295 +val lt_big_intlt_big_int94,4339 +val gt_big_intgt_big_int95,4383 +val max_big_intmax_big_int97,4494 +val min_big_intmin_big_int99,4598 +val num_digits_big_intnum_digits_big_int101,4702 +val string_of_big_intstring_of_big_int107,4886 +val big_int_of_stringbig_int_of_string110,5035 +val big_int_of_intbig_int_of_int117,5315 +val is_int_big_intis_int_big_int119,5408 +val int_of_big_intint_of_big_int127,5873 +val float_of_big_intfloat_of_big_int131,6095 +val nat_of_big_intnat_of_big_int138,6268 +val big_int_of_natbig_int_of_nat139,6304 +val base_power_big_intbase_power_big_int140,6340 +val sys_big_int_of_stringsys_big_int_of_string141,6397 +val round_futur_last_digitround_futur_last_digit142,6456 +val approx_big_intapprox_big_int143,6514 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/bigarray.mli,3734 +Bigarray1,0 +type float32_eltfloat32_elt61,2951 +type float64_eltfloat64_elt62,2968 +type complex32_eltcomplex32_elt63,2985 +type complex64_eltcomplex64_elt64,3004 +type int8_signed_eltint8_signed_elt65,3023 +type int8_unsigned_eltint8_unsigned_elt66,3044 +type int16_signed_eltint16_signed_elt67,3067 +type int16_unsigned_eltint16_unsigned_elt68,3089 +type int_eltint_elt69,3113 +type int32_eltint32_elt70,3126 +type int64_eltint64_elt71,3141 +type nativeint_eltnativeint_elt72,3156 +type ('a, 'b) kindkind74,3176 +val float32float3291,4014 +val float64float6494,4084 +val complex32complex3297,4154 +val complex64complex64100,4232 +val int8_signedint8_signed103,4310 +val int8_unsignedint8_unsigned106,4386 +val int16_signedint16_signed109,4466 +val int16_unsignedint16_unsigned112,4544 +val intint115,4626 +val int32int32118,4686 +val int64int64121,4752 +val nativeintnativeint124,4818 +val charchar127,4896 +type c_layoutc_layout145,5779 +type fortran_layoutfortran_layout148,5832 +type 'a layoutlayout171,6927 +val c_layoutc_layout183,7273 +val fortran_layoutfortran_layout184,7304 +module GenarrayGenarray189,7409 + tt191,7433 + external createcreate211,8349 + external num_dimsnum_dims234,9458 + val dimsdims237,9588 + external nth_dimnth_dim241,9764 + external kindkind249,10172 + external layoutlayout252,10288 + external getget255,10406 + external setset274,11436 + external sub_leftsub_left292,12279 + external sub_rightsub_right311,13289 + external slice_leftslice_left331,14346 + external slice_rightslice_right349,15269 + external blitblit367,16212 + external fillfill376,16680 + val map_filemap_file383,17022 +module Array1Array1434,19545 + tt435,19565 + val createcreate439,19727 + val dimdim445,20023 + external kindkind449,20139 + external layoutlayout452,20255 + external getget455,20373 + external setset463,20795 + external subsub470,21098 + external blitblit475,21300 + external fillfill480,21484 + val of_arrayof_array484,21647 + val map_filemap_file488,21804 +module Array2Array2500,22258 + tt502,22280 + val createcreate506,22442 + val dim1dim1513,22826 + val dim2dim2516,22937 + external kindkind519,23049 + external layoutlayout522,23165 + external getget525,23283 + external setset532,23606 + external sub_leftsub_left539,23949 + external sub_rightsub_right546,24293 + val slice_leftslice_left554,24663 + val slice_rightslice_right560,25015 + external blitblit568,25404 + external fillfill573,25596 + val of_arrayof_array577,25769 + val map_filemap_file581,25942 +module Array3Array3593,26423 + tt595,26445 + val createcreate599,26609 + val dim1dim1606,27027 + val dim2dim2609,27140 + val dim3dim3612,27254 + external kindkind615,27367 + external layoutlayout618,27483 + external getget621,27601 + external setset628,27945 + external sub_leftsub_left636,28311 + external sub_rightsub_right643,28660 + val slice_left_1slice_left_1651,29035 + val slice_right_1slice_right_1659,29448 + val slice_left_2slice_left_2669,29890 + val slice_right_2slice_right_2676,30291 + external blitblit685,30714 + external fillfill690,30906 + val of_arrayof_array694,31079 + val map_filemap_file699,31274 +external genarray_of_array1genarray_of_array1707,31622 +external genarray_of_array2genarray_of_array2712,31811 +external genarray_of_array3genarray_of_array3717,32000 +val array1_of_genarrayarray1_of_genarray722,32191 +val array2_of_genarrayarray2_of_genarray727,32445 +val array3_of_genarrayarray3_of_genarray732,32700 +val reshapereshape740,32994 +val reshape_1reshape_1756,33895 +val reshape_2reshape_2760,34062 +val reshape_3reshape_3764,34236 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/buffer.mli,451 +Buffer1,0 +tt24,1219 +val createcreate27,1264 +val contentscontents41,2030 +val subsub45,2153 +val nthnth51,2432 +val lengthlength55,2553 +val clearclear58,2650 +val resetreset61,2698 +val add_charadd_char68,3042 +val add_stringadd_string71,3154 +val add_substringadd_substring74,3269 +val add_substituteadd_substitute78,3464 +val add_bufferadd_buffer94,4329 +val add_channeladd_channel98,4485 +val output_bufferoutput_buffer104,4741 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/callback.mli,94 +Callback1,0 +val registerregister23,1205 +val register_exceptionregister_exception28,1399 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/camlinternalMod.mli,208 +CamlinternalMod1,0 +type shapeshape16,960 + | FunctionFunction17,973 + | LazyLazy18,986 + | ClassClass19,995 + | ModuleModule20,1005 +val init_modinit_mod22,1032 +val update_modupdate_mod23,1083 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/camlinternalOO.mli,2821 +CamlinternalOO1,0 +type tagtag22,1119 +type labellabel23,1128 +type tabletable24,1139 +type methmeth25,1150 +tt26,1160 +type objobj27,1167 +type closureclosure28,1176 +val public_method_labelpublic_method_label29,1189 +val new_methodnew_method30,1229 +val new_variablenew_variable31,1261 +val new_methods_variablesnew_methods_variables32,1303 +val get_variableget_variable34,1388 +val get_variablesget_variables35,1430 +val get_method_labelget_method_label36,1485 +val get_method_labelsget_method_labels37,1533 +val get_methodget_method38,1594 +val set_methodset_method39,1634 +val set_methodsset_methods40,1682 +val narrownarrow41,1729 +val widenwiden42,1804 +val add_initializeradd_initializer43,1830 +val dummy_tabledummy_table44,1883 +val create_tablecreate_table45,1907 +val init_classinit_class46,1948 +val inheritsinherits47,1979 +val make_classmake_class50,2122 +type init_tableinit_table53,2239 +val make_class_storemake_class_store54,2255 +val dummy_classdummy_class56,2333 +val copycopy62,2453 +val create_objectcreate_object63,2485 +val create_object_optcreate_object_opt64,2518 +val run_initializersrun_initializers65,2562 +val run_initializers_optrun_initializers_opt66,2606 +val create_object_and_run_initializerscreate_object_and_run_initializers67,2660 +external sendsend68,2721 +external sendcachesendcache69,2763 +external sendselfsendself70,2827 +external get_public_methodget_public_method71,2879 +type tablestables76,2996 +val lookup_tableslookup_tables77,3008 +type implimpl108,4229 + GetConstGetConst109,4241 + | GetVarGetVar110,4254 + | GetEnvGetEnv111,4265 + | GetMethGetMeth112,4276 + | SetVarSetVar113,4288 + | AppConstAppConst114,4299 + | AppVarAppVar115,4312 + | AppEnvAppEnv116,4323 + | AppMethAppMeth117,4334 + | AppConstConstAppConstConst118,4346 + | AppConstVarAppConstVar119,4364 + | AppConstEnvAppConstEnv120,4380 + | AppConstMethAppConstMeth121,4396 + | AppVarConstAppVarConst122,4413 + | AppEnvConstAppEnvConst123,4429 + | AppMethConstAppMethConst124,4445 + | MethAppConstMethAppConst125,4462 + | MethAppVarMethAppVar126,4479 + | MethAppEnvMethAppEnv127,4494 + | MethAppMethMethAppMeth128,4509 + | SendConstSendConst129,4525 + | SendVarSendVar130,4539 + | SendEnvSendEnv131,4551 + | SendMethSendMeth132,4563 + | ClosureClosure133,4576 +type paramsparams138,4648 + { mutable compact_tablecompact_table139,4662 + mutable copy_parentcopy_parent140,4696 + mutable clean_when_copyingclean_when_copying141,4728 + mutable retry_countretry_count142,4767 + mutable bucket_small_sizebucket_small_size143,4798 +val paramsparams145,4837 +type statsstats149,4881 + { classesclasses150,4894 + methodsmethods151,4913 + inst_varsinst_vars152,4932 +val statsstats153,4954 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/char.mli,227 +Char1,0 +external codecode18,981 +val chrchr21,1070 +val escapedescaped26,1235 +val lowercaselowercase31,1413 +val uppercaseuppercase34,1517 +tt37,1621 +val comparecompare40,1680 +external unsafe_chrunsafe_chr48,1975 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/complex.mli,458 +Complex1,0 +tt23,1240 +type t = { rere23,1240 +type t = { re: float; imim23,1240 +val zerozero27,1367 +val oneone30,1411 +val ii33,1454 +val negneg36,1495 +val conjconj39,1535 +val addadd42,1619 +val subsub45,1657 +val mulmul48,1698 +val invinv51,1742 +val divdiv54,1798 +val sqrtsqrt57,1836 +val norm2norm262,2014 +val normnorm65,2096 +val argarg68,2175 +val polarpolar75,2480 +val expexp79,2599 +val loglog82,2678 +val powpow85,2735 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/condition.mli,133 +Condition1,0 +tt35,1669 +val createcreate38,1717 +val waitwait41,1781 +val signalsignal47,2069 +val broadcastbroadcast51,2184 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/digest.mli,213 +Digest1,0 +tt24,1234 +val stringstring27,1301 +val substringsubstring30,1373 +external channelchannel35,1569 +val filefile43,1984 +val outputoutput46,2066 +val inputinput49,2156 +val to_hexto_hex52,2236 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/dtd.mli,2288 +Dtd1,0 +type dtd_childdtd_child47,1979 + | DTDTagDTDTag48,1997 + | DTDPCDataDTDPCData49,2018 + | DTDOptionalDTDOptional50,2032 + | DTDZeroOrMoreDTDZeroOrMore51,2061 + | DTDOneOrMoreDTDOneOrMore52,2092 + | DTDChoiceDTDChoice53,2122 + | DTDChildrenDTDChildren54,2154 +type dtd_element_typedtd_element_type56,2190 + | DTDEmptyDTDEmpty57,2215 + | DTDAnyDTDAny58,2228 + | DTDChildDTDChild59,2239 +type dtd_attr_defaultdtd_attr_default61,2267 + | DTDDefaultDTDDefault62,2292 + | DTDRequiredDTDRequired63,2317 + | DTDImpliedDTDImplied64,2333 + | DTDFixedDTDFixed65,2348 +type dtd_attr_typedtd_attr_type67,2373 + | DTDCDataDTDCData68,2395 + | DTDNMTokenDTDNMToken69,2408 + | DTDEnumDTDEnum70,2423 +type dtd_itemdtd_item72,2452 + | DTDAttributeDTDAttribute73,2469 + | DTDElementDTDElement74,2540 +type dtddtd76,2586 +type checkedchecked78,2614 +val parse_fileparse_file85,2839 +val parse_inparse_in89,3002 +val parse_stringparse_string93,3162 +val checkcheck97,3328 +val proveprove107,3840 +val to_stringto_string112,4073 +type parse_error_msgparse_error_msg130,4697 + | InvalidDTDDeclInvalidDTDDecl131,4721 + | InvalidDTDElementInvalidDTDElement132,4740 + | InvalidDTDAttributeInvalidDTDAttribute133,4762 + | InvalidDTDTagInvalidDTDTag134,4786 + | DTDItemExpectedDTDItemExpected135,4804 +type check_errorcheck_error137,4826 + | ElementDefinedTwiceElementDefinedTwice138,4846 + | AttributeDefinedTwiceAttributeDefinedTwice139,4880 + | ElementEmptyContructorElementEmptyContructor140,4925 + | ElementReferencedElementReferenced141,4962 + | ElementNotDeclaredElementNotDeclared142,5003 +type prove_errorprove_error144,5038 + | UnexpectedPCDataUnexpectedPCData145,5058 + | UnexpectedTagUnexpectedTag146,5079 + | UnexpectedAttributeUnexpectedAttribute147,5107 + | InvalidAttributeValueInvalidAttributeValue148,5141 + | RequiredAttributeRequiredAttribute149,5177 + | ChildExpectedChildExpected150,5209 + | EmptyExpectedEmptyExpected151,5237 +type parse_errorparse_error153,5257 +exception Parse_errorParse_error155,5311 +exception Check_errorCheck_error156,5349 +exception Prove_errorProve_error157,5387 +val parse_errorparse_error159,5427 +val check_errorcheck_error160,5468 +val prove_errorprove_error161,5509 +val _raises_raises166,5593 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/dynlink.mli,1157 +Dynlink1,0 +val initinit20,1030 +val loadfileloadfile26,1212 +val loadfile_privateloadfile_private35,1664 +val allow_onlyallow_only42,1895 +val prohibitprohibit55,2641 +val default_available_unitsdefault_available_units61,2907 +val allow_unsafe_modulesallow_unsafe_modules66,3122 +val add_interfacesadd_interfaces82,3903 +val add_available_unitsadd_available_units88,4200 +val clear_available_unitsclear_available_units96,4648 +type linking_errorlinking_error102,4808 + Undefined_globalUndefined_global103,4829 + | Unavailable_primitiveUnavailable_primitive104,4860 + | Uninitialized_globalUninitialized_global105,4896 +type errorerror107,4932 + Not_a_bytecode_fileNot_a_bytecode_file108,4945 + | Inconsistent_importInconsistent_import109,4979 + | Unavailable_unitUnavailable_unit110,5013 + | Unsafe_fileUnsafe_file111,5044 + | Linking_errorLinking_error112,5060 + | Corrupted_interfaceCorrupted_interface113,5104 + | File_not_foundFile_not_found114,5138 + | Cannot_open_dllCannot_open_dll115,5167 +exception ErrorError117,5198 +val error_messageerror_message121,5340 +val digest_interfacedigest_interface129,5478 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/event.mli,360 +Event1,0 +type 'a channelchannel24,1268 +val new_channelnew_channel27,1357 +type +'a eventevent30,1424 +val sendsend35,1653 +val receivereceive40,1850 +val alwaysalways42,1888 +val choosechoose46,2037 +val wrapwrap50,2179 +val wrap_abortwrap_abort55,2385 +val guardguard60,2620 +val syncsync66,2880 +val selectselect72,3143 +val pollpoll76,3282 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/filename.mli,514 +Filename1,0 +val current_dir_namecurrent_dir_name18,989 +val parent_dir_nameparent_dir_name21,1095 +val concatconcat25,1218 +val is_relativeis_relative29,1355 +val is_implicitis_implicit34,1530 +val check_suffixcheck_suffix40,1815 +val chop_suffixchop_suffix44,1962 +val chop_extensionchop_extension49,2170 +val basenamebasename57,2475 +val dirnamedirname68,3036 +val temp_filetemp_file71,3101 +val open_temp_fileopen_temp_file82,3609 +val temp_dir_nametemp_dir_name93,4268 +val quotequote101,4550 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/format.mli,5318 +Format1,0 +val open_boxopen_box78,3791 +val close_boxclose_box90,4326 +val print_stringprint_string95,4451 +val print_asprint_as98,4547 +val print_intprint_int103,4716 +val print_floatprint_float106,4792 +val print_charprint_char109,4885 +val print_boolprint_bool112,4964 +val print_spaceprint_space118,5066 +val print_cutprint_cut125,5351 +val print_breakprint_break133,5694 +val print_flushprint_flush143,6130 +val print_newlineprint_newline147,6266 +val force_newlineforce_newline150,6361 +val print_if_newlineprint_if_newline154,6514 +val set_marginset_margin162,6713 +val get_marginget_margin170,7064 +val set_max_indentset_max_indent176,7184 +val get_max_indentget_max_indent185,7581 +val set_max_boxesset_max_boxes190,7769 +val get_max_boxesget_max_boxes198,8073 +val over_max_boxesover_max_boxes201,8176 +val open_hboxopen_hbox207,8324 +val open_vboxopen_vbox212,8535 +val open_hvboxopen_hvbox220,8811 +val open_hovboxopen_hovbox229,9158 +val open_tboxopen_tbox241,9550 +val close_tboxclose_tbox244,9613 +val print_tbreakprint_tbreak247,9701 +val set_tabset_tab259,10202 +val print_tabprint_tab262,10294 +val set_ellipsis_textset_ellipsis_text268,10409 +val get_ellipsis_textget_ellipsis_text272,10562 +type tagtag278,10662 +val open_tagopen_tag327,13260 +val close_tagclose_tag332,13512 +val set_tagsset_tags338,13796 +val set_print_tagsset_print_tags340,13902 +val set_mark_tagsset_mark_tags341,13938 +val get_print_tagsget_print_tags344,14108 +val get_mark_tagsget_mark_tags345,14144 +val set_formatter_out_channelset_formatter_out_channel351,14290 +val set_formatter_output_functionsset_formatter_output_functions354,14409 +val get_formatter_output_functionsget_formatter_output_functions365,14963 +type formatter_tag_functionsformatter_tag_functions371,15177 + mark_open_tagmark_open_tag372,15210 + mark_close_tagmark_close_tag373,15243 + print_open_tagprint_open_tag374,15277 + print_close_tagprint_close_tag375,15309 +val set_formatter_tag_functionsset_formatter_tag_functions384,15750 +val get_formatter_tag_functionsget_formatter_tag_functions402,16567 +val set_all_formatter_output_functionsset_all_formatter_output_functions409,16806 +val get_all_formatter_output_functionsget_all_formatter_output_functions430,17831 +type formatterformatter442,18133 +val formatter_of_out_channelformatter_of_out_channel457,18921 +val std_formatterstd_formatter461,19091 +val err_formattererr_formatter465,19249 +val formatter_of_bufferformatter_of_buffer470,19428 +val stdbufstdbuf476,19722 +val str_formatterstr_formatter479,19805 +val flush_str_formatterflush_str_formatter484,20004 +val make_formattermake_formatter488,20168 +val pp_open_hboxpp_open_hbox497,20570 +val pp_open_vboxpp_open_vbox498,20617 +val pp_open_hvboxpp_open_hvbox499,20663 +val pp_open_hovboxpp_open_hovbox500,20710 +val pp_open_boxpp_open_box501,20758 +val pp_close_boxpp_close_box502,20803 +val pp_open_tagpp_open_tag503,20850 +val pp_close_tagpp_close_tag504,20898 +val pp_print_stringpp_print_string505,20945 +val pp_print_aspp_print_as506,20997 +val pp_print_intpp_print_int507,21052 +val pp_print_floatpp_print_float508,21098 +val pp_print_charpp_print_char509,21148 +val pp_print_boolpp_print_bool510,21196 +val pp_print_breakpp_print_break511,21244 +val pp_print_cutpp_print_cut512,21299 +val pp_print_spacepp_print_space513,21346 +val pp_force_newlinepp_force_newline514,21395 +val pp_print_flushpp_print_flush515,21446 +val pp_print_newlinepp_print_newline516,21495 +val pp_print_if_newlinepp_print_if_newline517,21546 +val pp_open_tboxpp_open_tbox518,21600 +val pp_close_tboxpp_close_tbox519,21647 +val pp_print_tbreakpp_print_tbreak520,21695 +val pp_set_tabpp_set_tab521,21751 +val pp_print_tabpp_print_tab522,21796 +val pp_set_tagspp_set_tags523,21843 +val pp_set_print_tagspp_set_print_tags524,21889 +val pp_set_mark_tagspp_set_mark_tags525,21941 +val pp_get_print_tagspp_get_print_tags526,21992 +val pp_get_mark_tagspp_get_mark_tags527,22044 +val pp_set_marginpp_set_margin528,22095 +val pp_get_marginpp_get_margin529,22142 +val pp_set_max_indentpp_set_max_indent530,22189 +val pp_get_max_indentpp_get_max_indent531,22240 +val pp_set_max_boxespp_set_max_boxes532,22291 +val pp_get_max_boxespp_get_max_boxes533,22341 +val pp_over_max_boxespp_over_max_boxes534,22391 +val pp_set_ellipsis_textpp_set_ellipsis_text535,22443 +val pp_get_ellipsis_textpp_get_ellipsis_text536,22500 +val pp_set_formatter_out_channelpp_set_formatter_out_channel537,22557 +val pp_set_formatter_output_functionspp_set_formatter_output_functions538,22627 +val pp_get_formatter_output_functionspp_get_formatter_output_functions540,22741 +val pp_set_all_formatter_output_functionspp_set_all_formatter_output_functions542,22854 +val pp_get_all_formatter_output_functionspp_get_all_formatter_output_functions545,23034 +val pp_set_formatter_tag_functionspp_set_formatter_tag_functions549,23188 +val pp_get_formatter_tag_functionspp_get_formatter_tag_functions551,23274 +val fprintffprintf561,23653 +val printfprintf622,26893 +val eprintfeprintf625,27007 +val sprintfsprintf628,27122 +val bprintfbprintf641,27775 +val kfprintfkfprintf654,28398 +val ifprintfifprintf659,28644 +val ksprintfksprintf663,28834 +val kprintfkprintf667,29012 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/gc.mli,1519 +Gc1,0 +type statstat18,1017 + { minor_wordsminor_words19,1029 + promoted_wordspromoted_words25,1273 + major_wordsmajor_words30,1468 + minor_collectionsminor_collections34,1618 + major_collectionsmajor_collections37,1718 + heap_wordsheap_words41,1842 + heap_chunksheap_chunks44,1916 + live_wordslive_words47,2018 + live_blockslive_blocks51,2135 + free_wordsfree_words54,2211 + free_blocksfree_blocks57,2279 + largest_freelargest_free60,2349 + fragmentsfragments63,2440 + compactionscompactions68,2635 + top_heap_wordstop_heap_words71,2728 +type controlcontrol82,3137 + { mutable minor_heap_sizeminor_heap_size83,3152 + mutable major_heap_incrementmajor_heap_increment87,3318 + mutable space_overheadspace_overhead91,3465 + mutable verboseverbose100,3895 + mutable max_overheadmax_overhead116,4634 + mutable stack_limitstack_limit125,5082 +external statstat135,5520 +external quick_statquick_stat140,5724 +external counterscounters146,6024 +external getget150,6203 +external setset153,6328 +external minorminor157,6528 +external major_slicemajor_slice160,6612 +external majormajor165,6885 +external full_majorfull_major168,7010 +external compactcompact173,7235 +val print_statprint_stat177,7406 +val allocated_bytesallocated_bytes181,7565 +val finalisefinalise186,7776 +val finalise_releasefinalise_release242,10535 +type alarmalarm247,10753 +val create_alarmcreate_alarm252,10935 +val delete_alarmdelete_alarm258,11207 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/genlex.mli,207 +Genlex1,0 +type tokentoken50,2353 + KwdKwd51,2366 + | IdentIdent52,2384 + | IntInt53,2404 + | FloatFloat54,2419 + | StringString55,2438 + | CharChar56,2459 +val make_lexermake_lexer58,2477 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/graphics.mli,2773 +Graphics1,0 +exception Graphic_failureGraphic_failure18,1004 +val open_graphopen_graph24,1137 +val close_graphclose_graph32,1560 +val set_window_titleset_window_title35,1666 +val resize_windowresize_window38,1750 +external clear_graphclear_graph41,1835 +external size_xsize_x44,1930 +external size_ysize_y47,2011 +type colorcolor55,2341 +val rgbrgb62,2648 +external set_colorset_color67,2863 +val backgroundbackground70,2959 +val foregroundforeground73,3017 +val blackblack83,3350 +val whitewhite84,3368 +val redred85,3386 +val greengreen86,3402 +val blueblue87,3420 +val yellowyellow88,3437 +val cyancyan89,3456 +val magentamagenta90,3473 +external plotplot95,3530 +val plotsplots98,3643 +external point_colorpoint_color101,3743 +external movetomoveto105,3910 +val rmovetormoveto108,4002 +external current_xcurrent_x111,4109 +external current_ycurrent_y114,4214 +val current_pointcurrent_point117,4319 +external linetolineto120,4407 +val rlinetorlineto124,4587 +val curvetocurveto129,4775 +val draw_rectdraw_rect134,5005 +val draw_poly_linedraw_poly_line140,5254 +val draw_polydraw_poly147,5543 +val draw_segmentsdraw_segments153,5746 +val draw_arcdraw_arc160,6075 +val draw_ellipsedraw_ellipse166,6400 +val draw_circledraw_circle172,6665 +val set_line_widthset_line_width177,6869 +external draw_chardraw_char186,7235 +external draw_stringdraw_string189,7327 +external set_fontset_font194,7574 +val set_text_sizeset_text_size199,7759 +external text_sizetext_size204,7935 +val fill_rectfill_rect211,8120 +external fill_polyfill_poly216,8358 +val fill_arcfill_arc220,8552 +val fill_ellipsefill_ellipse224,8735 +val fill_circlefill_circle228,8899 +type imageimage235,9072 +val transptransp239,9210 +external make_imagemake_image247,9605 +external dump_imagedump_image253,9877 +external draw_imagedraw_image256,9993 +val get_imageget_image259,10138 +external create_imagecreate_image263,10320 +external blit_imageblit_image269,10603 +type statusstatus279,11015 + { mouse_xmouse_x280,11029 + mouse_ymouse_y281,11094 + buttonbutton282,11159 + keypressedkeypressed283,11232 + keykey284,11302 +type eventevent289,11407 + Button_downButton_down290,11420 + | Button_upButton_up291,11485 + | Key_pressedKey_pressed292,11551 + | Mouse_motionMouse_motion293,11607 + | PollPoll294,11665 +external wait_next_eventwait_next_event298,11775 +val mouse_posmouse_pos310,12376 +val button_downbutton_down316,12639 +val read_keyread_key319,12743 +val key_pressedkey_pressed323,12875 +external soundsound330,13018 +val auto_synchronizeauto_synchronize336,13214 +external synchronizesynchronize358,14121 +external display_modedisplay_mode364,14323 +external remember_moderemember_mode372,14694 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/graphicsX11.mli,168 +GraphicsX111,0 +type window_idwindow_id18,1021 +val window_idwindow_id20,1046 +val open_subwindowopen_subwindow25,1221 +val close_subwindowclose_subwindow29,1391 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/hashtbl.mli,934 +Hashtbl1,0 +tt25,1101 +val createcreate28,1178 +val clearclear35,1473 +val addadd39,1533 +val copycopy46,1870 +val findfind49,1952 +val find_allfind_all53,2112 +val memmem59,2370 +val removeremove62,2466 +val replacereplace67,2677 +val iteriter74,3012 +val foldfold83,3526 +val lengthlength95,4075 +module type HashedTypeHashedType104,4344 + tt106,4375 + val equalequal108,4431 + val hashhash110,4520 +module type SS125,5229 + type keykey127,5251 + tt128,5264 + val createcreate129,5278 + val clearclear130,5307 + val copycopy131,5336 + val addadd132,5364 + val removeremove133,5404 + val findfind134,5441 + val find_allfind_all135,5474 + val replacereplace136,5516 + val memmem137,5560 + val iteriter138,5594 + val foldfold139,5645 + val lengthlength140,5704 +module MakeMake144,5800 +val hashhash158,6352 +external hash_paramhash_param165,6619 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/int32.mli,982 +Int321,0 +val zerozero29,1505 +val oneone32,1552 +val minus_oneminus_one35,1598 +external negneg38,1651 +external addadd41,1720 +external subsub44,1792 +external mulmul47,1867 +external divdiv50,1945 +external remrem55,2196 +val succsucc61,2489 +val predpred64,2578 +val absabs67,2669 +val max_intmax_int70,2745 +val min_intmin_int73,2828 +external logandlogand77,2909 +external logorlogor80,2995 +external logxorlogxor83,3078 +val lognotlognot86,3173 +external shift_leftshift_left89,3234 +external shift_rightshift_right93,3414 +external shift_right_logicalshift_right_logical99,3700 +external of_intof_int105,4001 +external to_intto_int109,4137 +external of_floatof_float116,4449 +external to_floatto_float122,4775 +external of_stringof_string125,4903 +val to_stringto_string134,5362 +external bits_of_floatbits_of_float137,5471 +external float_of_bitsfloat_of_bits144,5824 +tt149,6064 +val comparecompare152,6129 +external formatformat162,6463 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/int64.mli,1142 +Int641,0 +val zerozero30,1504 +val oneone33,1551 +val minus_oneminus_one36,1597 +external negneg39,1650 +external addadd42,1719 +external subsub45,1791 +external mulmul48,1866 +external divdiv51,1944 +external remrem56,2195 +val succsucc62,2488 +val predpred65,2577 +val absabs68,2668 +val max_intmax_int71,2744 +val min_intmin_int74,2827 +external logandlogand77,2907 +external logorlogor80,2993 +external logxorlogxor83,3076 +val lognotlognot86,3171 +external shift_leftshift_left89,3232 +external shift_rightshift_right93,3412 +external shift_right_logicalshift_right_logical99,3698 +external of_intof_int105,3999 +external to_intto_int109,4135 +external of_floatof_float117,4521 +external to_floatto_float123,4847 +external of_int32of_int32127,4976 +external to_int32to_int32131,5126 +external of_nativeintof_nativeint137,5379 +external to_nativeintto_nativeint141,5545 +external of_stringof_string147,5810 +val to_stringto_string156,6269 +external bits_of_floatbits_of_float159,6371 +external float_of_bitsfloat_of_bits166,6724 +tt171,6964 +val comparecompare174,7029 +external formatformat184,7363 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/lazy.mli,231 +Lazy1,0 +tt18,981 +exception UndefinedUndefined40,1974 +val forceforce42,1997 +val force_valforce_val51,2348 +val lazy_from_funlazy_from_fun61,2781 +val lazy_from_vallazy_from_val65,2912 +val lazy_is_vallazy_is_val70,3101 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/lexing.mli,1820 +Lexing1,0 +type positionposition20,1040 + pos_fnamepos_fname21,1058 + pos_lnumpos_lnum22,1080 + pos_bolpos_bol23,1098 + pos_cnumpos_cnum24,1115 +val dummy_posdummy_pos37,1653 +type lexbuflexbuf46,1800 + { refill_buffrefill_buff47,1814 + mutable lex_bufferlex_buffer48,1848 + mutable lex_buffer_lenlex_buffer_len49,1881 + mutable lex_abs_poslex_abs_pos50,1915 + mutable lex_start_poslex_start_pos51,1946 + mutable lex_curr_poslex_curr_pos52,1979 + mutable lex_last_poslex_last_pos53,2011 + mutable lex_last_actionlex_last_action54,2043 + mutable lex_eof_reachedlex_eof_reached55,2078 + mutable lex_memlex_mem56,2114 + mutable lex_start_plex_start_p57,2147 + mutable lex_curr_plex_curr_p58,2183 +val from_channelfrom_channel74,2893 +val from_stringfrom_string79,3127 +val from_functionfrom_function85,3369 +val lexemelexeme106,4347 +val lexeme_charlexeme_char110,4473 +val lexeme_startlexeme_start114,4606 +val lexeme_endlexeme_end119,4815 +val lexeme_start_plexeme_start_p124,5043 +val lexeme_end_plexeme_end_p128,5171 +val flush_inputflush_input134,5331 +val sub_lexemesub_lexeme146,5655 +val sub_lexeme_optsub_lexeme_opt147,5703 +val sub_lexeme_charsub_lexeme_char148,5762 +val sub_lexeme_char_optsub_lexeme_char_opt149,5806 +type lex_tableslex_tables151,5862 + { lex_baselex_base152,5880 + lex_backtrklex_backtrk153,5903 + lex_defaultlex_default154,5929 + lex_translex_trans155,5955 + lex_checklex_check156,5979 + lex_base_codelex_base_code157,6003 + lex_backtrk_codelex_backtrk_code158,6031 + lex_default_codelex_default_code159,6062 + lex_trans_codelex_trans_code160,6093 + lex_check_codelex_check_code161,6122 + lex_codelex_code162,6151 +val engineengine164,6175 +val new_enginenew_engine165,6223 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/list.mli,1148 +List1,0 +val lengthlength29,1509 +val hdhd32,1603 +val tltl36,1724 +val nthnth40,1855 +val revrev46,2107 +val appendappend49,2159 +val rev_appendrev_append54,2377 +val concatconcat59,2605 +val flattenflatten65,2866 +val iteriter73,3036 +val mapmap78,3227 +val rev_maprev_map83,3445 +val fold_leftfold_left88,3627 +val fold_rightfold_right92,3766 +val iter2iter2100,3965 +val map2map2106,4191 +val rev_map2rev_map2112,4428 +val fold_left2fold_left2117,4638 +val fold_right2fold_right2123,4891 +val for_allfor_all133,5195 +val existsexists138,5400 +val for_all2for_all2143,5613 +val exists2exists2148,5816 +val memmem153,6017 +val memqmemq157,6128 +val findfind165,6306 +val filterfilter171,6526 +val find_allfind_all176,6734 +val partitionpartition179,6839 +val assocassoc190,7217 +val assqassq198,7532 +val mem_assocmem_assoc202,7679 +val mem_assqmem_assq206,7852 +val remove_assocremove_assoc210,8009 +val remove_assqremove_assq215,8195 +val splitsplit223,8418 +val combinecombine229,8617 +val sortsort240,8913 +val stable_sortstable_sort256,9641 +val fast_sortfast_sort265,9969 +val mergemerge269,10120 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/listLabels.mli,1155 +ListLabels1,0 +val lengthlength29,1516 +val hdhd32,1610 +val tltl36,1731 +val nthnth40,1862 +val revrev46,2114 +val appendappend49,2166 +val rev_appendrev_append54,2384 +val concatconcat59,2618 +val flattenflatten65,2879 +val iteriter73,3049 +val mapmap78,3242 +val rev_maprev_map83,3462 +val fold_leftfold_left88,3658 +val fold_rightfold_right92,3804 +val iter2iter2100,4010 +val map2map2106,4238 +val rev_map2rev_map2112,4477 +val fold_left2fold_left2117,4701 +val fold_right2fold_right2124,4963 +val for_allfor_all135,5276 +val existsexists140,5483 +val for_all2for_all2145,5698 +val exists2exists2150,5909 +val memmem155,6118 +val memqmemq159,6233 +val findfind167,6421 +val filterfilter173,6643 +val find_allfind_all178,6853 +val partitionpartition181,6966 +val assocassoc192,7346 +val assqassq200,7661 +val mem_assocmem_assoc204,7814 +val mem_assqmem_assq208,7997 +val remove_assocremove_assoc212,8164 +val remove_assqremove_assq217,8350 +val splitsplit225,8579 +val combinecombine231,8778 +val sortsort242,9074 +val stable_sortstable_sort258,9806 +val fast_sortfast_sort267,10144 +val mergemerge271,10299 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/map.mli,521 +Map1,0 +module type OrderedTypeOrderedType26,1359 + tt28,1391 + val comparecompare30,1441 +module type SS41,1979 + type keykey43,2001 + tt46,2052 + val emptyempty49,2128 + val is_emptyis_empty52,2175 + val addadd55,2254 + val findfind60,2478 + val removeremove64,2632 + val memmem68,2804 + val iteriter72,2939 + val mapmap80,3387 + val mapimapi87,3743 + val foldfold91,3938 + val comparecompare96,4194 + val equalequal100,4406 +module MakeMake109,4770 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/marshal.mli,399 +Marshal1,0 +type extern_flagsextern_flags47,2603 + No_sharingNo_sharing48,2623 + | ClosuresClosures49,2693 +val to_channelto_channel52,2820 +external to_stringto_string82,4425 +val to_bufferto_buffer89,4709 +val from_channelfrom_channel98,5171 +val from_stringfrom_string104,5430 +val header_sizeheader_size110,5707 +val data_sizedata_size132,6775 +val total_sizetotal_size135,6847 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/moreLabels.mli,2436 +MoreLabels1,0 +module HashtblHashtbl26,1257 + tt27,1278 + val createcreate28,1317 + val clearclear29,1350 + val addadd30,1383 + val copycopy31,1435 + val findfind32,1473 + val find_allfind_all33,1509 + val memmem34,1554 + val removeremove35,1591 + val replacereplace36,1631 + val iteriter37,1687 + val foldfold38,1752 + val lengthlength41,1844 + module type HashedTypeHashedType42,1877 + module type SS43,1923 + type keykey45,1949 + and 'a tt46,1964 + val createcreate47,1979 + val clearclear48,2010 + val copycopy49,2041 + val addadd50,2071 + val removeremove51,2122 + val findfind52,2161 + val find_allfind_all53,2196 + val replacereplace54,2240 + val memmem55,2295 + val iteriter56,2331 + val foldfold57,2395 + val lengthlength60,2492 + module MakeMake62,2531 + val hashhash63,2597 + external hash_paramhash_param64,2620 +module MapMap68,2714 + module type OrderedTypeOrderedType69,2731 + module type SS70,2775 + type keykey72,2801 + and (+'a) tt73,2816 + val emptyempty74,2834 + val is_emptyis_empty75,2857 + val addadd76,2890 + val findfind77,2941 + val removeremove78,2976 + val memmem79,3015 + val iteriter80,3051 + val mapmap81,3115 + val mapimapi82,3160 + val foldfold83,3213 + val comparecompare86,3310 + val equalequal87,3374 + module MakeMake89,3444 +module SetSet92,3520 + module type OrderedTypeOrderedType93,3537 + module type SS94,3581 + type eltelt96,3607 + and tt97,3622 + val emptyempty98,3634 + val is_emptyis_empty99,3654 + val memmem100,3685 + val addadd101,3718 + val singletonsingleton102,3748 + val removeremove103,3779 + val unionunion104,3812 + val interinter105,3842 + val diffdiff106,3872 + val comparecompare107,3901 + val equalequal108,3935 + val subsetsubset109,3968 + val iteriter110,4002 + val foldfold111,4048 + val for_allfor_all112,4107 + val existsexists113,4156 + val filterfilter114,4204 + val partitionpartition115,4249 + val cardinalcardinal116,4301 + val elementselements117,4331 + val min_eltmin_elt118,4366 + val max_eltmax_elt119,4395 + val choosechoose120,4424 + val splitsplit121,4452 + module MakeMake123,4502 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/mutex.mli,127 +Mutex1,0 +tt29,1326 +val createcreate32,1362 +val locklock35,1413 +val try_locktry_lock41,1655 +val unlockunlock47,1891 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/nat.mli,1986 +Nat1,0 +type natnat18,1000 +external create_natcreate_nat23,1138 +val make_natmake_nat24,1185 +external set_to_zero_natset_to_zero_nat25,1210 +external blit_natblit_nat26,1282 +val copy_natcopy_nat27,1354 +external set_digit_natset_digit_nat28,1393 +external nth_digit_natnth_digit_nat29,1461 +val length_natlength_nat30,1521 +external num_digits_natnum_digits_nat31,1550 +external num_leading_zero_bits_in_digitnum_leading_zero_bits_in_digit32,1619 +external is_digit_intis_digit_int33,1713 +external is_digit_zerois_digit_zero34,1772 +external is_digit_normalizedis_digit_normalized35,1833 +external is_digit_oddis_digit_odd36,1906 +val is_zero_natis_zero_nat37,1965 +val is_nat_intis_nat_int38,2008 +val int_of_natint_of_nat39,2050 +val nat_of_intnat_of_int40,2077 +external incr_natincr_nat41,2104 +external add_natadd_nat42,2168 +external complement_natcomplement_nat43,2268 +external decr_natdecr_nat44,2338 +external sub_natsub_nat45,2402 +external mult_digit_natmult_digit_nat46,2502 +external mult_natmult_nat47,2630 +external square_natsquare_nat48,2747 +external shift_left_natshift_left_nat49,2849 +external div_digit_natdiv_digit_nat50,2964 +external div_natdiv_nat51,3097 +external shift_right_natshift_right_nat52,3191 +external compare_digits_natcompare_digits_nat53,3309 +external compare_natcompare_nat54,3393 +val eq_nateq_nat55,3498 +val le_natle_nat56,3558 +val lt_natlt_nat57,3618 +val ge_natge_nat58,3678 +val gt_natgt_nat59,3738 +external land_digit_natland_digit_nat60,3798 +external lor_digit_natlor_digit_nat61,3875 +external lxor_digit_natlxor_digit_nat62,3950 +val gcd_natgcd_nat63,4027 +val sqrt_natsqrt_nat64,4087 +val string_of_natstring_of_nat65,4127 +val nat_of_stringnat_of_string66,4161 +val sys_nat_of_stringsys_nat_of_string67,4195 +val float_of_natfloat_of_nat68,4254 +val make_power_basemake_power_base69,4286 +val power_base_intpower_base_int70,4333 +val length_of_digitlength_of_digit71,4372 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/nativeint.mli,992 +Nativeint1,0 +val zerozero33,1687 +val oneone36,1737 +val minus_oneminus_one39,1786 +external negneg42,1842 +external addadd45,1923 +external subsub48,2011 +external mulmul51,2102 +external divdiv54,2196 +external remrem59,2463 +val succsucc66,2861 +val predpred70,2972 +val absabs74,3085 +val sizesize77,3169 +val max_intmax_int81,3311 +val min_intmin_int86,3468 +external logandlogand91,3619 +external logorlogor94,3721 +external logxorlogxor97,3820 +val lognotlognot100,3931 +external shift_leftshift_left103,4000 +external shift_rightshift_right109,4283 +external shift_right_logicalshift_right_logical115,4590 +external of_intof_int124,4918 +external to_intto_int128,5065 +external of_floatof_float133,5267 +external to_floatto_float140,5612 +external of_int32of_int32143,5748 +external to_int32to_int32147,5891 +external of_stringof_string154,6193 +val to_stringto_string163,6664 +tt166,6770 +val comparecompare169,6839 +external formatformat179,7177 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/num.mli,1705 +Num1,0 +type numnum27,1198 + IntInt28,1210 + | Big_intBig_int29,1225 + | RatioRatio30,1248 +val ( +/+/36,1304 +val add_numadd_num39,1366 +val minus_numminus_num42,1415 +val ( -/-/45,1466 +val sub_numsub_num48,1528 +val ( */*/51,1580 +val mult_nummult_num54,1643 +val square_numsquare_num57,1699 +val ( ////60,1744 +val div_numdiv_num63,1806 +val quo_numquo_num66,1855 +val mod_nummod_num69,1925 +val ( **/**/72,1996 +val power_numpower_num75,2062 +val abs_numabs_num78,2119 +val succ_numsucc_num81,2168 +val pred_numpred_num84,2220 +val incr_numincr_num87,2272 +val decr_numdecr_num90,2372 +val is_integer_numis_integer_num93,2472 +val integer_numinteger_num98,2618 +val floor_numfloor_num102,2749 +val round_numround_num105,2851 +val ceiling_numceiling_num109,2973 +val sign_numsign_num113,3080 +val ( =/=/118,3217 +val ( </</119,3249 +val ( >/>/120,3281 +val ( <=/<=/121,3313 +val ( >=/>=/122,3346 +val ( <>/<>/123,3379 +val eq_numeq_num124,3412 +val lt_numlt_num125,3444 +val le_numle_num126,3476 +val gt_numgt_num127,3508 +val ge_numge_num128,3540 +val compare_numcompare_num130,3573 +val max_nummax_num134,3727 +val min_nummin_num137,3808 +val string_of_numstring_of_num143,3925 +val approx_num_fixapprox_num_fix146,4024 +val approx_num_expapprox_num_exp149,4100 +val num_of_stringnum_of_string157,4526 +val int_of_numint_of_num162,4644 +val num_of_intnum_of_int163,4672 +val nat_of_numnat_of_num164,4700 +val num_of_natnum_of_nat165,4728 +val num_of_big_intnum_of_big_int166,4756 +val big_int_of_numbig_int_of_num167,4792 +val ratio_of_numratio_of_num168,4828 +val num_of_rationum_of_ratio169,4860 +val float_of_numfloat_of_num170,4892 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/obj.mli,970 +Obj1,0 +tt21,1037 +external reprrepr23,1045 +external objobj24,1083 +external magicmagic25,1120 +external is_blockis_block26,1160 +external is_intis_int27,1212 +external tagtag28,1256 +external set_tagset_tag29,1297 +external sizesize30,1354 +external truncatetruncate31,1393 +external fieldfield32,1452 +external set_fieldset_field33,1498 +external new_blocknew_block34,1560 +external dupdup35,1616 +val lazy_taglazy_tag37,1656 +val closure_tagclosure_tag38,1675 +val object_tagobject_tag39,1697 +val infix_taginfix_tag40,1718 +val forward_tagforward_tag41,1738 +val no_scan_tagno_scan_tag42,1760 +val abstract_tagabstract_tag43,1782 +val string_tagstring_tag44,1805 +val double_tagdouble_tag45,1826 +val double_array_tagdouble_array_tag46,1847 +val custom_tagcustom_tag47,1874 +val final_tagfinal_tag48,1895 +val int_tagint_tag50,1934 +val out_of_heap_tagout_of_heap_tag51,1952 +val marshalmarshal56,2067 +val unmarshalunmarshal57,2093 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/oo.mli,138 +Oo1,0 +val copycopy18,980 +external idid22,1141 +val new_methodnew_method28,1327 +val public_method_labelpublic_method_label29,1373 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/outcometree.mli,2513 +Outcometree1,0 +type out_identout_ident24,1229 + | Oide_applyOide_apply25,1246 + | Oide_dotOide_dot26,1286 + | Oide_identOide_ident27,1321 +type out_valueout_value29,1347 + | Oval_arrayOval_array30,1364 + | Oval_charOval_char31,1397 + | Oval_constrOval_constr32,1419 + | Oval_ellipsisOval_ellipsis33,1465 + | Oval_floatOval_float34,1483 + | Oval_intOval_int35,1507 + | Oval_int32Oval_int3236,1527 + | Oval_int64Oval_int6437,1551 + | Oval_nativeintOval_nativeint38,1575 + | Oval_listOval_list39,1607 + | Oval_printerOval_printer40,1639 + | Oval_recordOval_record41,1686 + | Oval_stringOval_string42,1734 + | Oval_stuffOval_stuff43,1760 + | Oval_tupleOval_tuple44,1785 + | Oval_variantOval_variant45,1818 +type out_typeout_type47,1865 + | Otyp_abstractOtyp_abstract48,1881 + | Otyp_aliasOtyp_alias49,1899 + | Otyp_arrowOtyp_arrow50,1935 + | Otyp_classOtyp_class51,1982 + | Otyp_constrOtyp_constr52,2033 + | Otyp_manifestOtyp_manifest53,2078 + | Otyp_objectOtyp_object54,2119 + | Otyp_recordOtyp_record55,2177 + | Otyp_stuffOtyp_stuff56,2228 + | Otyp_sumOtyp_sum57,2253 + | Otyp_tupleOtyp_tuple58,2299 + | Otyp_varOtyp_var59,2331 + | Otyp_variantOtyp_variant60,2361 + | Otyp_polyOtyp_poly62,2436 +and out_variantout_variant63,2476 + | Ovar_fieldsOvar_fields64,2494 + | Ovar_nameOvar_name65,2550 +type out_class_typeout_class_type67,2594 + | Octy_constrOcty_constr68,2616 + | Octy_funOcty_fun69,2661 + | Octy_signatureOcty_signature70,2712 +and out_class_sig_itemout_class_sig_item71,2776 + | Ocsg_constraintOcsg_constraint72,2801 + | Ocsg_methodOcsg_method73,2844 + | Ocsg_valueOcsg_value74,2895 +type out_module_typeout_module_type76,2946 + | Omty_abstractOmty_abstract77,2969 + | Omty_functorOmty_functor78,2987 + | Omty_identOmty_ident79,3050 + | Omty_signatureOmty_signature80,3078 +and out_sig_itemout_sig_item81,3118 + | Osig_classOsig_class82,3137 + | Osig_class_typeOsig_class_type85,3249 + | Osig_exceptionOsig_exception88,3366 + | Osig_modtypeOsig_modtype89,3411 + | Osig_moduleOsig_module90,3456 + | Osig_typeOsig_type91,3517 + | Osig_valueOsig_value92,3565 +and out_type_declout_type_decl93,3615 +and out_rec_statusout_rec_status96,3742 + | Orec_notOrec_not97,3763 + | Orec_firstOrec_first98,3776 + | Orec_nextOrec_next99,3791 +type out_phraseout_phrase101,3806 + | Ophr_evalOphr_eval102,3824 + | Ophr_signatureOphr_signature103,3862 + | Ophr_exceptionOphr_exception104,3923 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/parsing.mli,1109 +Parsing1,0 +val symbol_startsymbol_start18,1021 +val symbol_endsymbol_end26,1424 +val rhs_startrhs_start29,1490 +val rhs_endrhs_end35,1786 +val symbol_start_possymbol_start_pos38,1845 +val symbol_end_possymbol_end_pos41,1972 +val rhs_start_posrhs_start_pos44,2093 +val rhs_end_posrhs_end_pos47,2211 +val clear_parserclear_parser50,2325 +exception Parse_errorParse_error57,2634 +type parser_envparser_env70,2957 +type parse_tablesparse_tables72,2974 + { actionsactions73,2994 + transl_consttransl_const74,3037 + transl_blocktransl_block75,3067 + lhslhs76,3097 + lenlen77,3115 + defreddefred78,3133 + dgotodgoto79,3154 + sindexsindex80,3174 + rindexrindex81,3195 + gindexgindex82,3216 + tablesizetablesize83,3237 + tabletable84,3258 + checkcheck85,3278 + error_functionerror_function86,3298 + names_constnames_const87,3335 + names_blocknames_block88,3361 +exception YYexitYYexit90,3389 +val yyparseyyparse92,3416 +val peek_valpeek_val94,3500 +val is_current_lookaheadis_current_lookahead95,3539 +val parse_errorparse_error96,3577 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/pervasives.mli,6147 +Pervasives1,0 +external raiseraise29,1390 +val invalid_arginvalid_arg32,1468 +val failwithfailwith35,1565 +exception ExitExit38,1650 +external ( ==46,1804 +external ( <><>54,2238 +external ( <<57,2326 +external ( >>60,2406 +external ( <=<=63,2489 +external ( >=>=66,2571 +external comparecompare76,3079 +val minmin95,4090 +val maxmax98,4164 +external ( ====101,4238 +external ( !=!=110,4703 +external notnot117,4822 +external ( &&&&120,4893 +external ( &&125,5118 +external ( ||||128,5232 +external ( oror133,5454 +external ( ~-~-143,5756 +external succsucc146,5863 +external predpred149,5930 +external ( ++152,5997 +external ( --155,6070 +external ( **158,6146 +external ( //161,6225 +external ( modmod169,6614 +val absabs178,7000 +val max_intmax_int182,7136 +val min_intmin_int185,7198 +external ( landland193,7294 +external ( lorlor196,7373 +external ( lxorlxor199,7449 +val lnotlnot202,7537 +external ( lsllsl205,7593 +external ( lsrlsr211,7837 +external ( asrasr217,8082 +external ( ~-.~-.237,8955 +external ( +.+.240,9071 +external ( -.-.243,9159 +external ( *.*.246,9250 +external ( /./.249,9344 +external ( ****252,9433 +external sqrtsqrt255,9533 +external expexp258,9619 +external loglog261,9703 +external log10log10264,9793 +external coscos267,9889 +external sinsin270,9985 +external tantan273,10081 +external acosacos276,10177 +external asinasin279,10276 +external atanatan282,10375 +external atan2atan2285,10474 +external coshcosh288,10595 +external sinhsinh291,10693 +external tanhtanh294,10791 +external ceilceil297,10911 +external floorfloor300,11010 +external abs_floatabs_float307,11285 +external mod_floatmod_float310,11386 +external frexpfrexp315,11655 +external ldexpldexp322,11974 +external modfmodf325,12077 +external floatfloat329,12217 +external float_of_intfloat_of_int332,12307 +external truncatetruncate335,12406 +external int_of_floatint_of_float338,12499 +val infinityinfinity343,12727 +val neg_infinityneg_infinity346,12775 +val nannan349,12827 +val max_floatmax_float357,13221 +val min_floatmin_float360,13302 +val epsilon_floatepsilon_float363,13405 +type fpclassfpclass366,13500 + FP_normalFP_normal367,13515 + | FP_subnormalFP_subnormal368,13579 + | FP_zeroFP_zero369,13658 + | FP_infiniteFP_infinite370,13711 + | FP_nanFP_nan371,13782 +external classify_floatclassify_float375,13975 +val ( ^^385,14250 +external int_of_charint_of_char394,14415 +val char_of_intchar_of_int397,14511 +external ignoreignore405,14716 +val string_of_boolstring_of_bool416,15094 +val bool_of_stringbool_of_string419,15185 +val string_of_intstring_of_int424,15360 +external int_of_stringint_of_string427,15462 +val string_of_floatstring_of_float436,15955 +external float_of_stringfloat_of_string439,16062 +external fstfst447,16305 +external sndsnd450,16392 +val ( @@459,16566 +type in_channelin_channel465,16662 +type out_channelout_channel468,16713 +val stdinstdin471,16766 +val stdoutstdout474,16833 +val stderrstderr477,16903 +val print_charprint_char483,17027 +val print_stringprint_string486,17103 +val print_intprint_int489,17180 +val print_floatprint_float492,17266 +val print_endlineprint_endline495,17369 +val print_newlineprint_newline499,17510 +val prerr_charprerr_char507,17742 +val prerr_stringprerr_string510,17817 +val prerr_intprerr_int513,17893 +val prerr_floatprerr_float516,17978 +val prerr_endlineprerr_endline519,18080 +val prerr_newlineprerr_newline523,18218 +val read_lineread_line530,18380 +val read_intread_int535,18615 +val read_floatread_float540,18842 +type open_flagopen_flag549,19134 + Open_rdonlyOpen_rdonly550,19151 + | Open_wronlyOpen_wronly551,19197 + | Open_appendOpen_append552,19243 + | Open_creatOpen_creat553,19320 + | Open_truncOpen_trunc554,19386 + | Open_exclOpen_excl555,19451 + | Open_binaryOpen_binary556,19527 + | Open_textOpen_text557,19592 + | Open_nonblockOpen_nonblock558,19665 +val open_outopen_out562,19806 +val open_out_binopen_out_bin569,20139 +val open_out_genopen_out_gen575,20449 +val flushflush583,20860 +val flush_allflush_all589,21121 +val output_charoutput_char592,21205 +val output_stringoutput_string595,21308 +val outputoutput598,21412 +val output_byteoutput_byte604,21711 +val output_binary_intoutput_binary_int609,21903 +val output_valueoutput_value617,22283 +val seek_outseek_out625,22725 +val pos_outpos_out631,22995 +val out_channel_lengthout_channel_length636,23196 +val close_outclose_out641,23443 +val close_out_noerrclose_out_noerr649,23867 +val set_binary_mode_outset_binary_mode_out652,23961 +val open_inopen_in665,24535 +val open_in_binopen_in_bin670,24755 +val open_in_genopen_in_gen676,25060 +val input_charinput_char683,25400 +val input_lineinput_line687,25557 +val inputinput694,25867 +val really_inputreally_input711,26760 +val input_byteinput_byte719,27177 +val input_binary_intinput_binary_int724,27368 +val input_valueinput_value730,27633 +val seek_inseek_in737,27982 +val pos_inpos_in742,28207 +val in_channel_lengthin_channel_length745,28305 +val close_inclose_in753,28708 +val close_in_noerrclose_in_noerr760,29046 +val set_binary_mode_inset_binary_mode_in763,29137 +module LargeFileLargeFile775,29707 + val seek_outseek_out777,29732 + val pos_outpos_out778,29780 + val out_channel_lengthout_channel_length779,29819 + val seek_inseek_in780,29869 + val pos_inpos_in781,29915 + val in_channel_lengthin_channel_length782,29952 +type 'a refref793,30391 +type 'a ref = { mutable contentscontents793,30391 +external refref797,30526 +external ( !!800,30632 +external ( :=:=804,30774 +external incrincr808,30934 +external decrdecr812,31082 +type ('a, 'b, 'c, 'd) format4format4821,31357 +type ('a, 'b, 'c) formatformat823,31424 +val string_of_formatstring_of_format831,31810 +external format_of_stringformat_of_string834,31924 +val ( ^^^^840,32130 +val exitexit851,32438 +val at_exitat_exit860,32878 +val valid_float_lexemvalid_float_lexem873,33367 +val unsafe_really_inputunsafe_really_input875,33409 +val do_at_exitdo_at_exit877,33479 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/printexc.mli,93 +Printexc1,0 +val to_stringto_string18,999 +val printprint22,1117 +val catchcatch30,1475 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/printf.mli,1222 +Printf1,0 +val fprintffprintf18,986 +val printfprintf110,5821 +val eprintfeprintf113,5930 +val ifprintfifprintf116,6040 +val sprintfsprintf120,6217 +val bprintfbprintf124,6414 +val kfprintfkfprintf130,6701 +val ksprintfksprintf135,6949 +val kbprintfkbprintf139,7127 +val kprintfkprintf144,7361 +module CamlinternalPrCamlinternalPr151,7536 + module SformatSformat153,7565 + type indexindex154,7588 + val index_of_intindex_of_int156,7606 + external int_of_indexint_of_index157,7644 + external unsafe_index_of_intunsafe_index_of_int158,7701 + val succ_indexsucc_index160,7766 + val subsub162,7805 + val to_stringto_string163,7880 + external lengthlength164,7945 + external getget166,8034 + external unsafe_to_stringunsafe_to_string168,8130 + external unsafe_getunsafe_get170,8227 + module TformatTformat175,8342 + type acac177,8366 + mutable ac_rglrac_rglr178,8382 + mutable ac_skipac_skip179,8411 + mutable ac_rdrsac_rdrs180,8440 + val ac_of_formatac_of_format183,8478 + val sub_formatsub_format185,8543 + val summarize_format_typesummarize_format_type190,8749 + val scan_formatscan_format192,8825 + val kaprkapr202,9211 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/queue.mli,381 +Queue1,0 +tt21,1057 +exception EmptyEmpty25,1129 +val createcreate29,1227 +val addadd32,1298 +val pushpush35,1395 +val taketake38,1464 +val poppop42,1599 +val peekpeek45,1659 +val toptop49,1818 +val clearclear52,1878 +val copycopy55,1946 +val is_emptyis_empty58,2012 +val lengthlength61,2110 +val iteriter64,2185 +val foldfold69,2387 +val transfertransfer74,2579 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/random.mli,646 +Random1,0 +val initinit20,1029 +val full_initfull_init24,1183 +val self_initself_init27,1277 +val bitsbits31,1408 +val intint34,1487 +val int32int3239,1671 +val nativeintnativeint43,1843 +val int64int6447,2031 +val floatfloat51,2203 +val boolbool57,2446 +module StateState70,2846 + tt71,2865 + val makemake74,2909 + val make_self_initmake_self_init77,3005 + val copycopy81,3133 + val bitsbits84,3197 + val intint85,3219 + val int32int3286,3247 + val nativeintnativeint87,3285 + val int64int6488,3335 + val floatfloat89,3373 + val boolbool90,3407 +val get_stateget_state97,3591 +val set_stateset_state100,3702 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/ratio.mli,2632 +Ratio1,0 +type ratioratio26,1298 +val null_denominatornull_denominator28,1310 +val numerator_rationumerator_ratio29,1347 +val denominator_ratiodenominator_ratio30,1386 +val sign_ratiosign_ratio31,1427 +val normalize_rationormalize_ratio32,1457 +val cautious_normalize_ratiocautious_normalize_ratio33,1494 +val cautious_normalize_ratio_when_printingcautious_normalize_ratio_when_printing34,1540 +val create_ratiocreate_ratio35,1600 +val create_normalized_ratiocreate_normalized_ratio36,1647 +val is_normalized_ratiois_normalized_ratio37,1705 +val report_sign_ratioreport_sign_ratio38,1745 +val abs_ratioabs_ratio39,1797 +val is_integer_ratiois_integer_ratio40,1828 +val add_ratioadd_ratio41,1865 +val minus_ratiominus_ratio42,1905 +val add_int_ratioadd_int_ratio43,1938 +val add_big_int_ratioadd_big_int_ratio44,1980 +val sub_ratiosub_ratio45,2030 +val mult_ratiomult_ratio46,2070 +val mult_int_ratiomult_int_ratio47,2111 +val mult_big_int_ratiomult_big_int_ratio48,2154 +val square_ratiosquare_ratio49,2205 +val inverse_ratioinverse_ratio50,2239 +val div_ratiodiv_ratio51,2274 +val integer_ratiointeger_ratio52,2314 +val floor_ratiofloor_ratio53,2351 +val round_ratioround_ratio54,2386 +val ceiling_ratioceiling_ratio55,2421 +val eq_ratioeq_ratio56,2458 +val compare_ratiocompare_ratio57,2496 +val lt_ratiolt_ratio58,2538 +val le_ratiole_ratio59,2576 +val gt_ratiogt_ratio60,2614 +val ge_ratioge_ratio61,2652 +val max_ratiomax_ratio62,2690 +val min_ratiomin_ratio63,2730 +val eq_big_int_ratioeq_big_int_ratio64,2770 +val compare_big_int_ratiocompare_big_int_ratio65,2818 +val lt_big_int_ratiolt_big_int_ratio66,2870 +val le_big_int_ratiole_big_int_ratio67,2918 +val gt_big_int_ratiogt_big_int_ratio68,2966 +val ge_big_int_ratioge_big_int_ratio69,3014 +val int_of_ratioint_of_ratio70,3062 +val ratio_of_intratio_of_int71,3094 +val ratio_of_natratio_of_nat72,3126 +val nat_of_rationat_of_ratio73,3158 +val ratio_of_big_intratio_of_big_int74,3190 +val big_int_of_ratiobig_int_of_ratio75,3230 +val div_int_ratiodiv_int_ratio76,3270 +val div_ratio_intdiv_ratio_int77,3312 +val div_big_int_ratiodiv_big_int_ratio78,3354 +val div_ratio_big_intdiv_ratio_big_int79,3404 +val approx_ratio_fixapprox_ratio_fix80,3454 +val approx_ratio_expapprox_ratio_exp81,3500 +val float_of_rational_stringfloat_of_rational_string82,3546 +val string_of_ratiostring_of_ratio83,3593 +val ratio_of_stringratio_of_string84,3631 +val float_of_ratiofloat_of_ratio85,3669 +val power_ratio_positive_intpower_ratio_positive_int86,3705 +val power_ratio_positive_big_intpower_ratio_positive_big_int87,3758 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/scanf.mli,780 +Scanf1,0 +module ScanningScanning54,3054 +type scanbufscanbuf56,3077 +val stdibstdib67,3626 +val from_stringfrom_string76,4039 +val from_filefrom_file82,4311 +val from_file_binfrom_file_bin90,4740 +val from_functionfrom_function93,4828 +val from_channelfrom_channel102,5205 +val end_of_inputend_of_input107,5424 +val beginning_of_inputbeginning_of_input111,5563 +val name_of_inputname_of_input115,5720 +exception Scan_failureScan_failure121,5883 +type ('a, 'b, 'c, 'd) scannerscanner125,6041 +val bscanfbscanf147,7181 +val fscanffscanf301,15480 +val sscanfsscanf320,16494 +val scanfscanf323,16610 +val kscanfkscanf327,16786 +val bscanf_formatbscanf_format336,17208 +val sscanf_formatsscanf_format345,17628 +val format_from_stringformat_from_string350,17822 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/set.mli,919 +Set1,0 +module type OrderedTypeOrderedType26,1342 + tt28,1374 + val comparecompare30,1428 +module type SS41,1978 + type eltelt43,2000 + tt46,2055 + val emptyempty49,2096 + val is_emptyis_empty52,2140 + val memmem55,2216 + val addadd58,2310 + val singletonsingleton62,2476 + val removeremove65,2579 + val unionunion69,2749 + val interinter72,2799 + val diffdiff76,2883 + val comparecompare78,2910 + val equalequal82,3050 + val subsetsubset86,3194 + val iteriter90,3315 + val foldfold95,3558 + val for_allfor_all99,3745 + val existsexists103,3883 + val filterfilter107,4029 + val partitionpartition111,4168 + val cardinalcardinal117,4452 + val elementselements120,4531 + val min_eltmin_elt126,4788 + val max_eltmax_elt131,4973 + val choosechoose135,5094 + val splitsplit140,5314 +module MakeMake151,5788 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/sort.mli,80 +Sort1,0 +val listlist24,1199 +val arrayarray29,1436 +val mergemerge36,1710 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/stack.mli,265 +Stack1,0 +tt21,1057 +exception EmptyEmpty24,1128 +val createcreate28,1224 +val pushpush31,1295 +val poppop34,1390 +val toptop38,1525 +val clearclear42,1648 +val copycopy45,1716 +val is_emptyis_empty48,1782 +val lengthlength51,1880 +val iteriter54,1955 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/stdLabels.mli,3244 +StdLabels1,0 +module ArrayArray25,1228 + external lengthlength27,1249 + external getget28,1305 + external setset29,1366 + external makemake30,1435 + external createcreate31,1496 + val initinit32,1559 + val make_matrixmake_matrix33,1607 + val create_matrixcreate_matrix34,1674 + val appendappend35,1743 + val concatconcat36,1793 + val subsub37,1836 + val copycopy38,1893 + val fillfill39,1929 + val blitblit40,1989 + val to_listto_list43,2096 + val of_listof_list44,2134 + val iteriter45,2172 + val mapmap46,2222 + val iteriiteri47,2273 + val mapimapi48,2331 + val fold_leftfold_left49,2390 + val fold_rightfold_right50,2458 + val sortsort51,2527 + val stable_sortstable_sort52,2584 + val fast_sortfast_sort53,2648 + external unsafe_getunsafe_get54,2710 + external unsafe_setunsafe_set55,2780 +module ListList58,2865 + val lengthlength60,2885 + val hdhd61,2917 + val tltl62,2944 + val nthnth63,2976 + val revrev64,3011 + val appendappend65,3044 + val rev_appendrev_append66,3091 + val concatconcat67,3142 + val flattenflatten68,3183 + val iteriter69,3225 + val mapmap70,3274 + val rev_maprev_map71,3323 + val fold_leftfold_left72,3376 + val fold_rightfold_right73,3443 + val iter2iter274,3511 + val map2map275,3578 + val rev_map2rev_map276,3645 + val fold_left2fold_left277,3716 + val fold_right2fold_right279,3807 + val for_allfor_all81,3899 + val existsexists82,3951 + val for_all2for_all283,4002 + val exists2exists284,4072 + val memmem85,4141 + val memqmemq86,4181 + val findfind87,4222 + val filterfilter88,4269 + val find_allfind_all89,4323 + val partitionpartition90,4379 + val assocassoc91,4446 + val assqassq92,4489 + val mem_assocmem_assoc93,4531 + val mem_assqmem_assq94,4584 + val remove_assocremove_assoc95,4636 + val remove_assqremove_assq96,4698 + val splitsplit97,4759 + val combinecombine98,4811 + val sortsort99,4866 + val stable_sortstable_sort100,4925 + val fast_sortfast_sort101,4991 + val mergemerge102,5055 +module StringString105,5133 + external lengthlength107,5155 + external getget108,5210 + external setset109,5272 + external createcreate110,5342 + val makemake111,5401 + val copycopy112,5438 + val subsub113,5470 + val fillfill114,5523 + val blitblit115,5583 + val concatconcat118,5686 + val iteriter119,5739 + val escapedescaped120,5789 + val indexindex121,5824 + val rindexrindex122,5862 + val index_fromindex_from123,5901 + val rindex_fromrindex_from124,5951 + val containscontains125,6002 + val contains_fromcontains_from126,6044 + val rcontains_fromrcontains_from127,6098 + val uppercaseuppercase128,6153 + val lowercaselowercase129,6190 + val capitalizecapitalize130,6227 + val uncapitalizeuncapitalize131,6265 + tt132,6305 + val comparecompare133,6325 + external unsafe_getunsafe_get134,6356 + external unsafe_setunsafe_set135,6427 + external unsafe_blitunsafe_blit136,6506 + external unsafe_fillunsafe_fill139,6652 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/str.mli,1362 +Str1,0 +type regexpregexp22,1045 +val regexpregexp26,1108 +val regexp_case_foldregexp_case_fold54,2554 +val quotequote59,2770 +val regexp_stringregexp_string63,2891 +val regexp_string_case_foldregexp_string_case_fold67,3032 +val string_matchstring_match75,3254 +val search_forwardsearch_forward80,3505 +val search_backwardsearch_backward87,3878 +val string_partial_matchstring_partial_match95,4279 +val matched_stringmatched_string100,4516 +val match_beginningmatch_beginning107,4853 +val match_endmatch_end112,5072 +val matched_groupmatched_group117,5296 +val group_beginninggroup_beginning131,6049 +val group_endgroup_end140,6418 +val global_replaceglobal_replace153,6820 +val replace_firstreplace_first161,7288 +val global_substituteglobal_substitute165,7469 +val substitute_firstsubstitute_first172,7860 +val replace_matchedreplace_matched176,8059 +val splitsplit187,8436 +val bounded_splitbounded_split194,8807 +val split_delimsplit_delim198,8981 +val bounded_split_delimbounded_split_delim206,9347 +type split_resultsplit_result211,9595 + TextText212,9616 + | DelimDelim213,9635 +val full_splitfull_split215,9656 +val bounded_full_splitbounded_full_split223,10022 +val string_beforestring_before233,10345 +val string_afterstring_after238,10547 +val first_charsfirst_chars243,10738 +val last_charslast_chars247,10909 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/stream.mli,580 +Stream1,0 +tt18,982 +exception FailureFailure21,1049 +exception ErrorError25,1166 +val fromfrom37,1541 +val of_listof_list44,1863 +val of_stringof_string48,1974 +val of_channelof_channel51,2076 +val iteriter57,2216 +val nextnext64,2409 +val emptyempty68,2557 +val peekpeek74,2685 +val junkjunk78,2811 +val countcount82,2917 +val npeeknpeek86,3051 +val iappiapp95,3305 +val iconsicons96,3337 +val isingising97,3368 +val lapplapp99,3392 +val lconslcons100,3434 +val lsinglsing101,3475 +val semptysempty103,3509 +val slazyslazy104,3527 +val dumpdump106,3563 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/string.mli,890 +String1,0 +external lengthlength18,980 +external getget21,1101 +external setset31,1511 +external createcreate38,1857 +val makemake44,2102 +val copycopy49,2306 +val subsub52,2377 +val fillfill60,2752 +val blitblit67,3036 +val concatconcat77,3573 +val iteriter81,3742 +val escapedescaped86,3954 +val indexindex93,4244 +val rindexrindex98,4439 +val index_fromindex_from103,4637 +val rindex_fromrindex_from108,4856 +val containscontains114,5103 +val contains_fromcontains_from118,5224 +val rcontains_fromrcontains_from124,5485 +val uppercaseuppercase130,5757 +val lowercaselowercase135,5957 +val capitalizecapitalize140,6157 +val uncapitalizeuncapitalize143,6273 +tt146,6391 +val comparecompare149,6449 +external unsafe_getunsafe_get157,6743 +external unsafe_setunsafe_set158,6810 +external unsafe_blitunsafe_blit159,6885 +external unsafe_fillunsafe_fill161,6987 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/stringLabels.mli,896 +StringLabels1,0 +external lengthlength18,987 +external getget21,1108 +external setset31,1518 +external createcreate38,1864 +val makemake44,2109 +val copycopy49,2313 +val subsub52,2384 +val fillfill60,2773 +val blitblit67,3065 +val concatconcat78,3632 +val iteriter82,3805 +val escapedescaped87,4019 +val indexindex94,4309 +val rindexrindex99,4504 +val index_fromindex_from104,4702 +val rindex_fromrindex_from109,4927 +val containscontains115,5180 +val contains_fromcontains_from119,5301 +val rcontains_fromrcontains_from125,5562 +val uppercaseuppercase131,5834 +val lowercaselowercase136,6034 +val capitalizecapitalize141,6234 +val uncapitalizeuncapitalize144,6350 +tt147,6468 +val comparecompare150,6526 +external unsafe_getunsafe_get158,6820 +external unsafe_setunsafe_set159,6887 +external unsafe_blitunsafe_blit160,6962 +external unsafe_fillunsafe_fill163,7096 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/sys.mli,1543 +Sys1,0 +val argvargv18,975 +val executable_nameexecutable_name24,1207 +external file_existsfile_exists27,1310 +external is_directoryis_directory30,1424 +external removeremove35,1664 +external renamerename38,1774 +external getenvgetenv44,2073 +external commandcommand48,2255 +external timetime51,2382 +external chdirchdir55,2534 +external getcwdgetcwd58,2646 +external readdirreaddir61,2760 +val interactiveinteractive70,3272 +val os_typeos_type75,3470 +val word_sizeword_size81,3756 +val max_string_lengthmax_string_length85,3876 +val max_array_lengthmax_array_length88,3940 +type signal_behaviorsignal_behavior97,4170 + Signal_defaultSignal_default98,4193 + | Signal_ignoreSignal_ignore99,4212 + | Signal_handleSignal_handle100,4230 +external signalsignal108,4519 +val set_signalset_signal116,4906 +val sigabrtsigabrt122,5073 +val sigalrmsigalrm125,5120 +val sigfpesigfpe128,5154 +val sighupsighup131,5200 +val sigillsigill134,5256 +val sigintsigint137,5310 +val sigkillsigkill140,5366 +val sigpipesigpipe143,5424 +val sigquitsigquit146,5462 +val sigsegvsigsegv149,5512 +val sigtermsigterm152,5563 +val sigusr1sigusr1155,5601 +val sigusr2sigusr2158,5656 +val sigchldsigchld161,5711 +val sigcontsigcont164,5762 +val sigstopsigstop167,5797 +val sigtstpsigtstp170,5828 +val sigttinsigttin173,5871 +val sigttousigttou176,5935 +val sigvtalrmsigvtalrm179,6000 +val sigprofsigprof182,6052 +exception BreakBreak186,6099 +val catch_breakcatch_break191,6198 +val ocaml_versionocaml_version199,6501 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/thread.mli,497 +Thread1,0 +tt18,1011 +val createcreate23,1098 +external selfself36,1770 +external idid39,1864 +val exitexit44,2094 +val killkill47,2180 +val delaydelay52,2296 +external joinjoin57,2467 +val wait_readwait_read61,2618 +val wait_writewait_write64,2691 +val wait_timed_readwait_timed_read67,2791 +val wait_timed_writewait_timed_write70,2884 +val selectselect82,3430 +val wait_pidwait_pid92,3854 +val yieldyield99,4180 +val sigmasksigmask115,4931 +val wait_signalwait_signal127,5439 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/threadUnix.mli,708 +ThreadUnix1,0 +val execvexecv26,1330 +val execveexecve27,1373 +val execvpexecvp28,1433 +val waitwait29,1477 +val waitpidwaitpid30,1522 +val systemsystem31,1592 +val readread35,1667 +val writewrite36,1725 +val timed_readtimed_read40,1823 +val timed_writetimed_write45,1947 +val selectselect55,2308 +val pipepipe62,2517 +val open_process_inopen_process_in63,2570 +val open_process_outopen_process_out64,2612 +val open_processopen_process65,2656 +val sleepsleep69,2727 +val socketsocket73,2772 +val acceptaccept75,2863 +val connectconnect76,2927 +val recvrecv77,2982 +val recvfromrecvfrom79,3073 +val sendsend81,3188 +val sendtosendto83,3279 +val open_connectionopen_connection85,3391 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/unix.mli,16197 +Unix1,0 +type errorerror22,1016 + E2BIGE2BIG23,1029 + | EACCESEACCES24,1083 + | EAGAINEAGAIN25,1132 + | EBADFEBADF26,1207 + | EBUSYEBUSY27,1258 + | ECHILDECHILD28,1310 + | EDEADLKEDEADLK29,1358 + | EDOMEDOM30,1419 + | EEXISTEEXIST31,1488 + | EFAULTEFAULT32,1531 + | EFBIGEFBIG33,1574 + | EINTREINTR34,1620 + | EINVALEINVAL35,1682 + | EIOEIO36,1730 + | EISDIREISDIR37,1780 + | EMFILEEMFILE38,1826 + | EMLINKEMLINK39,1892 + | ENAMETOOLONGENAMETOOLONG40,1938 + | ENFILEENFILE41,1987 + | ENODEVENODEV42,2052 + | ENOENTENOENT43,2098 + | ENOEXECENOEXEC44,2155 + | ENOLCKENOLCK45,2209 + | ENOMEMENOMEM46,2259 + | ENOSPCENOSPC47,2308 + | ENOSYSENOSYS48,2363 + | ENOTDIRENOTDIR49,2417 + | ENOTEMPTYENOTEMPTY50,2464 + | ENOTTYENOTTY51,2515 + | ENXIOENXIO52,2582 + | EPERMEPERM53,2639 + | EPIPEEPIPE54,2694 + | ERANGEERANGE55,2737 + | EROFSEROFS56,2785 + | ESPIPEESPIPE57,2838 + | ESRCHESRCH58,2897 + | EXDEVEXDEV59,2944 + | EWOULDBLOCKEWOULDBLOCK60,2988 + | EINPROGRESSEINPROGRESS61,3041 + | EALREADYEALREADY62,3098 + | ENOTSOCKENOTSOCK63,3159 + | EDESTADDRREQEDESTADDRREQ64,3221 + | EMSGSIZEEMSGSIZE65,3281 + | EPROTOTYPEEPROTOTYPE66,3329 + | ENOPROTOOPTENOPROTOOPT67,3391 + | EPROTONOSUPPORTEPROTONOSUPPORT68,3445 + | ESOCKTNOSUPPORTESOCKTNOSUPPORT69,3499 + | EOPNOTSUPPEOPNOTSUPP70,3556 + | EPFNOSUPPORTEPFNOSUPPORT71,3621 + | EAFNOSUPPORTEAFNOSUPPORT72,3682 + | EADDRINUSEEADDRINUSE73,3761 + | EADDRNOTAVAILEADDRNOTAVAIL74,3815 + | ENETDOWNENETDOWN75,3877 + | ENETUNREACHENETUNREACH76,3924 + | ENETRESETENETRESET77,3978 + | ECONNABORTEDECONNABORTED78,4045 + | ECONNRESETECONNRESET79,4109 + | ENOBUFSENOBUFS80,4165 + | EISCONNEISCONN81,4222 + | ENOTCONNENOTCONN82,4281 + | ESHUTDOWNESHUTDOWN83,4336 + | ETOOMANYREFSETOOMANYREFS84,4400 + | ETIMEDOUTETIMEDOUT85,4465 + | ECONNREFUSEDECONNREFUSED86,4517 + | EHOSTDOWNEHOSTDOWN87,4567 + | EHOSTUNREACHEHOSTUNREACH88,4611 + | ELOOPELOOP89,4659 + | EOVERFLOWEOVERFLOW90,4724 + | EUNKNOWNERREUNKNOWNERR92,4796 +exception Unix_errorUnix_error100,5008 +val error_messageerror_message106,5325 +val handle_unix_errorhandle_unix_error109,5418 +val environmentenvironment118,5699 +val getenvgetenv122,5841 +val putenvputenv127,6047 +type process_statusprocess_status137,6312 + WEXITEDWEXITED138,6334 + | WSIGNALEDWSIGNALED141,6455 + | WSTOPPEDWSTOPPED144,6573 +type wait_flagwait_flag150,6737 + WNOHANGWNOHANG151,6754 + | WUNTRACEDWUNTRACED153,6872 +val execvexecv156,6980 +val execveexecve163,7312 +val execvpexecvp167,7485 +val execvpeexecvpe171,7610 +val forkfork175,7753 +val waitwait179,7909 +val waitpidwaitpid183,8049 +val systemsystem192,8510 +val getpidgetpid199,8841 +val getppidgetppid202,8905 +val nicenice205,8977 +type file_descrfile_descr214,9221 +val stdinstdin217,9284 +val stdoutstdout220,9350 +val stderrstderr223,9418 +type open_flagopen_flag226,9486 + O_RDONLYO_RDONLY227,9503 + | O_WRONLYO_WRONLY228,9559 + | O_RDWRO_RDWR229,9615 + | O_NONBLOCKO_NONBLOCK230,9683 + | O_APPENDO_APPEND231,9748 + | O_CREATO_CREAT232,9803 + | O_TRUNCO_TRUNC233,9864 + | O_EXCLO_EXCL234,9936 + | O_NOCTTYO_NOCTTY235,9992 + | O_DSYNCO_DSYNC236,10069 + | O_SYNCO_SYNC237,10172 + | O_RSYNCO_RSYNC238,10275 +type file_permfile_perm242,10409 +val openfileopenfile246,10547 +val closeclose251,10786 +val readread254,10850 +val writewrite259,11108 +val single_writesingle_write266,11476 +val in_channel_of_descrin_channel_of_descr275,11749 +val out_channel_of_descrout_channel_of_descr280,11973 +val descr_of_in_channeldescr_of_in_channel285,12199 +val descr_of_out_channeldescr_of_out_channel288,12315 +type seek_commandseek_command295,12471 + SEEK_SETSEEK_SET296,12491 + | SEEK_CURSEEK_CUR297,12569 + | SEEK_ENDSEEK_END298,12642 +val lseeklseek302,12760 +val truncatetruncate305,12868 +val ftruncateftruncate308,12957 +type file_kindfile_kind316,13112 + S_REGS_REG317,13129 + | S_DIRS_DIR318,13181 + | S_CHRS_CHR319,13230 + | S_BLKS_BLK320,13286 + | S_LNKS_LNK321,13338 + | S_FIFOS_FIFO322,13391 + | S_SOCKS_SOCK323,13441 +type statsstats325,13488 + { st_devst_dev326,13501 + st_inost_ino327,13554 + st_kindst_kind328,13606 + st_permst_perm329,13662 + st_nlinkst_nlink330,13715 + st_uidst_uid331,13770 + st_gidst_gid332,13830 + st_rdevst_rdev333,13898 + st_sizest_size334,13957 + st_atimest_atime335,14010 + st_mtimest_mtime336,14066 + st_ctimest_ctime337,14128 +val statstat341,14256 +val lstatlstat344,14334 +val fstatfstat348,14480 +val isattyisatty352,14597 +module LargeFileLargeFile358,14785 + val lseeklseek360,14810 + val truncatetruncate361,14871 + val ftruncateftruncate362,14914 + type statsstats363,14962 + { st_devst_dev364,14979 + st_inost_ino365,15036 + st_kindst_kind366,15092 + st_permst_perm367,15152 + st_nlinkst_nlink368,15209 + st_uidst_uid369,15268 + st_gidst_gid370,15332 + st_rdevst_rdev371,15404 + st_sizest_size372,15467 + st_atimest_atime373,15524 + st_mtimest_mtime374,15584 + st_ctimest_ctime375,15650 + val statstat377,15725 + val lstatlstat378,15756 + val fstatfstat379,15788 +val unlinkunlink395,16402 +val renamerename398,16461 +val linklink401,16572 +type access_permissionaccess_permission409,16744 + R_OKR_OK410,16769 + | W_OKW_OK411,16824 + | X_OKX_OK412,16880 + | F_OKF_OK413,16940 +val chmodchmod417,17035 +val fchmodfchmod420,17125 +val chownchown423,17220 +val fchownfchown426,17323 +val umaskumask429,17431 +val accessaccess433,17539 +val dupdup441,17749 +val dup2dup2445,17875 +val set_nonblockset_nonblock449,18005 +val clear_nonblockclear_nonblock457,18405 +val set_close_on_execset_close_on_exec461,18538 +val clear_close_on_execclear_close_on_exec467,18801 +val mkdirmkdir475,18971 +val rmdirrmdir478,19066 +val chdirchdir481,19128 +val getcwdgetcwd484,19201 +val chrootchroot487,19287 +type dir_handledir_handle490,19358 +val opendiropendir493,19431 +val readdirreaddir496,19507 +val rewinddirrewinddir500,19658 +val closedirclosedir503,19761 +val pipepipe511,19871 +val mkfifomkfifo516,20106 +val create_processcreate_process523,20263 +val create_process_envcreate_process_env538,21051 +val open_process_inopen_process_in546,21371 +val open_process_outopen_process_out553,21717 +val open_processopen_process561,22115 +val open_process_fullopen_process_full567,22456 +val close_process_inclose_process_in574,22803 +val close_process_outclose_process_out579,23000 +val close_processclose_process584,23200 +val close_process_fullclose_process_full589,23405 +val symlinksymlink599,23664 +val readlinkreadlink603,23801 +val selectselect610,23892 +type lock_commandlock_command627,24664 + F_ULOCKF_ULOCK628,24684 + | F_LOCKF_LOCK629,24725 + | F_TLOCKF_TLOCK630,24805 + | F_TESTF_TEST631,24883 + | F_RLOCKF_RLOCK632,24946 + | F_TRLOCKF_TRLOCK633,25026 +val lockflockf636,25140 +val killkill668,26617 +type sigprocmask_commandsigprocmask_command672,26729 + SIG_SETMASKSIG_SETMASK673,26756 + | SIG_BLOCKSIG_BLOCK674,26772 + | SIG_UNBLOCKSIG_UNBLOCK675,26786 +val sigprocmasksigprocmask677,26803 +val sigpendingsigpending687,27276 +val sigsuspendsigsuspend690,27380 +val pausepause695,27622 +type process_timesprocess_times702,27743 + { tms_utimetms_utime703,27764 + tms_stimetms_stime704,27821 + tms_cutimetms_cutime705,27880 + tms_cstimetms_cstime706,27948 +type tmtm710,28076 + { tm_sectm_sec711,28086 + tm_mintm_min712,28139 + tm_hourtm_hour713,28192 + tm_mdaytm_mday714,28243 + tm_montm_mon715,28301 + tm_yeartm_year716,28360 + tm_wdaytm_wday717,28411 + tm_ydaytm_yday718,28476 + tm_isdsttm_isdst719,28534 +val timetime724,28674 +val gettimeofdaygettimeofday728,28780 +val gmtimegmtime731,28885 +val localtimelocaltime735,29062 +val mktimemktime739,29210 +val alarmalarm749,29738 +val sleepsleep752,29832 +val timestimes755,29912 +val utimesutimes758,29997 +type interval_timerinterval_timer763,30210 + ITIMER_REALITIMER_REAL764,30232 + | ITIMER_VIRTUALITIMER_VIRTUAL766,30330 + | ITIMER_PROFITIMER_PROF768,30435 +type interval_timer_statusinterval_timer_status774,30676 + { it_intervalit_interval775,30705 + it_valueit_value776,30752 +val getitimergetitimer780,30883 +val setitimersetitimer783,31002 +val getuidgetuid798,31578 +val geteuidgeteuid801,31665 +val setuidsetuid804,31758 +val getgidgetgid807,31851 +val getegidgetegid810,31939 +val setgidsetgid813,32033 +val getgroupsgetgroups816,32128 +type passwd_entrypasswd_entry820,32248 + { pw_namepw_name821,32268 + pw_passwdpw_passwd822,32290 + pw_uidpw_uid823,32314 + pw_gidpw_gid824,32332 + pw_gecospw_gecos825,32350 + pw_dirpw_dir826,32373 + pw_shellpw_shell827,32394 +type group_entrygroup_entry831,32475 + { gr_namegr_name832,32494 + gr_passwdgr_passwd833,32516 + gr_gidgr_gid834,32540 + gr_memgr_mem835,32558 +val getlogingetlogin839,32643 +val getpwnamgetpwnam842,32738 +val getgrnamgetgrnam846,32856 +val getpwuidgetpwuid850,32972 +val getgrgidgetgrgid854,33090 +type inet_addrinet_addr862,33240 +val inet_addr_of_stringinet_addr_of_string865,33304 +val string_of_inet_addrstring_of_inet_addr873,33714 +val inet_addr_anyinet_addr_any878,33926 +val inet_addr_loopbackinet_addr_loopback882,34090 +val inet6_addr_anyinet6_addr_any885,34201 +val inet6_addr_loopbackinet6_addr_loopback889,34366 +type socket_domainsocket_domain896,34494 + PF_UNIXPF_UNIX897,34515 + | PF_INETPF_INET898,34566 + | PF_INET6PF_INET6899,34628 +type socket_typesocket_type902,34726 + SOCK_STREAMSOCK_STREAM903,34745 + | SOCK_DGRAMSOCK_DGRAM904,34798 + | SOCK_RAWSOCK_RAW905,34853 + | SOCK_SEQPACKETSOCK_SEQPACKET906,34903 +type sockaddrsockaddr910,35048 +type sockaddr = ADDR_UNIXADDR_UNIX910,35048 +type sockaddr = ADDR_UNIX of string | ADDR_INETADDR_INET910,35048 +val socketsocket917,35409 +val domain_of_sockaddrdomain_of_sockaddr922,35650 +val socketpairsocketpair925,35772 +val acceptaccept929,35916 +val bindbind934,36142 +val connectconnect937,36221 +val listenlisten940,36306 +type shutdown_commandshutdown_command944,36471 + SHUTDOWN_RECEIVESHUTDOWN_RECEIVE945,36495 + | SHUTDOWN_SENDSHUTDOWN_SEND946,36554 + | SHUTDOWN_ALLSHUTDOWN_ALL947,36611 +val shutdownshutdown951,36707 +val getsocknamegetsockname958,37052 +val getpeernamegetpeername961,37141 +type msg_flagmsg_flag964,37252 + MSG_OOBMSG_OOB965,37268 + | MSG_DONTROUTEMSG_DONTROUTE966,37280 + | MSG_PEEKMSG_PEEK967,37298 +val recvrecv971,37402 +val recvfromrecvfrom974,37518 +val sendsend978,37654 +val sendtosendto981,37767 +type socket_bool_optionsocket_bool_option990,37929 + SO_DEBUGSO_DEBUG991,37955 + | SO_BROADCASTSO_BROADCAST992,38010 + | SO_REUSEADDRSO_REUSEADDR993,38073 + | SO_KEEPALIVESO_KEEPALIVE994,38139 + | SO_DONTROUTESO_DONTROUTE995,38188 + | SO_OOBINLINESO_OOBINLINE996,38253 + | SO_ACCEPTCONNSO_ACCEPTCONN997,38310 +type socket_int_optionsocket_int_option1002,38550 + SO_SNDBUFSO_SNDBUF1003,38575 + | SO_RCVBUFSO_RCVBUF1004,38621 + | SO_ERRORSO_ERROR1005,38671 + | SO_TYPESO_TYPE1006,38734 + | SO_RCVLOWATSO_RCVLOWAT1007,38783 + | SO_SNDLOWATSO_SNDLOWAT1008,38865 +type socket_optint_optionsocket_optint_option1013,39111 + SO_LINGERSO_LINGER1014,39139 +type socket_float_optionsocket_float_option1021,39512 + SO_RCVTIMEOSO_RCVTIMEO1022,39539 + | SO_SNDTIMEOSO_SNDTIMEO1023,39594 +val getsockoptgetsockopt1029,39893 +val setsockoptsetsockopt1033,40036 +external getsockopt_intgetsockopt_int1036,40168 +external setsockopt_intsetsockopt_int1040,40331 +external getsockopt_optintgetsockopt_optint1044,40502 +external setsockopt_optintsetsockopt_optint1048,40696 +external getsockopt_floatgetsockopt_float1053,40902 +external setsockopt_floatsetsockopt_float1057,41096 +val open_connectionopen_connection1064,41351 +val shutdown_connectionshutdown_connection1070,41642 +val establish_serverestablish_server1075,41872 +type host_entryhost_entry1086,42281 + { h_nameh_name1087,42299 + h_aliasesh_aliases1088,42320 + h_addrtypeh_addrtype1089,42350 + h_addr_listh_addr_list1090,42382 +type protocol_entryprotocol_entry1094,42474 + { p_namep_name1095,42496 + p_aliasesp_aliases1096,42517 + p_protop_proto1097,42547 +type service_entryservice_entry1101,42627 + { s_names_name1102,42648 + s_aliasess_aliases1103,42669 + s_ports_port1104,42699 + s_protos_proto1105,42717 +val gethostnamegethostname1109,42799 +val gethostbynamegethostbyname1112,42875 +val gethostbyaddrgethostbyaddr1116,42995 +val getprotobynamegetprotobyname1120,43121 +val getprotobynumbergetprotobynumber1124,43250 +val getservbynamegetservbyname1128,43389 +val getservbyportgetservbyport1132,43525 +type addr_infoaddr_info1136,43668 + { ai_familyai_family1137,43685 + ai_socktypeai_socktype1138,43746 + ai_protocolai_protocol1139,43805 + ai_addrai_addr1140,43875 + ai_canonnameai_canonname1141,43930 +type getaddrinfo_optiongetaddrinfo_option1145,44063 + AI_FAMILYAI_FAMILY1146,44089 + | AI_SOCKTYPEAI_SOCKTYPE1147,44167 + | AI_PROTOCOLAI_PROTOCOL1148,44243 + | AI_NUMERICHOSTAI_NUMERICHOST1149,44317 + | AI_CANONNAMEAI_CANONNAME1151,44461 + | AI_PASSIVEAI_PASSIVE1153,44596 +val getaddrinfogetaddrinfo1157,44784 +type name_infoname_info1176,45861 + { ni_hostnameni_hostname1177,45878 + ni_serviceni_service1178,45952 +type getnameinfo_optiongetnameinfo_option1181,46100 + NI_NOFQDNNI_NOFQDN1182,46126 + | NI_NUMERICHOSTNI_NUMERICHOST1183,46190 + | NI_NAMEREQDNI_NAMEREQD1184,46255 + | NI_NUMERICSERVNI_NUMERICSERV1185,46326 + | NI_DGRAMNI_DGRAM1186,46395 +val getnameinfogetnameinfo1190,46557 +type terminal_ioterminal_io1205,47140 + mutable c_ignbrkc_ignbrk1208,47185 + mutable c_brkintc_brkint1209,47250 + mutable c_ignparc_ignpar1210,47324 + mutable c_parmrkc_parmrk1211,47399 + mutable c_inpckc_inpck1212,47456 + mutable c_istripc_istrip1213,47523 + mutable c_inlcrc_inlcr1214,47595 + mutable c_igncrc_igncr1215,47655 + mutable c_icrnlc_icrnl1216,47712 + mutable c_ixonc_ixon1217,47772 + mutable c_ixoffc_ixoff1218,47849 + mutable c_opostc_opost1220,47953 + mutable c_obaudc_obaud1222,48041 + mutable c_ibaudc_ibaud1223,48122 + mutable c_csizec_csize1224,48176 + mutable c_cstopbc_cstopb1225,48249 + mutable c_creadc_cread1226,48313 + mutable c_parenbc_parenb1227,48372 + mutable c_paroddc_parodd1228,48449 + mutable c_hupclc_hupcl1229,48522 + mutable c_clocalc_clocal1230,48582 + mutable c_isigc_isig1232,48669 + mutable c_icanonc_icanon1233,48743 + mutable c_noflshc_noflsh1235,48870 + mutable c_echoc_echo1236,48945 + mutable c_echoec_echoe1237,49005 + mutable c_echokc_echok1238,49084 + mutable c_echonlc_echonl1239,49160 + mutable c_vintrc_vintr1241,49262 + mutable c_vquitc_vquit1242,49337 + mutable c_verasec_verase1243,49407 + mutable c_vkillc_vkill1244,49485 + mutable c_veofc_veof1245,49560 + mutable c_veolc_veol1246,49637 + mutable c_vminc_vmin1247,49718 + mutable c_vtimec_vtime1249,49863 + mutable c_vstartc_vstart1250,49935 + mutable c_vstopc_vstop1251,50006 +val tcgetattrtcgetattr1254,50081 +type setattr_whensetattr_when1258,50210 + TCSANOWTCSANOW1259,50230 + | TCSADRAINTCSADRAIN1260,50240 + | TCSAFLUSHTCSAFLUSH1261,50254 +val tcsetattrtcsetattr1263,50269 +val tcsendbreaktcsendbreak1273,50780 +val tcdraintcdrain1278,50991 +type flush_queueflush_queue1282,51117 + TCIFLUSHTCIFLUSH1283,51136 + | TCOFLUSHTCOFLUSH1284,51149 + | TCIOFLUSHTCIOFLUSH1285,51162 +val tcflushtcflush1287,51177 +type flow_actionflow_action1294,51519 + TCOOFFTCOOFF1295,51538 + | TCOONTCOON1296,51549 + | TCIOFFTCIOFF1297,51559 + | TCIONTCION1298,51570 +val tcflowtcflow1300,51581 +val setsidsetsid1307,51928 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/unixLabels.mli,16172 +UnixLabels1,0 +type errorerror24,1132 + E2BIGE2BIG25,1158 + | EACCESEACCES26,1212 + | EAGAINEAGAIN27,1261 + | EBADFEBADF28,1336 + | EBUSYEBUSY29,1387 + | ECHILDECHILD30,1439 + | EDEADLKEDEADLK31,1487 + | EDOMEDOM32,1548 + | EEXISTEEXIST33,1617 + | EFAULTEFAULT34,1660 + | EFBIGEFBIG35,1703 + | EINTREINTR36,1749 + | EINVALEINVAL37,1811 + | EIOEIO38,1859 + | EISDIREISDIR39,1909 + | EMFILEEMFILE40,1955 + | EMLINKEMLINK41,2021 + | ENAMETOOLONGENAMETOOLONG42,2067 + | ENFILEENFILE43,2116 + | ENODEVENODEV44,2181 + | ENOENTENOENT45,2227 + | ENOEXECENOEXEC46,2284 + | ENOLCKENOLCK47,2338 + | ENOMEMENOMEM48,2388 + | ENOSPCENOSPC49,2437 + | ENOSYSENOSYS50,2492 + | ENOTDIRENOTDIR51,2546 + | ENOTEMPTYENOTEMPTY52,2593 + | ENOTTYENOTTY53,2644 + | ENXIOENXIO54,2711 + | EPERMEPERM55,2768 + | EPIPEEPIPE56,2823 + | ERANGEERANGE57,2866 + | EROFSEROFS58,2914 + | ESPIPEESPIPE59,2967 + | ESRCHESRCH60,3026 + | EXDEVEXDEV61,3073 + | EWOULDBLOCKEWOULDBLOCK62,3117 + | EINPROGRESSEINPROGRESS63,3170 + | EALREADYEALREADY64,3227 + | ENOTSOCKENOTSOCK65,3288 + | EDESTADDRREQEDESTADDRREQ66,3350 + | EMSGSIZEEMSGSIZE67,3410 + | EPROTOTYPEEPROTOTYPE68,3458 + | ENOPROTOOPTENOPROTOOPT69,3520 + | EPROTONOSUPPORTEPROTONOSUPPORT70,3574 + | ESOCKTNOSUPPORTESOCKTNOSUPPORT71,3628 + | EOPNOTSUPPEOPNOTSUPP72,3685 + | EPFNOSUPPORTEPFNOSUPPORT73,3750 + | EAFNOSUPPORTEAFNOSUPPORT74,3811 + | EADDRINUSEEADDRINUSE75,3890 + | EADDRNOTAVAILEADDRNOTAVAIL76,3944 + | ENETDOWNENETDOWN77,4006 + | ENETUNREACHENETUNREACH78,4053 + | ENETRESETENETRESET79,4107 + | ECONNABORTEDECONNABORTED80,4174 + | ECONNRESETECONNRESET81,4238 + | ENOBUFSENOBUFS82,4294 + | EISCONNEISCONN83,4351 + | ENOTCONNENOTCONN84,4410 + | ESHUTDOWNESHUTDOWN85,4465 + | ETOOMANYREFSETOOMANYREFS86,4529 + | ETIMEDOUTETIMEDOUT87,4594 + | ECONNREFUSEDECONNREFUSED88,4646 + | EHOSTDOWNEHOSTDOWN89,4696 + | EHOSTUNREACHEHOSTUNREACH90,4740 + | ELOOPELOOP91,4788 + | EOVERFLOWEOVERFLOW92,4853 + | EUNKNOWNERREUNKNOWNERR94,4925 +exception Unix_errorUnix_error102,5137 +val error_messageerror_message108,5454 +val handle_unix_errorhandle_unix_error111,5547 +val environmentenvironment120,5828 +val getenvgetenv124,5970 +val putenvputenv129,6176 +type process_statusprocess_status139,6441 + WEXITEDWEXITED140,6485 + | WSIGNALEDWSIGNALED143,6606 + | WSTOPPEDWSTOPPED146,6724 +type wait_flagwait_flag152,6888 + WNOHANGWNOHANG153,6922 + | WUNTRACEDWUNTRACED155,7040 +val execvexecv158,7148 +val execveexecve165,7496 +val execvpexecvp169,7689 +val execvpeexecvpe173,7843 +val forkfork177,8019 +val waitwait181,8175 +val waitpidwaitpid185,8315 +val systemsystem194,8781 +val getpidgetpid201,9112 +val getppidgetppid204,9176 +val nicenice207,9248 +type file_descrfile_descr216,9492 +val stdinstdin219,9573 +val stdoutstdout222,9639 +val stderrstderr225,9707 +type open_flagopen_flag228,9775 + O_RDONLYO_RDONLY229,9809 + | O_WRONLYO_WRONLY230,9865 + | O_RDWRO_RDWR231,9921 + | O_NONBLOCKO_NONBLOCK232,9989 + | O_APPENDO_APPEND233,10054 + | O_CREATO_CREAT234,10109 + | O_TRUNCO_TRUNC235,10170 + | O_EXCLO_EXCL236,10242 + | O_NOCTTYO_NOCTTY237,10298 + | O_DSYNCO_DSYNC238,10375 + | O_SYNCO_SYNC239,10478 + | O_RSYNCO_RSYNC240,10581 +type file_permfile_perm244,10721 +val openfileopenfile248,10859 +val closeclose253,11108 +val readread256,11172 +val writewrite261,11442 +val single_writesingle_write268,11822 +val in_channel_of_descrin_channel_of_descr277,12107 +val out_channel_of_descrout_channel_of_descr282,12331 +val descr_of_in_channeldescr_of_in_channel287,12557 +val descr_of_out_channeldescr_of_out_channel290,12673 +type seek_commandseek_command297,12829 + SEEK_SETSEEK_SET298,12869 + | SEEK_CURSEEK_CUR299,12947 + | SEEK_ENDSEEK_END300,13020 +val lseeklseek304,13144 +val truncatetruncate307,13257 +val ftruncateftruncate310,13350 +type file_kindfile_kind318,13509 + S_REGS_REG319,13543 + | S_DIRS_DIR320,13595 + | S_CHRS_CHR321,13644 + | S_BLKS_BLK322,13700 + | S_LNKS_LNK323,13752 + | S_FIFOS_FIFO324,13805 + | S_SOCKS_SOCK325,13855 +type statsstats327,13902 + { st_devst_dev328,13928 + st_inost_ino329,13981 + st_kindst_kind330,14033 + st_permst_perm331,14089 + st_nlinkst_nlink332,14142 + st_uidst_uid333,14197 + st_gidst_gid334,14257 + st_rdevst_rdev335,14325 + st_sizest_size336,14384 + st_atimest_atime337,14437 + st_mtimest_mtime338,14493 + st_ctimest_ctime339,14555 +val statstat343,14689 +val lstatlstat346,14767 +val fstatfstat350,14919 +val isattyisatty354,15036 +module LargeFileLargeFile360,15224 + val lseeklseek362,15249 + val truncatetruncate363,15315 + val ftruncateftruncate364,15362 + type statsstats365,15414 + { st_devst_dev366,15454 + st_inost_ino367,15511 + st_kindst_kind368,15567 + st_permst_perm369,15627 + st_nlinkst_nlink370,15684 + st_uidst_uid371,15743 + st_gidst_gid372,15807 + st_rdevst_rdev373,15879 + st_sizest_size374,15942 + st_atimest_atime375,15999 + st_mtimest_mtime376,16059 + st_ctimest_ctime377,16125 + val statstat379,16200 + val lstatlstat380,16231 + val fstatfstat381,16263 +val unlinkunlink398,16916 +val renamerename401,16975 +val linklink404,17094 +type access_permissionaccess_permission412,17274 + R_OKR_OK413,17324 + | W_OKW_OK414,17379 + | X_OKX_OK415,17435 + | F_OKF_OK416,17495 +val chmodchmod420,17596 +val fchmodfchmod423,17691 +val chownchown426,17791 +val fchownfchown429,17902 +val umaskumask432,18018 +val accessaccess436,18126 +val dupdup444,18341 +val dup2dup2448,18467 +val set_nonblockset_nonblock452,18605 +val clear_nonblockclear_nonblock460,19005 +val set_close_on_execset_close_on_exec464,19144 +val clear_close_on_execclear_close_on_exec470,19407 +val mkdirmkdir479,19584 +val rmdirrmdir482,19684 +val chdirchdir485,19746 +val getcwdgetcwd488,19819 +val chrootchroot491,19905 +type dir_handledir_handle494,19976 +val opendiropendir497,20067 +val readdirreaddir500,20143 +val rewinddirrewinddir504,20294 +val closedirclosedir507,20397 +val pipepipe515,20507 +val mkfifomkfifo520,20742 +val create_processcreate_process527,20904 +val create_process_envcreate_process_env543,21726 +val open_process_inopen_process_in551,22086 +val open_process_outopen_process_out558,22432 +val open_processopen_process566,22836 +val open_process_fullopen_process_full572,23183 +val close_process_inclose_process_in579,23540 +val close_process_outclose_process_out584,23744 +val close_processclose_process589,23951 +val close_process_fullclose_process_full594,24163 +val symlinksymlink604,24429 +val readlinkreadlink608,24574 +val selectselect615,24665 +type lock_commandlock_command632,25463 + F_ULOCKF_ULOCK633,25503 + | F_LOCKF_LOCK634,25544 + | F_TLOCKF_TLOCK635,25624 + | F_TESTF_TEST636,25702 + | F_RLOCKF_RLOCK637,25765 + | F_TRLOCKF_TRLOCK638,25845 +val lockflockf641,25965 +val killkill674,27458 +type sigprocmask_commandsigprocmask_command678,27581 + SIG_SETMASKSIG_SETMASK679,27636 + | SIG_BLOCKSIG_BLOCK680,27652 + | SIG_UNBLOCKSIG_UNBLOCK681,27666 +val sigprocmasksigprocmask683,27683 +val sigpendingsigpending693,28161 +val sigsuspendsigsuspend696,28265 +val pausepause701,28507 +type process_timesprocess_times708,28628 + { tms_utimetms_utime709,28670 + tms_stimetms_stime710,28727 + tms_cutimetms_cutime711,28786 + tms_cstimetms_cstime712,28854 +type tmtm716,28982 + { tm_sectm_sec717,29002 + tm_mintm_min718,29055 + tm_hourtm_hour719,29108 + tm_mdaytm_mday720,29159 + tm_montm_mon721,29217 + tm_yeartm_year722,29276 + tm_wdaytm_wday723,29327 + tm_ydaytm_yday724,29392 + tm_isdsttm_isdst725,29450 +val timetime730,29590 +val gettimeofdaygettimeofday734,29696 +val gmtimegmtime737,29807 +val localtimelocaltime741,29990 +val mktimemktime745,30144 +val alarmalarm755,30678 +val sleepsleep758,30772 +val timestimes761,30852 +val utimesutimes764,30937 +type interval_timerinterval_timer769,31163 + ITIMER_REALITIMER_REAL770,31207 + | ITIMER_VIRTUALITIMER_VIRTUAL772,31305 + | ITIMER_PROFITIMER_PROF774,31410 +type interval_timer_statusinterval_timer_status780,31651 + { it_intervalit_interval781,31709 + it_valueit_value782,31756 +val getitimergetitimer786,31887 +val setitimersetitimer789,32006 +val getuidgetuid804,32582 +val geteuidgeteuid807,32669 +val setuidsetuid810,32762 +val getgidgetgid813,32855 +val getegidgetegid816,32943 +val setgidsetgid819,33037 +val getgroupsgetgroups822,33132 +type passwd_entrypasswd_entry826,33252 + { pw_namepw_name827,33292 + pw_passwdpw_passwd828,33314 + pw_uidpw_uid829,33338 + pw_gidpw_gid830,33356 + pw_gecospw_gecos831,33374 + pw_dirpw_dir832,33397 + pw_shellpw_shell833,33418 +type group_entrygroup_entry837,33499 + { gr_namegr_name838,33537 + gr_passwdgr_passwd839,33559 + gr_gidgr_gid840,33583 + gr_memgr_mem841,33601 +val getlogingetlogin845,33686 +val getpwnamgetpwnam848,33781 +val getgrnamgetgrnam852,33899 +val getpwuidgetpwuid856,34015 +val getgrgidgetgrgid860,34133 +type inet_addrinet_addr868,34283 +val inet_addr_of_stringinet_addr_of_string871,34364 +val string_of_inet_addrstring_of_inet_addr879,34774 +val inet_addr_anyinet_addr_any884,34986 +val inet_addr_loopbackinet_addr_loopback888,35150 +val inet6_addr_anyinet6_addr_any891,35261 +val inet6_addr_loopbackinet6_addr_loopback895,35426 +type socket_domainsocket_domain902,35554 + PF_UNIXPF_UNIX903,35596 + | PF_INETPF_INET904,35647 + | PF_INET6PF_INET6905,35709 +type socket_typesocket_type908,35807 + SOCK_STREAMSOCK_STREAM909,35845 + | SOCK_DGRAMSOCK_DGRAM910,35898 + | SOCK_RAWSOCK_RAW911,35953 + | SOCK_SEQPACKETSOCK_SEQPACKET912,36003 +type sockaddrsockaddr916,36148 + ADDR_UNIXADDR_UNIX917,36181 + | ADDR_INETADDR_INET918,36205 +val socketsocket925,36532 +val domain_of_sockaddrdomain_of_sockaddr931,36796 +val socketpairsocketpair934,36918 +val acceptaccept939,37087 +val bindbind944,37313 +val connectconnect947,37397 +val listenlisten950,37487 +type shutdown_commandshutdown_command954,37656 + SHUTDOWN_RECEIVESHUTDOWN_RECEIVE955,37704 + | SHUTDOWN_SENDSHUTDOWN_SEND956,37763 + | SHUTDOWN_ALLSHUTDOWN_ALL957,37820 +val shutdownshutdown961,37916 +val getsocknamegetsockname968,38266 +val getpeernamegetpeername971,38355 +type msg_flagmsg_flag974,38466 + MSG_OOBMSG_OOB975,38499 + | MSG_DONTROUTEMSG_DONTROUTE976,38511 + | MSG_PEEKMSG_PEEK977,38529 +val recvrecv981,38658 +val recvfromrecvfrom985,38793 +val sendsend990,38950 +val sendtosendto994,39082 +type socket_bool_optionsocket_bool_option1004,39270 + SO_DEBUGSO_DEBUG1005,39296 + | SO_BROADCASTSO_BROADCAST1006,39351 + | SO_REUSEADDRSO_REUSEADDR1007,39414 + | SO_KEEPALIVESO_KEEPALIVE1008,39480 + | SO_DONTROUTESO_DONTROUTE1009,39529 + | SO_OOBINLINESO_OOBINLINE1010,39594 + | SO_ACCEPTCONNSO_ACCEPTCONN1011,39651 +type socket_int_optionsocket_int_option1016,39903 + SO_SNDBUFSO_SNDBUF1017,39928 + | SO_RCVBUFSO_RCVBUF1018,39974 + | SO_ERRORSO_ERROR1019,40024 + | SO_TYPESO_TYPE1020,40087 + | SO_RCVLOWATSO_RCVLOWAT1021,40136 + | SO_SNDLOWATSO_SNDLOWAT1022,40218 +type socket_optint_optionsocket_optint_option1027,40476 + SO_LINGERSO_LINGER1028,40504 +type socket_float_optionsocket_float_option1035,40877 + SO_RCVTIMEOSO_RCVTIMEO1036,40904 + | SO_SNDTIMEOSO_SNDTIMEO1037,40959 +val getsockoptgetsockopt1043,41270 +val setsockoptsetsockopt1047,41413 +external getsockopt_intgetsockopt_int1050,41545 +external setsockopt_intsetsockopt_int1054,41714 +external getsockopt_optintgetsockopt_optint1058,41891 +external setsockopt_optintsetsockopt_optint1062,42091 +external getsockopt_floatgetsockopt_float1067,42303 +external setsockopt_floatsetsockopt_float1071,42503 +val open_connectionopen_connection1079,42765 +val shutdown_connectionshutdown_connection1085,43056 +val establish_serverestablish_server1090,43292 +type host_entryhost_entry1102,43714 + { h_nameh_name1103,43750 + h_aliasesh_aliases1104,43771 + h_addrtypeh_addrtype1105,43801 + h_addr_listh_addr_list1106,43833 +type protocol_entryprotocol_entry1110,43925 + { p_namep_name1111,43969 + p_aliasesp_aliases1112,43990 + p_protop_proto1113,44020 +type service_entryservice_entry1117,44100 + { s_names_name1118,44142 + s_aliasess_aliases1119,44163 + s_ports_port1120,44193 + s_protos_proto1121,44211 +val gethostnamegethostname1125,44293 +val gethostbynamegethostbyname1128,44369 +val gethostbyaddrgethostbyaddr1132,44489 +val getprotobynamegetprotobyname1136,44615 +val getprotobynumbergetprotobynumber1140,44744 +val getservbynamegetservbyname1144,44883 +val getservbyportgetservbyport1148,45028 +type addr_infoaddr_info1152,45180 + { ai_familyai_family1153,45197 + ai_socktypeai_socktype1154,45258 + ai_protocolai_protocol1155,45317 + ai_addrai_addr1156,45387 + ai_canonnameai_canonname1157,45442 +type getaddrinfo_optiongetaddrinfo_option1161,45575 + AI_FAMILYAI_FAMILY1162,45601 + | AI_SOCKTYPEAI_SOCKTYPE1163,45679 + | AI_PROTOCOLAI_PROTOCOL1164,45755 + | AI_NUMERICHOSTAI_NUMERICHOST1165,45829 + | AI_CANONNAMEAI_CANONNAME1167,45973 + | AI_PASSIVEAI_PASSIVE1169,46108 +val getaddrinfogetaddrinfo1173,46296 +type name_infoname_info1192,47373 + { ni_hostnameni_hostname1193,47390 + ni_serviceni_service1194,47464 +type getnameinfo_optiongetnameinfo_option1197,47612 + NI_NOFQDNNI_NOFQDN1198,47638 + | NI_NUMERICHOSTNI_NUMERICHOST1199,47702 + | NI_NAMEREQDNI_NAMEREQD1200,47767 + | NI_NUMERICSERVNI_NUMERICSERV1201,47838 + | NI_DGRAMNI_DGRAM1202,47907 +val getnameinfogetnameinfo1206,48069 +type terminal_ioterminal_io1221,48652 + mutable c_ignbrkc_ignbrk1224,48716 + mutable c_brkintc_brkint1225,48781 + mutable c_ignparc_ignpar1226,48855 + mutable c_parmrkc_parmrk1227,48930 + mutable c_inpckc_inpck1228,48987 + mutable c_istripc_istrip1229,49054 + mutable c_inlcrc_inlcr1230,49126 + mutable c_igncrc_igncr1231,49186 + mutable c_icrnlc_icrnl1232,49243 + mutable c_ixonc_ixon1233,49303 + mutable c_ixoffc_ixoff1234,49380 + mutable c_opostc_opost1236,49484 + mutable c_obaudc_obaud1238,49572 + mutable c_ibaudc_ibaud1239,49653 + mutable c_csizec_csize1240,49707 + mutable c_cstopbc_cstopb1241,49780 + mutable c_creadc_cread1242,49844 + mutable c_parenbc_parenb1243,49903 + mutable c_paroddc_parodd1244,49980 + mutable c_hupclc_hupcl1245,50053 + mutable c_clocalc_clocal1246,50113 + mutable c_isigc_isig1248,50200 + mutable c_icanonc_icanon1249,50274 + mutable c_noflshc_noflsh1251,50401 + mutable c_echoc_echo1252,50476 + mutable c_echoec_echoe1253,50536 + mutable c_echokc_echok1254,50615 + mutable c_echonlc_echonl1255,50691 + mutable c_vintrc_vintr1257,50793 + mutable c_vquitc_vquit1258,50868 + mutable c_verasec_verase1259,50938 + mutable c_vkillc_vkill1260,51016 + mutable c_veofc_veof1261,51091 + mutable c_veolc_veol1262,51168 + mutable c_vminc_vmin1263,51249 + mutable c_vtimec_vtime1265,51394 + mutable c_vstartc_vstart1266,51466 + mutable c_vstopc_vstop1267,51537 +val tcgetattrtcgetattr1270,51612 +type setattr_whensetattr_when1274,51741 + TCSANOWTCSANOW1275,51782 + | TCSADRAINTCSADRAIN1276,51794 + | TCSAFLUSHTCSAFLUSH1277,51808 +val tcsetattrtcsetattr1279,51823 +val tcsendbreaktcsendbreak1289,52339 +val tcdraintcdrain1294,52559 +type flush_queueflush_queue1298,52685 + TCIFLUSHTCIFLUSH1299,52724 + | TCOFLUSHTCOFLUSH1300,52737 + | TCIOFLUSHTCIOFLUSH1301,52750 +val tcflushtcflush1303,52765 +type flow_actionflow_action1310,53112 + TCOOFFTCOOFF1311,53151 + | TCOONTCOON1312,53162 + | TCIOFFTCIOFF1313,53172 + | TCIONTCION1314,53183 +val tcflowtcflow1316,53194 +val setsidsetsid1323,53546 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/weak.mli,624 +Weak1,0 +tt21,1050 +val createcreate33,1436 +val lengthlength38,1658 +val setset42,1759 +val getget49,2058 +val get_copyget_copy55,2315 +val checkcheck67,2852 +val fillfill72,3093 +val blitblit77,3347 +module type SS101,4425 + type datadata102,4445 + tt104,4514 + val createcreate109,4738 + val clearclear112,4882 + val mergemerge114,4953 + val addadd117,5104 + val removeremove121,5324 + val findfind124,5480 + val find_allfind_all127,5629 + val memmem130,5760 + val iteriter133,5900 + val foldfold137,6109 + val countcount142,6382 + val statsstats146,6597 +module MakeMake153,6926 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/xml.mli,1352 +Xml1,0 +type xmlxml36,1372 + | ElementElement37,1385 + | PCDataPCData38,1445 +val parse_fileparse_file49,1857 +val parse_inparse_in53,1977 +val parse_stringparse_string57,2095 +type error_poserror_pos76,2905 +type error_msgerror_msg78,2923 + | UnterminatedCommentUnterminatedComment79,2941 + | UnterminatedStringUnterminatedString80,2965 + | UnterminatedEntityUnterminatedEntity81,2988 + | IdentExpectedIdentExpected82,3011 + | CloseExpectedCloseExpected83,3029 + | NodeExpectedNodeExpected84,3047 + | AttributeNameExpectedAttributeNameExpected85,3064 + | AttributeValueExpectedAttributeValueExpected86,3090 + | EndOfTagExpectedEndOfTagExpected87,3117 + | EOFExpectedEOFExpected88,3148 +type errorerror90,3166 +exception ErrorError92,3204 +exception File_not_foundFile_not_found94,3232 +val errorerror97,3322 +val error_msgerror_msg100,3400 +val lineline103,3483 +val rangerange106,3594 +val abs_rangeabs_range109,3695 +exception Not_elementNot_element113,3765 +exception Not_pcdataNot_pcdata114,3795 +exception No_attributeNo_attribute115,3824 +val tagtag119,3975 +val pcdatapcdata123,4120 +val attribsattribs128,4346 +val attribattrib135,4677 +val childrenchildren139,4840 +val iteriter147,5159 +val mapmap151,5331 +val foldfold156,5522 +val to_stringto_string162,5705 +val to_string_fmtto_string_fmt166,5857 + +/usr/local/soft/ocaml/3.10.0//lib/ocaml/xmlParser.mli,358 +XmlParser1,0 +tt28,1109 +type sourcesource31,1180 + | SFileSFile32,1196 + | SChannelSChannel33,1216 + | SStringSString34,1243 + | SLexbufSLexbuf35,1265 +val makemake38,1361 +val proveprove44,1640 +val resolveresolve57,2436 +val check_eofcheck_eof63,2784 +val parseparse67,2974 +val concat_pcdataconcat_pcdata73,3300 +val _raises_raises78,3382 diff --git a/src/compEnv.ml b/src/compEnv.ml deleted file mode 100644 index 4b058abbb09e479cb20542c84844e6ed55ab24c7..0000000000000000000000000000000000000000 --- a/src/compEnv.ml +++ /dev/null @@ -1,13 +0,0 @@ - -(* - -Gère les structures nécessaires à la compil des items d'un package ? - -*) - - -type t = int - -let create stab = ( -0 -) diff --git a/src/compile.ml b/src/compile.ml index a45bfaf0c116f4057a8e4a1aa77b19341f798530..4c71603b1a61bec4a2d1338b933645eab54171d5 100644 --- a/src/compile.ml +++ b/src/compile.ml @@ -42,35 +42,35 @@ let rec first_pack_in = ( ) let doit (srclist : Syntaxe.namespace list) (mnode : Syntaxe.idref) = ( - (* init de la table source *) - let srctab = SrcTab.create srclist in + (* init de la table source *) + let srctab = SrcTab.create srclist in -SrcTab.dump srctab; + SrcTab.dump srctab; - (* le pack par défaut est le premier de la liste ... *) - let dfltpack = first_pack_in srclist in + (* le pack par défaut est le premier de la liste ... *) + let dfltpack = first_pack_in srclist in - (* l'item_ref du noeud *) - let mnode_id = fullid_of_idref dfltpack mnode in + (* l'item_ref du noeud *) + let mnode_id = fullid_of_idref dfltpack mnode in - (* la clée "absolue" du main node (pas d'args statiques) *) - let mnode_key = CompileData.make_simple_node_key mnode_id in + (* la clée "absolue" du main node (pas d'args statiques) *) + let mnode_key = CompileData.make_simple_node_key mnode_id in -Verbose.put "-- MAIN NODE: \"%s\"\n" (CompileData.string_of_node_key mnode_key); + Verbose.put "-- MAIN NODE: \"%s\"\n" (CompileData.string_of_node_key mnode_key); - (* Pour chaque package, on a un solveur de références - globales, pour les types, const et oper : - - les références pointées (p::n) sont recherchées - directement dans la srctab puisqu'il n'y a pas - d'ambiguité - - les références simple sont recherchées : - . dans le pack lui-même - . dans un des packs déclarés "uses", avec - priorité dans l'ordre - *) - let lzcomp = LazyCompiler.create srctab in - (* let res = LazyCompiler.do_node lzcomp mnode_key in *) - LazyCompiler.test_types lzcomp ; + (* Pour chaque package, on a un solveur de références + globales, pour les types, const et oper : + - les références pointées (p::n) sont recherchées + directement dans la srctab puisqu'il n'y a pas + d'ambiguité + - les références simple sont recherchées : + . dans le pack lui-même + . dans un des packs déclarés "uses", avec + priorité dans l'ordre + *) + let lzcomp = LazyCompiler.create srctab in +(* let res = LazyCompiler.do_node lzcomp mnode_key in *) + LazyCompiler.test_types lzcomp ; (* a virer *) () ) diff --git a/src/dump.ml b/src/dump.ml index 5582c8880b28f171e66a402d452c8edcd658f0a2..e678111f19745d851432278da5b0377724b5a71f 100644 --- a/src/dump.ml +++ b/src/dump.ml @@ -88,16 +88,20 @@ and | TypeItem id -> dump_type os (Hashtbl.find pkg.pk_type_table id) | OperItem id -> ( match (Hashtbl.find pkg.pk_oper_table id) with - {src = lxm ; it = Node (ninfo) } -> ( + | {src = lxm ; it = Node (ninfo) } -> dump_node os {src = lxm; it = ninfo} - ) | - {src = lxm ; it = Func finfo } -> ( - dump_func os {src = lxm; it = finfo} - ) + | {src = lxm ; it = Func finfo } -> + dump_func os {src = lxm; it = finfo} ) - ) with Not_found -> raise - (Internal_error - ("dump_packbody", "unable to find a definition for \"%d\"")) + ) + with Not_found -> + print_string ("*** unable to find a definition for " ^ + (match d with + ConstItem id -> id + | TypeItem id -> id + | OperItem id -> id + )); + assert false ) ; Format.fprintf os "@\n" ) in @@ -377,7 +381,7 @@ and dump_left_part_list (os: Format.formatter) (lfts: left_part list) = match lfts with l::[] -> dump_left_part os l | l::reste -> fprintf os "%a,@,%a" dump_left_part l dump_left_part_list reste - | _ -> raise (Internal_error ("dump_left_part_list", "unexpected case")) + | _ -> assert false ) and dump_left_part (os: Format.formatter) (lft: left_part) = @@ -429,6 +433,7 @@ and dump_by_pos_exp (os: Format.formatter) (oper: by_pos_op) (pars: val_exp list | (INT2REAL_n, [p0]) -> dump_unary_exp os "real" p0 (* binaires *) | (ARROW_n, [p0;p1]) -> dump_binary_exp os "->" p0 p1 + | (FBY_n, [p0;p1]) -> dump_binary_exp os "fby" p0 p1 | (WHEN_n, [p0;p1]) -> dump_binary_exp os "when" p0 p1 | (AND_n, [p0;p1]) -> dump_binary_exp os "and" p0 p1 | (OR_n, [p0;p1]) -> dump_binary_exp os "or" p0 p1 @@ -468,7 +473,50 @@ and dump_by_pos_exp (os: Format.formatter) (oper: by_pos_op) (pars: val_exp list (* pseudo-unaire : acces structure *) | (STRUCT_ACCESS_n fld, [p0]) -> fprintf os "%a.%s" dump_val_exp p0 fld - | _ -> raise (Internal_error ("dump_by_pos_exp", "unexpected case")) + + + | (FBY_n, _) -> assert false + | (PROJ_n _, _) -> assert false + | (NULL_exp, _) -> assert false + + | (STRUCT_ACCESS_n _, _) -> assert false + | (ARRAY_SLICE_n _, _) -> assert false + | (ARRAY_ACCES_n _, _) -> assert false + | (WITH_n, _) -> assert false + | (IF_n, _) -> assert false + | (CONCAT_n, _) -> assert false + | (HAT_n, _) -> assert false + | (POWER_n, _) -> assert false + | (TIMES_n, _) -> assert false + | (SLASH_n, _) -> assert false + | (PLUS_n, _) -> assert false + | (MINUS_n, _) -> assert false + | (MOD_n, _) -> assert false + | (DIV_n, _) -> assert false + | (GTE_n, _) -> assert false + | (GT_n, _) -> assert false + | (LTE_n, _) -> assert false + | (LT_n, _) -> assert false + | (NEQ_n, _) -> assert false + | (EQ_n, _) -> assert false + | (IMPL_n, _) -> assert false + | (XOR_n, _) -> assert false + | (OR_n, _) -> assert false + | (AND_n, _) -> assert false + | (WHEN_n, _) -> assert false + | (ARROW_n, _) -> assert false + | (INT2REAL_n, _) -> assert false + | (REAL2INT_n, _) -> assert false + | (CURRENT_n, _) -> assert false + | (PRE_n, _) -> assert false + | (UMINUS_n, _) -> assert false + | (NOT_n, _) -> assert false + | (IDENT_n _, _) -> assert false + | (RCONST_n _, _::_) -> assert false + | (ICONST_n _, _::_) -> assert false + | (FALSE_n, _::_) -> assert false + | (TRUE_n, _::_) -> assert false + ) (* les procs standard pour les operateurs predefs *) and dump_leaf_exp (os : Format.formatter) (s : string) = ( @@ -539,9 +587,32 @@ and op2string op = ( | (POWER_n ) -> "**" | (HAT_n ) -> "^" | (CONCAT_n ) -> "|" + | (PROJ_n _ ) -> assert false + | (IDENT_n _) -> assert false + | (RCONST_n _)-> assert false + | (ICONST_n _)-> assert false + | (FBY_n ) -> assert false + | (INT2REAL_n)-> assert false + | (REAL2INT_n)-> assert false + | (FALSE_n ) -> assert false + | (TRUE_n ) -> assert false + | (NULL_exp ) -> assert false (* ternaires *) | (IF_n ) -> "if" - | _ -> raise (Internal_error ("dump_by_pos_exp", "unexpected case")) + | (WITH_n ) -> "with" + (* n-aires *) + | (NOR_n ) -> "nor" + | (DIESE_n ) -> "#" + | (TUPLE_n ) -> assert false + | (CALL_n _ ) -> assert false + (* tableau (spécial) *) + | (ARRAY_n ) -> assert false + (* pseudo-unaire : acces tableau *) + | (ARRAY_ACCES_n _ ) -> assert false + | (ARRAY_SLICE_n sl) -> assert false + (* pseudo-unaire : acces structure *) + | (STRUCT_ACCESS_n fld) -> assert false + ) and dump_oper_exp (os : Format.formatter) diff --git a/src/errors.ml b/src/errors.ml index bd02838e1004137a138c405bc5840d2950c63f13..9c4c81b6dae4f3e0948dd01b27ef766e54a30cc7 100644 --- a/src/errors.ml +++ b/src/errors.ml @@ -100,11 +100,6 @@ Une erreur plus generale ----------------------------------------------------------------------*) exception Global_error of string -(*--------------------------------------------------------------------- -Une erreur qui n'aurrait pas du arriver (fonction, message) -----------------------------------------------------------------------*) -exception Internal_error of string * string - (*--------------------------------------------------------------------- Formatage standard des erreurs de compil diff --git a/src/eval.ml b/src/eval.ml deleted file mode 100644 index 0f68135b983382ae2b07d42f596d13680a8a06f9..0000000000000000000000000000000000000000 --- a/src/eval.ml +++ /dev/null @@ -1,53 +0,0 @@ -match oper with - TRUE_n -> - | FALSE_n -> - | ICONST_n s -> (0, function x -> IntVal (int_of_string s) - | RCONST_n s -> (0, function x -> IntVal (int_of_string s) - | RCONST_n s -> ICI - | IDENT_n s -> ICI - (* unaires *) - | NOT_n -> ICI - | UMINUS_n -> ICI - | PRE_n -> ICI - | CURRENT_n -> ICI - | REAL2INT_n -> ICI - | INT2REAL_n -> ICI - (* binaires *) - | ARROW_n -> ICI - | WHEN_n -> ICI - | AND_n -> ICI - | OR_n -> ICI - | XOR_n -> ICI - | IMPL_n -> ICI - | EQ_n -> ICI - | NEQ_n -> ICI - | LT_n -> ICI - | LTE_n -> ICI - | GT_n -> ICI - | GTE_n -> ICI - | DIV_n -> ICI - | MOD_n -> ICI - | MINUS_n -> ICI - | PLUS_n -> ICI - | SLASH_n -> ICI - | TIMES_n -> ICI - | POWER_n -> ICI - | HAT_n -> ICI - | CONCAT_n -> ICI - (* ternaires *) - | IF_n -> ICI - | WITH_n -> ICI - (* n-aires *) - | NOR_n -> ICI - | DIESE_n -> ICI - | TUPLE_n -> ICI - | CALL_n s -> ICI - (* tableau (spécial) *) - | ARRAY_n pl -> ICI - (* pseudo-unaire : acces tableau *) - | ARRAY_ACCES_n ix -> ICI - ICI - | ARRAY_SLICE_n sl -> ICI - (* pseudo-unaire : acces structure *) - | STRUCT_ACCESS_n fld -> ICI - | _ -> raise Internal_error ("ICI") diff --git a/src/evalConst.ml b/src/evalConst.ml index fbcaafd5328cbb82f07d5e15e30124cde286fe98..9d049b645bd9072d087205a5e9fcde542a126aa2 100644 --- a/src/evalConst.ml +++ b/src/evalConst.ml @@ -107,226 +107,226 @@ op_computer : ----------------------------------------------------*) let op_computer (posop : by_pos_op) (src: Lxm.t) -= (* retour : (const_eff list -> const_eff_list) option *) -( - (*---------------------------- - le template pour tous les : - bool*bool->bool - ----------------------------*) - let generic_bin_bool - (nm : string) - (f : bool -> bool -> bool) - (args : const_eff list) + = (* retour : (const_eff list -> const_eff_list) option *) + ( + (*---------------------------- + le template pour tous les : + bool*bool->bool + ----------------------------*) + let generic_bin_bool + (nm : string) + (f : bool -> bool -> bool) + (args : const_eff list) = ( - match args with - [Bool_const_eff v0; Bool_const_eff v1] -> [Bool_const_eff (f v0 v1)] - | [x0; x1] -> (type_error [x0; x1] "bool*bool") - | x -> (arity_error x "2" ) + match args with + [Bool_const_eff v0; Bool_const_eff v1] -> [Bool_const_eff (f v0 v1)] + | [x0; x1] -> (type_error [x0; x1] "bool*bool") + | x -> (arity_error x "2" ) ) in - (*---------------------------- - le template pour tous les : - int*int->int + (*---------------------------- + le template pour tous les : + int*int->int ----------------------------*) - let generic_bin_int - (nm : string) - (f : int -> int -> int) - (args : const_eff list) + let generic_bin_int + (nm : string) + (f : int -> int -> int) + (args : const_eff list) = ( - match args with - [Int_const_eff v0; Int_const_eff v1] -> [Int_const_eff (f v0 v1)] - | [x0; x1] -> (type_error [x0; x1] "int*int") - | x -> (arity_error x "2" ) + match args with + [Int_const_eff v0; Int_const_eff v1] -> [Int_const_eff (f v0 v1)] + | [x0; x1] -> (type_error [x0; x1] "int*int") + | x -> (arity_error x "2" ) ) in - (*---------------------------- - le template pour tous les : - num*num->bool - N.B. on est obligé de passer - 2 "copie" du comparateur - (fi pour int, fr pour float) - sinon caml ne peut pas typer ... + (*---------------------------- + le template pour tous les : + num*num->bool + N.B. on est obligé de passer + 2 "copie" du comparateur + (fi pour int, fr pour float) + sinon caml ne peut pas typer ... ----------------------------*) - let generic_num_comp - (nm : string) - (fi : int -> int -> bool) - (fr : float -> float -> bool) - (args : const_eff list) + let generic_num_comp + (nm : string) + (fi : int -> int -> bool) + (fr : float -> float -> bool) + (args : const_eff list) = ( - match args with - [Int_const_eff v0; Int_const_eff v1] -> ( - [Bool_const_eff (fi v0 v1)] - ) | - [Real_const_eff v0; Real_const_eff v1] -> ( - let res = (fr v0 v1) in - warning src (sprintf "float in static exp: %f%s%f evaluated as %b" v0 nm v1 res); - [Bool_const_eff res] - ) | - [x0; x1] -> (type_error [x0; x1] "int*int or real*real") - | x -> (arity_error x "2" ) + match args with + [Int_const_eff v0; Int_const_eff v1] -> ( + [Bool_const_eff (fi v0 v1)] + ) | + [Real_const_eff v0; Real_const_eff v1] -> ( + let res = (fr v0 v1) in + warning src (sprintf "float in static exp: %f%s%f evaluated as %b" v0 nm v1 res); + [Bool_const_eff res] + ) | + [x0; x1] -> (type_error [x0; x1] "int*int or real*real") + | x -> (arity_error x "2" ) ) in - (*---------------------------- - le template pour tous les : - num*num->num + (*---------------------------- + le template pour tous les : + num*num->num ----------------------------*) - let generic_bin_num - (nm : string) - (fi : int -> int -> int) - (fr : float -> float -> float) - (args : const_eff list) + let generic_bin_num + (nm : string) + (fi : int -> int -> int) + (fr : float -> float -> float) + (args : const_eff list) = ( - match args with - [Int_const_eff v0; Int_const_eff v1] -> ( - [Int_const_eff (fi v0 v1)] - ) | - [Real_const_eff v0; Real_const_eff v1] -> ( - let res = (fr v0 v1) in - warning src (sprintf "float in static exp: %f%s%f evaluated as %f" v0 nm v1 res); - [Real_const_eff res] - ) | - [x0; x1] -> (type_error [x0; x1] "int*int or real*real") - | x -> (arity_error x "2" ) + match args with + [Int_const_eff v0; Int_const_eff v1] -> ( + [Int_const_eff (fi v0 v1)] + ) | + [Real_const_eff v0; Real_const_eff v1] -> ( + let res = (fr v0 v1) in + warning src (sprintf "float in static exp: %f%s%f evaluated as %f" v0 nm v1 res); + [Real_const_eff res] + ) | + [x0; x1] -> (type_error [x0; x1] "int*int or real*real") + | x -> (arity_error x "2" ) ) in - (*---------------------------- - Calcul du if + (*---------------------------- + Calcul du if ----------------------------*) - let compute_if (args : const_eff list) = ( - match args with - [Bool_const_eff c; x1; x2] -> ( - let t1 = type_of_const_eff x1 in - let t2 = type_of_const_eff x2 in - if (t1 = t2 ) then (if (c) then [x1] else [x2]) - else (type_error args "bool*t*t for some type t") - ) - | [x0; x1; x2] -> (type_error args "bool*t*t for some type t") - | x -> (arity_error x "3") - ) in - (*---------------------------- - Calcul de l'égalité - N.B. Sur les constantes abstraites - on est très méfiant - N.B. Sur les types structure, - on fait des appels récursifs + let compute_if (args : const_eff list) = ( + match args with + [Bool_const_eff c; x1; x2] -> ( + let t1 = type_of_const_eff x1 in + let t2 = type_of_const_eff x2 in + if (t1 = t2 ) then (if (c) then [x1] else [x2]) + else (type_error args "bool*t*t for some type t") + ) + | [x0; x1; x2] -> (type_error args "bool*t*t for some type t") + | x -> (arity_error x "3") + ) in + (*---------------------------- + Calcul de l'égalité + N.B. Sur les constantes abstraites + on est très méfiant + N.B. Sur les types structure, + on fait des appels récursifs ----------------------------*) - let rec compute_eq - (args : const_eff list) + let rec compute_eq + (args : const_eff list) = ( - let rec fields_eq f0 f1 = ( - match (f0, f1) with - ([], []) -> ( - [Bool_const_eff true] - ) | - ((f0,h0)::t0, (f1,h1)::t1) -> ( - if(f0 <> f1) then ( - raise (Internal_error ("compute_eq::fields_eq", "unexpected case")) - ) else - match (compute_eq [h0;h1]) with - [Bool_const_eff false] -> [Bool_const_eff false] - | [Bool_const_eff true] -> (fields_eq t0 t1) - | _ -> raise (Internal_error ("compute_eq::fields_eq", "unexpected case")) - ) | - _ -> raise (Internal_error ("compute_eq::fields_eq", "unexpected case")) - ) in - match args with - [Bool_const_eff v0; Bool_const_eff v1] -> [Bool_const_eff (v0 = v1)] - | [Int_const_eff v0; Int_const_eff v1] -> [Bool_const_eff (v0 = v1)] - | [Real_const_eff v0; Real_const_eff v1] -> ( - let res = (v0 = v1) in - warning src (sprintf "float in static exp: %f=%f evaluated as %b" v0 v1 res); - [Bool_const_eff res] - ) -(* -2007-07 obsolete - - | [Extern_const_eff (v0, t0); Extern_const_eff (v1, t1)] -> ( - if (t0 <> t1) then ( - type_error args "t*t for some type t" - ) else if (v0 <> v1) then ( - uneval_error args ( - sprintf "%s=%s (external constants)" - (string_of_fullid v0) - (string_of_fullid v1) - ) - ) else ( - [Bool_const_eff true] - ) + let rec fields_eq f0 f1 = ( + match (f0, f1) with + ([], []) -> ( + [Bool_const_eff true] + ) | + ((f0,h0)::t0, (f1,h1)::t1) -> ( + assert (f0 = f1); + match (compute_eq [h0;h1]) with + [Bool_const_eff false] -> [Bool_const_eff false] + | [Bool_const_eff true] -> (fields_eq t0 t1) + | _ -> assert false + ) + | + _ -> assert false + ) + in + match args with + [Bool_const_eff v0; Bool_const_eff v1] -> [Bool_const_eff (v0 = v1)] + | [Int_const_eff v0; Int_const_eff v1] -> [Bool_const_eff (v0 = v1)] + | [Real_const_eff v0; Real_const_eff v1] -> ( + let res = (v0 = v1) in + warning src (sprintf "float in static exp: %f=%f evaluated as %b" v0 v1 res); + [Bool_const_eff res] ) -*) - | [Enum_const_eff (v0, t0); Enum_const_eff (v1, t1)] -> ( - if (t0 = t1) then [Bool_const_eff (v0 = v1)] - else type_error args "t*t for some type t" + (* + 2007-07 obsolete + + | [Extern_const_eff (v0, t0); Extern_const_eff (v1, t1)] -> ( + if (t0 <> t1) then ( + type_error args "t*t for some type t" + ) else if (v0 <> v1) then ( + uneval_error args ( + sprintf "%s=%s (external constants)" + (string_of_fullid v0) + (string_of_fullid v1) + ) + ) else ( + [Bool_const_eff true] + ) + ) + *) + | [Enum_const_eff (v0, t0); Enum_const_eff (v1, t1)] -> ( + if (t0 = t1) then [Bool_const_eff (v0 = v1)] + else type_error args "t*t for some type t" ) - | [Struct_const_eff (f0, t0); Struct_const_eff (f1, t1)] -> ( - if (t0 = t1) then (fields_eq f0 f1) - else type_error args "t*t for some type t" + | [Struct_const_eff (f0, t0); Struct_const_eff (f1, t1)] -> ( + if (t0 = t1) then (fields_eq f0 f1) + else type_error args "t*t for some type t" ) - | [x;y] -> type_error args "t*t for some type t" - | x -> arity_error args "2" + | [x;y] -> type_error args "t*t for some type t" + | x -> arity_error args "2" ) in -(* match principal *) -match posop with + (* match principal *) + match posop with TRUE_n -> ( - function [] -> [ Bool_const_eff true ] - | x -> arity_error x "0" - ) + function [] -> [ Bool_const_eff true ] + | x -> arity_error x "0" + ) | FALSE_n -> ( - function [] -> [ Bool_const_eff false ] - | x -> arity_error x "0" - ) + function [] -> [ Bool_const_eff false ] + | x -> arity_error x "0" + ) | ICONST_n s -> ( - function [] -> [ Int_const_eff (int_of_string s) ] - | x -> arity_error x "0" - ) + function [] -> [ Int_const_eff (int_of_string s) ] + | x -> arity_error x "0" + ) | RCONST_n s -> ( - function [] -> [ Real_const_eff (float_of_string s) ] - | x -> arity_error x "0" - ) - | IDENT_n s -> (raise (Internal_error("op_computer", "unexpected case"))) - (* unaires *) + function [] -> [ Real_const_eff (float_of_string s) ] + | x -> arity_error x "0" + ) + | IDENT_n s -> assert false + (* unaires *) | NOT_n -> ( - function [Bool_const_eff v] -> [Bool_const_eff (not v)] - | [x] -> type_error [x] "bool" - | x -> arity_error x "1" - ) + function [Bool_const_eff v] -> [Bool_const_eff (not v)] + | [x] -> type_error [x] "bool" + | x -> arity_error x "1" + ) | UMINUS_n -> ( - function [Int_const_eff v] -> [Int_const_eff (- v)] - | [Real_const_eff v] -> [Real_const_eff (-. v)] - | [x] -> type_error [x] "int or real" - | x -> arity_error x "1" - ) + function [Int_const_eff v] -> [Int_const_eff (- v)] + | [Real_const_eff v] -> [Real_const_eff (-. v)] + | [x] -> type_error [x] "int or real" + | x -> arity_error x "1" + ) | PRE_n -> ( function x -> uneval_error x "pre") | CURRENT_n -> ( function x -> uneval_error x "current") | REAL2INT_n -> ( - function + function [Real_const_eff v] -> ( - let res = (int_of_float v) in - warning src (sprintf "float2int cast: '%f' converted to '%d'" v res); - [Int_const_eff res] - ) - | [x] -> type_error [x] "real" - | x -> arity_error x "1" + let res = (int_of_float v) in + warning src (sprintf "float2int cast: '%f' converted to '%d'" v res); + [Int_const_eff res] ) + | [x] -> type_error [x] "real" + | x -> arity_error x "1" + ) | INT2REAL_n -> ( - function [Int_const_eff v] -> [Real_const_eff (float_of_int v)] - | [x] -> type_error [x] "int" - | x -> arity_error x "1" - ) - (* binaires *) + function [Int_const_eff v] -> [Real_const_eff (float_of_int v)] + | [x] -> type_error [x] "int" + | x -> arity_error x "1" + ) + (* binaires *) | ARROW_n -> ( function x -> uneval_error x "->") | WHEN_n -> ( - function x -> uneval_error x "when" - ) - (* pour les operateurs binaire booléens, on a un seul "template" *) + function x -> uneval_error x "when" + ) + (* pour les operateurs binaire booléens, on a un seul "template" *) | AND_n -> ( generic_bin_bool "and" (&&) ) | OR_n -> ( generic_bin_bool "or" (or) ) | XOR_n -> ( generic_bin_bool "xor" (<>) ) | IMPL_n -> ( generic_bin_bool "=>" (function x -> function y -> not x or y)) | EQ_n -> ( compute_eq ) | NEQ_n -> ( - function x -> ( - match (compute_eq x) with - [Bool_const_eff v] -> [Bool_const_eff (not v)] - | x -> x - ) - ) + function x -> ( + match (compute_eq x) with + [Bool_const_eff v] -> [Bool_const_eff (not v)] + | x -> x + ) + ) | LT_n -> ( generic_num_comp "<" (<) (<) ) | LTE_n -> ( generic_num_comp "<=" (<=) (<=) ) | GT_n -> ( generic_num_comp ">" (>) (>) ) @@ -337,27 +337,29 @@ match posop with | PLUS_n -> ( generic_bin_num "+" (+) (+.) ) | SLASH_n -> ( generic_bin_num "/" (/) (/.) ) | TIMES_n -> ( generic_bin_num "*" ( * ) ( *. ) ) - | POWER_n -> raise (Internal_error("op_computer", "unexpected case")) - (* ternaires *) + | POWER_n -> assert false + (* ternaires *) | IF_n -> (compute_if) - (* n-aires *) - | NOR_n -> raise (Internal_error("op_computer", "unexpected case")) - | DIESE_n -> raise (Internal_error("op_computer", "unexpected case")) - | CALL_n s -> raise (Internal_error("op_computer", "unexpected case")) - (* pseudo-unaire : acces structure *) + (* n-aires *) + | NOR_n -> assert false + | DIESE_n -> assert false + | CALL_n s -> assert false + (* pseudo-unaire : acces structure *) | STRUCT_ACCESS_n fid -> ( - function [Struct_const_eff (flst, typ)] -> ( - try [List.assoc fid flst] - with Not_found -> raise (EvalConst_error(sprintf - "%s is not a field of struct %s" fid (string_of_type_eff(typ)) - )) - ) - | [x] -> type_error [x] "struct type" - | x -> arity_error x "1" - ) | - _ -> ( raise (Internal_error ("op_computer", "unexpected case")) - ) -) + function [Struct_const_eff (flst, typ)] -> ( + try [List.assoc fid flst] + with Not_found -> + raise (EvalConst_error( + sprintf + "%s is not a field of struct %s" + fid (string_of_type_eff(typ)) + )) + ) + | [x] -> type_error [x] "struct type" + | x -> arity_error x "1" + ) | + _ -> assert false + ) (*---------------------------------------------------- Utilitaire : @@ -666,17 +668,20 @@ let rec eval_const ) | (* extension homomorphe spéciale ? *) CALL_n s -> ( - raise(Internal_error("eval_by_pos_const", "node call not yet implemented")) - ) | - (* PAS D'EXTENTION HOMOMORPHE IMPLICITE - - Toutes les autres opérations sont des - cas classiques d'extention homomorphe *) - _ -> ( - let effargs = List.flatten (List.map rec_eval_const args) in - (* compute_homomorphic_op (op_computer posop lxm) effargs *) - (op_computer posop lxm) effargs - ) + print_string "*** node call not yet implemented\n"; + assert false + ) + | + (* PAS D'EXTENTION HOMOMORPHE IMPLICITE + + Toutes les autres opérations sont des + cas classiques d'extention homomorphe *) + _ -> + ( + let effargs = List.flatten (List.map rec_eval_const args) in + (* compute_homomorphic_op (op_computer posop lxm) effargs *) + (op_computer posop lxm) effargs + ) ) (* FIN DE : eval_by_pos_const *) (*-------------------------------------*) (* Fonction récursive secondaire *) diff --git a/src/evalType.ml b/src/evalType.ml index b7fc2bbc3798b094287c320054024a71887839da..bf70019310292d54b8b46444c3106002e993bf65 100644 --- a/src/evalType.ml +++ b/src/evalType.ml @@ -53,25 +53,25 @@ Effets de bord : ----------------------------------------------------------------------*) let rec eval_type - (env : id_solver) - (texp : type_exp) -= ( - try ( - match texp.it with - Bool_type_exp -> Bool_type_eff - | Int_type_exp -> Int_type_eff - | Real_type_exp -> Real_type_eff - | Named_type_exp s -> ( - env.id2type s texp.src - ) - | Array_type_exp (elt_texp, szexp) -> ( - let elt_teff = eval_type env elt_texp in - try ( - let sz = EvalConst.eval_array_size env szexp in - Array_type_eff ( elt_teff, sz) - ) with EvalArray_error msg -> raise(EvalType_error msg) - ) - ) with EvalType_error msg -> ( - raise (Compile_error(texp.src, "can't eval type: "^msg)) - ) -) + (env : id_solver) + (texp : type_exp) + = ( + try ( + match texp.it with + Bool_type_exp -> Bool_type_eff + | Int_type_exp -> Int_type_eff + | Real_type_exp -> Real_type_eff + | Named_type_exp s -> ( + env.id2type s texp.src + ) + | Array_type_exp (elt_texp, szexp) -> ( + let elt_teff = eval_type env elt_texp in + try ( + let sz = EvalConst.eval_array_size env szexp in + Array_type_eff ( elt_teff, sz) + ) with EvalArray_error msg -> raise(EvalType_error msg) + ) + ) with EvalType_error msg -> ( + raise (Compile_error(texp.src, "can't eval type: "^msg)) + ) + ) diff --git a/src/expandPack.ml b/src/expandPack.ml index f235223d01c9880c31a8e07b2709a5422a17f125..c859de8b43d7b77c27d6646c32896319835926d1 100644 --- a/src/expandPack.ml +++ b/src/expandPack.ml @@ -40,126 +40,132 @@ let doit mtab pdata = ( PackGiven pg -> ( (* on garde tel-quel ... *) pg - ) | - PackInstance pi -> ( - (* recherche du modèle *) - let mi = try ( - Hashtbl.find mtab pi.pi_model - ) with Not_found -> ( - let msg = Printf.sprintf "bad pack instance: model %s undeclared" - pi.pi_model in - raise ( Compile_error (pdata.src, msg)) - ) in - (*-----------INIT-----------------------------------*) - (* On part du packbody du modèle, dont on duplique les tables :*) - let ctab = Hashtbl.copy mi.it.mo_body.pk_const_table in - let ttab = Hashtbl.copy mi.it.mo_body.pk_type_table in - let otab = Hashtbl.copy mi.it.mo_body.pk_oper_table in - (* liste des nouveaux define ... *) - let newdefs = ref [] in - (* liste des nouveaux provides ... *) - let newprov = ref [] in - (* On met en correspondance les pi_args avec les mo_needs *) - let args = pi.pi_args in - let pars = mi.it.mo_needs in - (*--------------------------------------------------*) - (* la fonction qui traite un couple ... *) - let check_arg p a = ( - (* message d'erreur standard *) - let instance_error () = ( - let msg = Printf.sprintf - "bad pack instance: uncompatible arg passed to %s" - (Lxm.details p.src) - in - raise (Compile_error (a.src, msg)) - ) in - (* on a soit un ident, à checker plus tard, - soit une expression de la bonne nature *) - match (p.it) with - StaticParamType s -> ( - let te = match (a.it) with - StaticArgIdent idr -> ( - Lxm.flagit (Named_type_exp idr) a.src - ) | - StaticArgType x -> x - | _ -> instance_error () - in - let ti = AliasedType (s, te) in - let x = Lxm.flagit (TypeInfo ti) p.src in - newprov := x::!newprov ; - let y = Lxm.flagit ti p.src in - CompUtils.put_in_tab "type" ttab s y ; - newdefs := (TypeItem s)::!newdefs - ) | - StaticParamConst (s,te) -> ( - let ce = match (a.it) with - StaticArgIdent idr -> ( - Syntaxe.leafexp a.src (IDENT_n idr) - ) | - StaticArgConst x -> x - | _ -> instance_error () - in - let ci = DefinedConst (s, Some te, ce) in - let x = Lxm.flagit (ConstInfo ci) p.src in - newprov := x::!newprov ; - let y = Lxm.flagit ci p.src in - CompUtils.put_in_tab "const" ctab s y ; - newdefs := (ConstItem s)::!newdefs - ) | - StaticParamNode (s,inl,outl) -> ( - let ne = match (a.it) with - StaticArgIdent idr -> ( - Lxm.flagit (CallUsrDef (idr,[])) a.src - ) | - StaticArgNode x -> Lxm.flagit x a.src - | _ -> instance_error () - in - let ni = Node { - ni_name = s; - ni_staticlist = [] ; - ni_value = NodeAlias (Some(inl,outl), ne) ; - } in - let x = Lxm.flagit (OperInfo ni) p.src in - newprov := x::!newprov ; - let y = Lxm.flagit ni p.src in - CompUtils.put_in_tab "node" otab s y ; - newdefs := (OperItem s)::!newdefs - ) - ) in - try ( - (*------------TRAITEMENT---------------------------------*) - List.iter2 check_arg pars args ; - (* on fabrique un pack_given valide avec les infos récoltées *) - let body = { - pk_const_table = ctab ; - pk_type_table = ttab ; - pk_oper_table = otab ; - pk_def_list = List.append - (mi.it.mo_body.pk_def_list) - (List.rev !newdefs) - } in - (* les provides du modèle + les nouveaux de newprov *) - (* SAUF SI ON EXPORTE DEJA TOUT ! *) - let prov = match (mi.it.mo_provides) with - Some l -> ( - Some (List.append l (List.rev !newprov)) - ) | None -> None - in - let pg = { - (* les uses du modèle ... *) - pg_uses = mi.it.mo_uses ; - pg_provides = prov ; - pg_body = body ; - } in - pg - ) with Invalid_argument _ -> ( - let msg = Printf.sprintf - "bad pack instance: %d args provided while model %s has %d params" - (List.length args) - pi.pi_model - (List.length pars) - in - raise ( Compile_error (pdata.src, msg)) - ) + ) + | PackInstance pi -> ( + (* recherche du modèle *) + let mi = try ( + Hashtbl.find mtab pi.pi_model + ) with Not_found -> ( + let msg = Printf.sprintf "bad pack instance: model %s undeclared" + pi.pi_model in + raise ( Compile_error (pdata.src, msg)) + ) in + (*-----------INIT-----------------------------------*) + (* On part du packbody du modèle, dont on duplique les tables :*) + let ctab = Hashtbl.copy mi.it.mo_body.pk_const_table in + let ttab = Hashtbl.copy mi.it.mo_body.pk_type_table in + let otab = Hashtbl.copy mi.it.mo_body.pk_oper_table in + (* liste des nouveaux define ... *) + let newdefs = ref [] in + (* liste des nouveaux provides ... *) + let newprov = ref [] in + (* On met en correspondance les pi_args avec les mo_needs *) + let args = pi.pi_args in + let pars = mi.it.mo_needs in + (*--------------------------------------------------*) + (* la fonction qui traite un couple ... *) + let check_arg p a = ( + (* message d'erreur standard *) + let instance_error () = ( + let msg = Printf.sprintf + "bad pack instance: uncompatible arg passed to %s" + (Lxm.details p.src) + in + raise (Compile_error (a.src, msg)) + ) in + (* on a soit un ident, à checker plus tard, + soit une expression de la bonne nature *) + match (p.it) with + StaticParamType s -> ( + let te = match (a.it) with + StaticArgIdent idr -> ( + Lxm.flagit (Named_type_exp idr) a.src + ) + | + StaticArgType x -> x + | _ -> instance_error () + in + let ti = AliasedType (s, te) in + let x = Lxm.flagit (TypeInfo ti) p.src in + newprov := x::!newprov ; + let y = Lxm.flagit ti p.src in + CompUtils.put_in_tab "type" ttab s y ; + newdefs := (TypeItem s)::!newdefs + ) + | + StaticParamConst (s,te) -> ( + let ce = match (a.it) with + StaticArgIdent idr -> ( + Syntaxe.leafexp a.src (IDENT_n idr) + ) + | + StaticArgConst x -> x + | _ -> instance_error () + in + let ci = DefinedConst (s, Some te, ce) in + let x = Lxm.flagit (ConstInfo ci) p.src in + newprov := x::!newprov ; + let y = Lxm.flagit ci p.src in + CompUtils.put_in_tab "const" ctab s y ; + newdefs := (ConstItem s)::!newdefs + ) + | + StaticParamNode (s,inl,outl) -> ( + let ne = match (a.it) with + StaticArgIdent idr -> ( + Lxm.flagit (CallUsrDef (idr,[])) a.src + ) + | + StaticArgNode x -> Lxm.flagit x a.src + | _ -> instance_error () + in + let ni = Node { + ni_name = s; + ni_staticlist = [] ; + ni_value = NodeAlias (Some(inl,outl), ne) ; + } in + let x = Lxm.flagit (OperInfo ni) p.src in + newprov := x::!newprov ; + let y = Lxm.flagit ni p.src in + CompUtils.put_in_tab "node" otab s y ; + newdefs := (OperItem s)::!newdefs + ) + ) in + try ( + (*------------TRAITEMENT---------------------------------*) + List.iter2 check_arg pars args ; + (* on fabrique un pack_given valide avec les infos récoltées *) + let body = { + pk_const_table = ctab ; + pk_type_table = ttab ; + pk_oper_table = otab ; + pk_def_list = List.append + (mi.it.mo_body.pk_def_list) + (List.rev !newdefs) + } in + (* les provides du modèle + les nouveaux de newprov *) + (* SAUF SI ON EXPORTE DEJA TOUT ! *) + let prov = match (mi.it.mo_provides) with + Some l -> ( + Some (List.append l (List.rev !newprov)) + ) + | None -> None + in + let pg = { + (* les uses du modèle ... *) + pg_uses = mi.it.mo_uses ; + pg_provides = prov ; + pg_body = body ; + } in + pg + ) with Invalid_argument _ -> ( + let msg = Printf.sprintf + "bad pack instance: %d args provided while model %s has %d params" + (List.length args) + pi.pi_model + (List.length pars) + in + raise ( Compile_error (pdata.src, msg)) ) + ) ) diff --git a/src/idsolve b/src/idsolve deleted file mode 100644 index 1f5cf9a0bf2b5d3b0ccde9f9dbc8011c20e68f08..0000000000000000000000000000000000000000 --- a/src/idsolve +++ /dev/null @@ -1,73 +0,0 @@ - -Exemple sans provides --------------------- - -Table des symboles de mainPack. -On construit une table string -> info partielle - -Si imported, rien de spécial -Pour local, pas grand chose non plus sauf pour les déclarations qui -ont une inflence sur le ref-ckecking, par exemple : - type enuméré = déclaration implicite de constantes (on traite) - - - -[A] -> uses inter : - on renseigne tous les items exportés par "inter" - -ADD node preced -> imported node inter::preced -ADD const n -> imported const inter::n -ADD type selType -> imported type inter::selType - -[B] -> body : - - 1) type couleurs = enum { bleu, rose, jaune }; - Cas spécial : implique déclation de constantes - -ADD type couleurs -> local type mainPack::couleurs = enum { bleu, rose, jaune }; - -ADD const bleu -> local const mainPack::bleu = enumitem mainPack::couleurs -ADD const rose -> local const mainPack::rose = enumitem mainPack::couleurs -ADD const jaune -> local const mainPack::jaune = enumitem mainPack::couleurs - - 3) type T = int^N; - Rien de spécial - -ADD type T -> local type T = int^N; - - 4) const X = N; - -ADD const X -> local const X = N; - - 5) const N : int = -2 * inter::n; - -ADD const N -> local const N : int = -2 * inter::n; - - 6) node preced <+ infos> - -ADD node preced -> local node preced -=> WARNING SHADOWS imported node inter::preced - - -Exemple avec provides : ------------------------ - - -[A] uses pbool, pint, preal; - -type t -> imported type pbool::t -node fby1 -> imported node pint::fby1 -type t -> imported type pint:: -WARNING SHADOWS !!!! -node fby1 -> imported node pint::fby1 -WARNING SHADOWS !!!! -type t -> imported type preal::t -WARNING SHADOWS !!!! -node fby1 -> imported node preal::fby1 -WARNING SHADOWS !!!! - -[B] provides - -node preced -> local node - - diff --git a/src/lazyCompiler.ml b/src/lazyCompiler.ml index 6e3b597c0557dd7cf0f3ff4349859238e383303c..9ef8791903c1d739b04f39cee0a50247b1e53538 100644 --- a/src/lazyCompiler.ml +++ b/src/lazyCompiler.ml @@ -47,28 +47,28 @@ let recursion_error (lxm : Lxm.t) (stack : string list) = ( (* Structure principale *) type t = { - src_tab : SrcTab.t; - (* table des defs *) - types : (item_key, CompileData.type_eff chkflaged) Hashtbl.t ; - consts : (item_key, CompileData.const_eff chkflaged) Hashtbl.t ; - nodes : (node_key, CompileData.node_eff chkflaged) Hashtbl.t; - (* table des prov *) - prov_types : (item_key, CompileData.type_eff chkflaged) Hashtbl.t ; - prov_consts : (item_key, CompileData.const_eff chkflaged) Hashtbl.t ; - prov_nodes : (node_key, CompileData.node_eff chkflaged) Hashtbl.t + src_tab : SrcTab.t; + (* table des defs *) + types : (item_key, CompileData.type_eff chkflaged) Hashtbl.t ; + consts : (item_key, CompileData.const_eff chkflaged) Hashtbl.t ; + nodes : (node_key, CompileData.node_eff chkflaged) Hashtbl.t; + (* table des prov *) + prov_types : (item_key, CompileData.type_eff chkflaged) Hashtbl.t ; + prov_consts : (item_key, CompileData.const_eff chkflaged) Hashtbl.t ; + prov_nodes : (node_key, CompileData.node_eff chkflaged) Hashtbl.t } let create srcs = ( - let res = { - src_tab = srcs; - types = Hashtbl.create 50; - consts = Hashtbl.create 50; - nodes = Hashtbl.create 50; - prov_types = Hashtbl.create 50; - prov_consts = Hashtbl.create 50; - prov_nodes = Hashtbl.create 50; - } in - res + let res = { + src_tab = srcs; + types = Hashtbl.create 50; + consts = Hashtbl.create 50; + nodes = Hashtbl.create 50; + prov_types = Hashtbl.create 50; + prov_consts = Hashtbl.create 50; + prov_nodes = Hashtbl.create 50; + } in + res ) (*--------------------------------------------------------------------------------------- @@ -89,407 +89,419 @@ Compiler, si besoin, le type identifi l'intérieur du pack correspondant. *) let rec do_type -(this: t) (* l'env global *) -(tk: fullid) (* nom du pack + nom du type *) -(lxm: Lxm.t) (* l'endroit du source qui a provoqué la demande *) -= ( - try ( - match Hashtbl.find this.types tk with - Checked res -> res - | Checking -> raise (Recursion_error (tk, ["type ref "^(Lxm.details lxm)])) - | BadChecked -> raise (BadCheckRef_error) - ) with - Not_found -> ( - Hashtbl.add this.types tk Checking ; - let (p,t) = tk in - let lenv = SrcTab.pack_body_env this.src_tab p in - (* forcément local, sinon erreur *) - let tix = match SymbolTab.find_type lenv t with + (this: t) (* l'env global *) + (tk: fullid) (* nom du pack + nom du type *) + (lxm: Lxm.t) (* l'endroit du source qui a provoqué la demande *) + = ( + try ( + match Hashtbl.find this.types tk with + Checked res -> res + | Checking -> raise (Recursion_error (tk, ["type ref "^(Lxm.details lxm)])) + | BadChecked -> raise (BadCheckRef_error) + ) with + Not_found -> ( + Hashtbl.add this.types tk Checking ; + let (p,t) = tk in + let lenv = SrcTab.pack_body_env this.src_tab p in + (* forcément local, sinon erreur *) + let tix = match SymbolTab.find_type lenv t with + SymbolTab.Here x -> x + | SymbolTab.NotHere _ -> assert false + in + let res = check_type_def this tk lxm lenv p tix in + Hashtbl.replace this.types tk (Checked res) ; + res + ) + ) and + (* + Compiler, si besoin, la version provided d'un type : + *) + do_prov_type this tk lxm = ( + try ( + match Hashtbl.find this.prov_types tk with + Checked res -> res + | Checking -> raise (Recursion_error (tk, ["type ref "^(Lxm.details lxm)])) + | BadChecked -> raise (BadCheckRef_error) + ) with + Not_found -> ( + Hashtbl.add this.prov_types tk Checking ; + let (p,t) = tk in + let res = ( + match SrcTab.pack_prov_env this.src_tab p with + Some penv -> ( + (* forcément local, sinon erreur *) + let tix = match SymbolTab.find_type penv t with SymbolTab.Here x -> x - | SymbolTab.NotHere _ -> ( - raise (Internal_error("LazyCompiler.do_type", "unexpected case")) - ) in - let res = check_type_def this tk lxm lenv p tix in - Hashtbl.replace this.types tk (Checked res) ; - res - ) -) and -(* - Compiler, si besoin, la version provided d'un type : -*) -do_prov_type this tk lxm = ( - try ( - match Hashtbl.find this.prov_types tk with - Checked res -> res - | Checking -> raise (Recursion_error (tk, ["type ref "^(Lxm.details lxm)])) - | BadChecked -> raise (BadCheckRef_error) - ) with - Not_found -> ( - Hashtbl.add this.prov_types tk Checking ; - let (p,t) = tk in - let res = ( - match SrcTab.pack_prov_env this.src_tab p with - Some penv -> ( - (* forcément local, sinon erreur *) - let tix = match SymbolTab.find_type penv t with - SymbolTab.Here x -> x - | SymbolTab.NotHere _ -> ( - raise (Internal_error("LazyCompiler.do_prov_type", "unexpected case")) - ) in - (* on évalue à l'intérieur de provided *) - let prov_type_eff = check_type_def this tk lxm penv p tix in - (* on force la compil de la version body (implémentation) *) - let body_type_eff = do_type this tk lxm in - (* puis, on checke la compatibilité ... *) - match prov_type_eff with - External_type_eff _ -> ( - (* ... abstrait -> no souci *) - prov_type_eff - ) | _ -> ( - (* ... pas abstrait : - on compile la def prov dans l'env body, le résultat doit être - le même que body_type_eff - *) - let lenv = SrcTab.pack_body_env this.src_tab p in - let prov_type_eff_bis = check_type_def this tk lxm lenv p tix in - if ( prov_type_eff_bis = body_type_eff ) then ( - (* ok *) - prov_type_eff - ) else ( - raise(Compile_error ( - tix.src, - "provided type inconsistant with its implementation" - (* Ici ; afficahge + symap ??? *) - )) - ) - ) - ) | - None -> ( - (* pas de provided, on traite en interne ... *) - do_type this tk lxm - ) - ) in - (* on stocke ... *) - Hashtbl.replace this.prov_types tk (Checked res) ; - res - ) -) -(* -Compiler une définition de type -*) -and check_type_def -(this: t) (* l'env global *) -tk lxm (* juste pour les erreurs de récursions *) -(penv: SymbolTab.t) (* table des symboles courante *) -(p: string) (* nom du pack courant *) -(tix: Syntaxe.type_info srcflaged) - = try ( - (* Solveur d'idref pour les les appels à eval_type/eval_const *) - let eval_env = { - id2const = (solve_const_idref this penv p) ; - id2type = (solve_type_idref this penv p) ; - } in - let tinfo = tix.it in + | SymbolTab.NotHere _ -> assert false + in + (* on évalue à l'intérieur de provided *) + let prov_type_eff = check_type_def this tk lxm penv p tix in + (* on force la compil de la version body (implémentation) *) + let body_type_eff = do_type this tk lxm in + (* puis, on checke la compatibilité ... *) + match prov_type_eff with + External_type_eff _ -> ( + (* ... abstrait -> no souci *) + prov_type_eff + ) + | _ -> ( + (* ... pas abstrait : + on compile la def prov dans l'env body, le résultat doit être + le même que body_type_eff + *) + let lenv = SrcTab.pack_body_env this.src_tab p in + let prov_type_eff_bis = check_type_def this tk lxm lenv p tix in + if ( prov_type_eff_bis = body_type_eff ) then ( + (* ok *) + prov_type_eff + ) else ( + raise(Compile_error ( + tix.src, + "provided type inconsistant with its implementation" + (* Ici ; afficahge + symap ??? *) + )) + ) + ) + ) + | + None -> ( + (* pas de provided, on traite en interne ... *) + do_type this tk lxm + ) + ) in + (* on stocke ... *) + Hashtbl.replace this.prov_types tk (Checked res) ; + res + ) + ) + (* + Compiler une définition de type + *) + and check_type_def + (this: t) (* l'env global *) + tk lxm (* juste pour les erreurs de récursions *) + (penv: SymbolTab.t) (* table des symboles courante *) + (p: string) (* nom du pack courant *) + (tix: Syntaxe.type_info srcflaged) + = try ( + (* Solveur d'idref pour les les appels à eval_type/eval_const *) + let eval_env = { + id2const = (solve_const_idref this penv p) ; + id2type = (solve_type_idref this penv p) ; + } in + let tinfo = tix.it in match tinfo with - ExternalType s -> External_type_eff (p,s) - | AliasedType (s, texp) -> - EvalType.eval_type eval_env texp - | EnumType (s, clst) -> ( - let n : fullid = (p,s) in - let putpack x = (p, x.it) in - let ncl : fullid list = List.map putpack clst in + ExternalType s -> External_type_eff (p,s) + | AliasedType (s, texp) -> + EvalType.eval_type eval_env texp + | EnumType (s, clst) -> ( + let n : fullid = (p,s) in + let putpack x = (p, x.it) in + let ncl : fullid list = List.map putpack clst in Enum_type_eff (n, ncl) - ) - | StructType sti -> ( - let make_field (fname : string) = ( - let field_def = Hashtbl.find sti.st_ftable fname in - let teff = EvalType.eval_type - eval_env field_def.it.fd_type in - match field_def.it.fd_value with - None -> ( - (fname, teff, None) - ) | + ) + | StructType sti -> ( + let make_field (fname : string) = ( + let field_def = Hashtbl.find sti.st_ftable fname in + let teff = EvalType.eval_type + eval_env field_def.it.fd_type in + match field_def.it.fd_value with + None -> ( + (fname, teff, None) + ) + | Some vexp -> ( - let veff = EvalConst.eval_const eval_env vexp in - match veff with - [v] -> ( - let tv = type_of_const_eff v in - if (tv = teff) then ( - (fname, teff, Some v) - ) else raise (Compile_error(field_def.src, - Printf.sprintf - " this field is declared as '%s' but evaluated as '%s'" - (string_of_type_eff teff) - (string_of_type_eff tv) - )) - ) | _ -> raise ( Compile_error(field_def.src, - "bad field value: tuple not allowed" - )) + let veff = EvalConst.eval_const eval_env vexp in + match veff with + [v] -> ( + let tv = type_of_const_eff v in + if (tv = teff) then ( + (fname, teff, Some v) + ) else + raise + (Compile_error( + field_def.src, + Printf.sprintf + " this field is declared as '%s' but evaluated as '%s'" + (string_of_type_eff teff) + (string_of_type_eff tv) + )) + ) + | _ -> + raise ( Compile_error( + field_def.src, + "bad field value: tuple not allowed" + )) ) - ) in - let eff_fields = List.map make_field sti.st_flist in - let n = (p, sti.st_name) in + ) in + let eff_fields = List.map make_field sti.st_flist in + let n = (p, sti.st_name) in Struct_type_eff (n, eff_fields) - ) -) with + ) + ) with (* capte et complete/stoppe les recursions *) Recursion_error (root, stack) -> ( - if (root = tk) then ( - (* on stoppe *) - recursion_error tix.src stack - ) else ( - (* on complete la stack *) - raise ( Recursion_error (root, ("type ref "^(Lxm.details lxm))::stack)) + if (root = tk) then ( + (* on stoppe *) + recursion_error tix.src stack + ) else ( + (* on complete la stack *) + raise ( Recursion_error (root, ("type ref "^(Lxm.details lxm))::stack)) + ) ) -) -and -(*--------------------------------------------------------------------------------------- -Compiler les consts (avec éval statique) ------------------------------------------------------------------------------------------ -- do_const : nom absolu -> const_eff, c'est là qu'on tabule les résultat + and + (*--------------------------------------------------------------------------------------- + Compiler les consts (avec éval statique) + ----------------------------------------------------------------------------------------- + - do_const : nom absolu -> const_eff, c'est là qu'on tabule les résultat -- do_prov_const : nom absolu -> const_eff, c'est là qu'on tabule les résultat + - do_prov_const : nom absolu -> const_eff, c'est là qu'on tabule les résultat -- check_const_def : - * const_info + table de symbole et nom du pack courant - * utilisée par do_const et par do_prov_const - * utilise, si nécessaire la compil val_exp -> const_eff - => voir eval_type/eval_const ----------------------------------------------------------------------------------------*) -do_const -(this: t) (* l'env global *) -(ck: fullid) (* nom du pack + nom de la const *) -(lxm: Lxm.t) (* l'endroit du source qui a provoqué la demande *) -= ( - try ( - match Hashtbl.find this.consts ck with - Checked res -> res - | Checking -> raise (Recursion_error (ck, ["const ref "^(Lxm.details lxm)])) - | BadChecked -> raise (BadCheckRef_error) - ) with - Not_found -> ( - Hashtbl.add this.consts ck Checking ; - let (p,c) = ck in - let lenv = SrcTab.pack_body_env this.src_tab p in - (* forcément locale, sinon erreur *) - let cix = match SymbolTab.find_const lenv c with + - check_const_def : + * const_info + table de symbole et nom du pack courant + * utilisée par do_const et par do_prov_const + * utilise, si nécessaire la compil val_exp -> const_eff + => voir eval_type/eval_const + ---------------------------------------------------------------------------------------*) + do_const + (this: t) (* l'env global *) + (ck: fullid) (* nom du pack + nom de la const *) + (lxm: Lxm.t) (* l'endroit du source qui a provoqué la demande *) + = ( + try ( + match Hashtbl.find this.consts ck with + Checked res -> res + | Checking -> raise (Recursion_error (ck, ["const ref "^(Lxm.details lxm)])) + | BadChecked -> raise (BadCheckRef_error) + ) with + Not_found -> ( + Hashtbl.add this.consts ck Checking ; + let (p,c) = ck in + let lenv = SrcTab.pack_body_env this.src_tab p in + (* forcément locale, sinon erreur *) + let cix = match SymbolTab.find_const lenv c with + SymbolTab.Here x -> x + | SymbolTab.NotHere _ -> assert false + in + let res = check_const_def this ck lxm lenv p cix in + Hashtbl.replace this.consts ck (Checked res) ; + res + ) + ) + and + (* + Compiler, si besoin, la version provided d'une const : + les consts provided sont toujours abstraites + *) + do_prov_const this ck lxm = ( + try ( + match Hashtbl.find this.prov_consts ck with + Checked res -> res + | Checking -> raise (Recursion_error (ck, ["const ref "^(Lxm.details lxm)])) + | BadChecked -> raise (BadCheckRef_error) + ) with + Not_found -> ( + Hashtbl.add this.prov_consts ck Checking ; + let (p,c) = ck in + let res = ( + match SrcTab.pack_prov_env this.src_tab p with + Some penv -> ( + (* forcément local, sinon erreur *) + let cix = match SymbolTab.find_const penv c with SymbolTab.Here x -> x - | SymbolTab.NotHere _ -> ( - raise (Internal_error("LazyCompiler.do_const", "unexpected case")) - ) in - let res = check_const_def this ck lxm lenv p cix in - Hashtbl.replace this.consts ck (Checked res) ; - res - ) -) -and -(* - Compiler, si besoin, la version provided d'une const : - les consts provided sont toujours abstraites -*) -do_prov_const this ck lxm = ( - try ( - match Hashtbl.find this.prov_consts ck with - Checked res -> res - | Checking -> raise (Recursion_error (ck, ["const ref "^(Lxm.details lxm)])) - | BadChecked -> raise (BadCheckRef_error) - ) with - Not_found -> ( - Hashtbl.add this.prov_consts ck Checking ; - let (p,c) = ck in - let res = ( - match SrcTab.pack_prov_env this.src_tab p with - Some penv -> ( - (* forcément local, sinon erreur *) - let cix = match SymbolTab.find_const penv c with - SymbolTab.Here x -> x - | SymbolTab.NotHere _ -> ( - raise (Internal_error("LazyCompiler.do_prov_const", "unexpected case")) - ) in - (* on évalue à l'intérieur de provided *) - let prov_const_eff = check_const_def this ck lxm penv p cix in - (* on force la compil de la version body (implémentation) *) - let body_const_eff = do_const this ck lxm in - (* puis, on checke la compatibilité ... *) - match prov_const_eff with - (* les consts provided sont toujours abstraites *) - Extern_const_eff _ -> ( - (* ... abstrait -> no souci *) - let tp = type_of_const_eff prov_const_eff in - let tb = type_of_const_eff body_const_eff in - if (tp = tb) then body_const_eff - else ( - raise(Compile_error ( - cix.src, - "provided constant inconsistant with its implementation" - (* Ici ; affichage + sympa ??? *) - )) - ) - ) | _ -> ( - (* pas abstrait => impossible ! *) - assert false - ) - ) | - None -> ( - (* pas de provided, on traite en interne ... *) - do_const this ck lxm - ) - ) in - (* on stocke ... *) - Hashtbl.replace this.prov_consts ck (Checked res) ; - res - ) -) -and -(* -Compiler une définition de const -*) -check_const_def -(this: t) (* l'env global *) -ck lxm (* juste pour les erreurs de récursion *) -(penv: SymbolTab.t) (* table des symboles courante *) -(p: string) (* nom du pack courant *) -(cix: Syntaxe.const_info srcflaged) -= try ( - (* Solveur d'idref pour les les appels à eval_type/eval_const *) - let eval_env = { - id2const = (solve_const_idref this penv p) ; - id2type = (solve_type_idref this penv p) ; - } in - let cinfo = cix.it in + | SymbolTab.NotHere _ -> assert false + in + (* on évalue à l'intérieur de provided *) + let prov_const_eff = check_const_def this ck lxm penv p cix in + (* on force la compil de la version body (implémentation) *) + let body_const_eff = do_const this ck lxm in + (* puis, on checke la compatibilité ... *) + match prov_const_eff with + (* les consts provided sont toujours abstraites *) + Extern_const_eff _ -> ( + (* ... abstrait -> no souci *) + let tp = type_of_const_eff prov_const_eff in + let tb = type_of_const_eff body_const_eff in + if (tp = tb) then body_const_eff + else ( + raise(Compile_error ( + cix.src, + "provided constant inconsistant with its implementation" + (* Ici ; affichage + sympa ??? *) + )) + ) + ) + | _ -> ( + (* pas abstrait => impossible ! *) + assert false + ) + ) + | + None -> ( + (* pas de provided, on traite en interne ... *) + do_const this ck lxm + ) + ) in + (* on stocke ... *) + Hashtbl.replace this.prov_consts ck (Checked res) ; + res + ) + ) + and + (* + Compiler une définition de const + *) + check_const_def + (this: t) (* l'env global *) + ck lxm (* juste pour les erreurs de récursion *) + (penv: SymbolTab.t) (* table des symboles courante *) + (p: string) (* nom du pack courant *) + (cix: Syntaxe.const_info srcflaged) + = try ( + (* Solveur d'idref pour les les appels à eval_type/eval_const *) + let eval_env = { + id2const = (solve_const_idref this penv p) ; + id2type = (solve_type_idref this penv p) ; + } in + let cinfo = cix.it in match cinfo with - ExternalConst (id, texp) -> ( - Extern_const_eff ((p,id), EvalType.eval_type eval_env texp) - ) | - EnumConst (id, texp) -> ( + ExternalConst (id, texp) -> ( + Extern_const_eff ((p,id), EvalType.eval_type eval_env texp) + ) + | + EnumConst (id, texp) -> ( Enum_const_eff ((p,id), EvalType.eval_type eval_env texp) - ) | - DefinedConst (id, texp_opt, vexp ) -> ( + ) + | + DefinedConst (id, texp_opt, vexp ) -> ( match (EvalConst.eval_const eval_env vexp) with - [ceff] -> ( - match texp_opt with + [ceff] -> ( + match texp_opt with None -> ( ceff) | Some texp -> ( - let tdecl = EvalType.eval_type eval_env texp in - let teff = type_of_const_eff ceff in - if (tdecl = teff ) then ceff - else raise ( Compile_error (cix.src , Printf.sprintf - " this constant is declared as '%s' but evaluated as '%s'" - (string_of_type_eff tdecl) - (string_of_type_eff teff) - )) - ) - ) | - _ -> raise (Compile_error (cix.src, "bad constant value: tuple not allowed")) - ) -) with Recursion_error (root, stack) -> ( - (* capte et complete/stoppe les recursions *) - if (root = ck) then ( - recursion_error cix.src stack - ) else ( - (* on complete la stack *) - raise ( Recursion_error (root, ("const ref "^(Lxm.details lxm))::stack)) - ) -) -and -(*--------------------------------------------------------------------------------------- -Résolution des référence de types et de constantes ------------------------------------------------------------------------------------------ -Les premiers arguments sont destinés à être currifiés : - on obtient alors un "idref -> type_eff" ----------------------------------------------------------------------------------------*) -solve_type_idref -(this: t) (* l'env global *) -(penv: SymbolTab.t) (* table des symboles courante *) -(curpack: string) (* nom du pack courant *) -(idr: Syntaxe.idref) -(lxm: Lxm.t) - = ( - let s = Syntaxe.name_of_idref idr in + let tdecl = EvalType.eval_type eval_env texp in + let teff = type_of_const_eff ceff in + if (tdecl = teff ) then ceff + else raise ( Compile_error (cix.src , Printf.sprintf + " this constant is declared as '%s' but evaluated as '%s'" + (string_of_type_eff tdecl) + (string_of_type_eff teff) + )) + ) + ) + | + _ -> raise (Compile_error (cix.src, "bad constant value: tuple not allowed")) + ) + ) with Recursion_error (root, stack) -> ( + (* capte et complete/stoppe les recursions *) + if (root = ck) then ( + recursion_error cix.src stack + ) else ( + (* on complete la stack *) + raise ( Recursion_error (root, ("const ref "^(Lxm.details lxm))::stack)) + ) + ) + and + (*--------------------------------------------------------------------------------------- + Résolution des référence de types et de constantes + ----------------------------------------------------------------------------------------- + Les premiers arguments sont destinés à être currifiés : + on obtient alors un "idref -> type_eff" + ---------------------------------------------------------------------------------------*) + solve_type_idref + (this: t) (* l'env global *) + (penv: SymbolTab.t) (* table des symboles courante *) + (curpack: string) (* nom du pack courant *) + (idr: Syntaxe.idref) + (lxm: Lxm.t) + = ( + let s = Syntaxe.name_of_idref idr in match (Syntaxe.pack_of_idref idr) with - Some p -> ( - (* référence absolue -> on refile le boulot à this *) - do_prov_type this (p, s) lxm - ) | - None -> ( - (* on passe par penv pour savoir quoi faire ... *) - try ( - match (SymbolTab.find_type penv s) with + Some p -> ( + (* référence absolue -> on refile le boulot à this *) + do_prov_type this (p, s) lxm + ) | + None -> ( + (* on passe par penv pour savoir quoi faire ... *) + try ( + match (SymbolTab.find_type penv s) with SymbolTab.Here _ -> ( - do_type this (curpack, s) lxm + do_type this (curpack, s) lxm ) | - SymbolTab.NotHere fid -> ( - (* référence absolue -> on refile le boulot à this *) - do_prov_type this fid lxm - ) - ) with Not_found -> ( - raise(Compile_error(lxm,"unbounded type ident")) + SymbolTab.NotHere fid -> ( + (* référence absolue -> on refile le boulot à this *) + do_prov_type this fid lxm + ) + ) with Not_found -> ( + raise(Compile_error(lxm,"unbounded type ident")) + ) ) - ) -) and -solve_const_idref -(this: t) (* l'env global *) -(penv: SymbolTab.t) (* table des symboles courante *) -(curpack: string) (* nom du pack courant *) -(idr: Syntaxe.idref) -(lxm: Lxm.t) -= ( - let s = Syntaxe.name_of_idref idr in + ) and + solve_const_idref + (this: t) (* l'env global *) + (penv: SymbolTab.t) (* table des symboles courante *) + (curpack: string) (* nom du pack courant *) + (idr: Syntaxe.idref) + (lxm: Lxm.t) + = ( + let s = Syntaxe.name_of_idref idr in match (Syntaxe.pack_of_idref idr) with - Some p -> ( - (* référence absolue -> on refile le boulot à this *) - do_prov_const this (p, s) lxm - ) | - None -> ( -(* Printf.printf "solve_const_idref %s\n" s ; *) - (* on passe par penv pour savoir quoi faire ... *) - try ( - match (SymbolTab.find_const penv s) with + Some p -> ( + (* référence absolue -> on refile le boulot à this *) + do_prov_const this (p, s) lxm + ) | + None -> ( + (* Printf.printf "solve_const_idref %s\n" s ; *) + (* on passe par penv pour savoir quoi faire ... *) + try ( + match (SymbolTab.find_const penv s) with SymbolTab.Here _ -> ( - do_const this (curpack, s) lxm + do_const this (curpack, s) lxm ) | - SymbolTab.NotHere fid -> ( - (* référence absolue -> on refile le boulot à this *) - do_prov_const this fid lxm - ) - ) with Not_found -> ( - raise(Compile_error(lxm,"unbounded const ident")) + SymbolTab.NotHere fid -> ( + (* référence absolue -> on refile le boulot à this *) + do_prov_const this fid lxm + ) + ) with Not_found -> ( + raise(Compile_error(lxm,"unbounded const ident")) + ) ) - ) -) + ) -let do_node this nodek = ( - raise (Internal_error ("LazyCompiler.do_node", "not implemented")) -) +let do_node this nodek = assert false + +(*------------------------------------------------------------------------- + Test/debug +---------------------------------------------------------------------------*) -(*----------------------------------------------------------------------------------- -Test/debug ------------------------------------------------------------------------------------*) let test_types (this: t) = ( - (* src_tab : SrcTab.t; *) - let testpack pn = ( - Printf.printf "package %s\n" pn ; - let stab = match SrcTab.pack_prov_env this.src_tab pn with - Some tab -> tab - | None -> SrcTab.pack_body_env this.src_tab pn - in - let testtype n v = ( - match v with - SymbolTab.Here cix -> ( - (* Printf.printf " const %s \n" n *) - let teff = do_prov_type this (pn,n) Lxm.dummy in - Printf.printf " type %s -> %s\n" n - (string_of_type_eff teff) - ) | - SymbolTab.NotHere fid -> ( - Printf.printf " type %s -> %s\n" n (string_of_fullid fid) ; - ) - ) in - SymbolTab.iter_types stab testtype - ) in - let plist = SrcTab.pack_list this.src_tab in - List.iter testpack plist + (* src_tab : SrcTab.t; *) + let testpack pn = ( + Printf.printf "package %s\n" pn ; + let stab = match SrcTab.pack_prov_env this.src_tab pn with + Some tab -> tab + | None -> SrcTab.pack_body_env this.src_tab pn + in + let testtype n v = ( + match v with + SymbolTab.Here cix -> ( + (* Printf.printf " const %s \n" n *) + let teff = do_prov_type this (pn,n) Lxm.dummy in + Printf.printf " type %s -> %s\n" n + (string_of_type_eff teff) + ) + | + SymbolTab.NotHere fid -> ( + Printf.printf " type %s -> %s\n" n (string_of_fullid fid) ; + ) + ) + in + SymbolTab.iter_types stab testtype + ) + in + let plist = SrcTab.pack_list this.src_tab in + List.iter testpack plist ) diff --git a/src/lexer.mll b/src/lexer.mll index 0cb5fed91a264ac29a5a02968a5fa89aa6248076..3c84741f6f705455d013be19d0183c867cf3d916 100644 --- a/src/lexer.mll +++ b/src/lexer.mll @@ -41,6 +41,7 @@ Hashtbl.add keywords "not" (function x -> TK_NOT x) ;; Hashtbl.add keywords "operator" (function x -> TK_OPERATOR x) ;; Hashtbl.add keywords "or" (function x -> TK_OR x) ;; Hashtbl.add keywords "nor" (function x -> TK_NOR x) ;; +Hashtbl.add keywords "fby" (function x -> TK_FBY x) ;; Hashtbl.add keywords "pre" (function x -> TK_PRE x) ;; Hashtbl.add keywords "real" (function x -> TK_REAL x) ;; Hashtbl.add keywords "returns" (function x -> TK_RETURNS x) ;; @@ -123,6 +124,7 @@ let token_code tk = ( | TK_PCENT lxm -> ("TK_PCENT" , lxm) | TK_PLUS lxm -> ("TK_PLUS" , lxm) | TK_POWER lxm -> ("TK_POWER" , lxm) + | TK_FBY lxm -> ("TK_FBY" , lxm) | TK_PRE lxm -> ("TK_PRE" , lxm) | TK_RCONST lxm -> ("TK_RCONST" , lxm) | TK_REAL lxm -> ("TK_REAL" , lxm) @@ -182,14 +184,6 @@ rule lexer = parse handle_lexical_error comment_line lexbuf; lexer lexbuf } -(* constantes entières et réelles *) - | chiffres { TK_ICONST (Lxm.make lexbuf ) } - - | chiffres (exposant) { TK_RCONST (Lxm.make lexbuf ) } - - | chiffres '.' (chiffres)? (exposant)? { TK_RCONST (Lxm.make lexbuf ) } - - | '.' chiffres (exposant)? { TK_RCONST (Lxm.make lexbuf ) } (* mots-clé débutant par un séparateurs (prioritaires) *) | "->" { TK_ARROW ( Lxm.make lexbuf ) } @@ -234,6 +228,15 @@ rule lexer = parse let lxm = Lxm.make lexbuf in TK_LONGIDENT (lxm) } +(* constantes entières et réelles *) + | chiffres { TK_ICONST (Lxm.make lexbuf ) } + + | chiffres (exposant) { TK_RCONST (Lxm.make lexbuf ) } + + | chiffres '.' (chiffres)? (exposant)? { TK_RCONST (Lxm.make lexbuf ) } + + | '.' chiffres (exposant)? { TK_RCONST (Lxm.make lexbuf ) } + (* mot-clé ou identificateur *) | ['A'-'Z' 'a'-'z'] ['A'-'Z' 'a'-'z' '\'' '_' '0'-'9'] * { diff --git a/src/main.ml b/src/main.ml index 52e40f987838c2071fcb42f1c5d86eb87f35be1a..4e678ffa3f7860776da0795806a3abc37244b651 100644 --- a/src/main.ml +++ b/src/main.ml @@ -1,3 +1,4 @@ +(** Time-stamp: <modified the 16/11/2007 (at 10:10) by Erwan Jahier> *) open Verbose open Syntaxe @@ -10,7 +11,8 @@ open Lexer open Format open Dump -let usage_msg = "usage: "^(Version.tool)^" [options] <file> | "^(Version.tool)^" -help" +let usage_msg = + "usage: "^(Version.tool)^" [options] <file> | "^(Version.tool)^" -help" (*--------------------------------------------------------- Les args sont des variables GLOBALES @@ -91,7 +93,6 @@ let lus_load lexbuf = ( (* Dump d'un packbody *) let dump_body (pkg: Syntaxe.packbody) = ( - let os = Format.formatter_of_out_channel stdout in Dump.dump_packbody os pkg ) @@ -110,11 +111,11 @@ let dump_ns (ns: Syntaxe.namespace) = ( ) ) -(* - Lance le parser et renvoie la liste name-spaces d'entrée. - Dans le cas d'un fichier sans package, on lui donne - comme nom le basename de infile. -*)q + (* + Lance le parser et renvoie la liste name-spaces d'entrée. + Dans le cas d'un fichier sans package, on lui donne + comme nom le basename de infile. + *) let get_source_list infile lexbuf = ( match (lus_load lexbuf) with PRPackBody pbdy -> @@ -154,29 +155,28 @@ let main = ( (* Compile.compile (pkg_load lexbuf) _LPP_ARGS.main_node *) let nsl = get_source_list _LPP_ARGS.infile lexbuf in let nodidf = Syntaxe.idref_of_string _LPP_ARGS.main_node in - let res = Compile.doit nsl nodidf in - () + Compile.doit nsl nodidf ) ) with Sys_error(s) -> - ( - prerr_string (s^"\n") ; - exit 1 - ) - | - Global_error s -> ( - print_global_error s ; - exit 1 - ) - | - Parse_error -> ( - print_compile_error (Lxm.last_made ()) "syntax error"; + prerr_string (s^"\n") ; + exit 1 + | Global_error s -> + print_global_error s ; exit 1 - ) - | Compile_error(lxm,msg) -> ( + | Parse_error -> + print_compile_error (Lxm.last_made ()) "syntax error"; + exit 1 + | Compile_error(lxm,msg) -> print_compile_error lxm msg ; exit 1 - ) + | Assert_failure (file, line, col) -> + prerr_string ( + "\n*** An internal error occured in file "^ file ^ ", line " ^ + (string_of_int line) ^ ", column " ^ + (string_of_int col) ^ "\n") ; + exit 2 + (* | Compile_node_error(nkey,lxm,msg) -> ( *) (* print_compile_node_error nkey lxm msg ; *) (* exit 1 *) @@ -185,8 +185,5 @@ let main = ( (* print_global_node_error nkey msg ; *) (* exit 1 *) (* ) *) - | Internal_error (fname,msg) -> ( - print_internal_error fname msg ; - exit 1 - ) + ) diff --git a/src/netList.ml b/src/netList.ml deleted file mode 100644 index e63b2b5fe8ac66ef4a06041833a4884aeddfdad9..0000000000000000000000000000000000000000 --- a/src/netList.ml +++ /dev/null @@ -1,21 +0,0 @@ - -(*---------------------------------------------------------------------- - module : NetList - date : ------------------------------------------------------------------------- -----------------------------------------------------------------------*) - -(* un wire est la ieme sortie d'une opbox *) -type NetWire = { - wire_order : int; - wire_source : NetBox; - wire_type : type_eff; - wire_clock : NetWire; -} - -and NetBox = { - box_oper : Operation; - box_ins : NetWire list; - box_outs : NetWire list; -} - diff --git a/src/parser.mly b/src/parser.mly index 5277abfd56fb0ad82248a9c4ca2e48ff9520786a..af126450777736dbca4e07e89fd75c3f12b05ae0 100644 --- a/src/parser.mly +++ b/src/parser.mly @@ -15,14 +15,15 @@ let def_list = ref [] (* Interface avec Syntaxe *) let idref_of_lxm lxm = ( - try ( - Lxm.flagit ( - Syntaxe.idref_of_string (Lxm.str lxm) - ) lxm - ) with _ -> ( - raise (Internal_error ("Parser.idref_of_lxm", (Lxm.str lxm))) - ) -) + try ( + Lxm.flagit ( + Syntaxe.idref_of_string (Lxm.str lxm) + ) lxm + ) with _ -> + print_string ("Parser.idref_of_lxm" ^(Lxm.str lxm)); + assert false + ) + (*--------------------------------------------------------------------- @@ -82,116 +83,116 @@ let treat_aliased_type lxm typexp = ( de constantes enum au niveau syntaxique *) let treat_enum_type - (typlxm: Lxm.t) (* le lexeme du type *) - (cstlxmlst: Lxm.t list) (* liste des lexemes des valeurs *) -= (* sortie: unit *) -( - (* On anticipe l'expression de type *) - let tir = idref_of_lxm typlxm in - let typexp = Lxm.flagit (Named_type_exp tir.it) tir.src - in - (* OBSOLETE ET DANGEREUX : - Il ne faut pas traiter les decl - de constantes enum au niveau syntaxique - - let put_in_const_tab - (cstlxm: Lxm.t) - = (* output: string *) - ( - let cststr = (Lxm.str cstlxm) in - Syntaxe.add_info const_table - "constant" cstlxm (EnumConst (cststr, typexp)); - lexeme_to_string_flaged cstlxm - ) in - (* On mappe cette fonction pour avoir la liste des noms *) - let cstnamelist = List.map put_in_const_tab cstlxmlst in - *) - let cstnamelist = List.map lexeme_to_string_flaged cstlxmlst in - (* Enfin, on introduit la définition du type *) - let typstr = Lxm.str typlxm in - Syntaxe.add_info type_table - "type" typlxm (EnumType (typstr, cstnamelist)); - def_list := (TypeItem typstr) :: !def_list -) + (typlxm: Lxm.t) (* le lexeme du type *) + (cstlxmlst: Lxm.t list) (* liste des lexemes des valeurs *) + = (* sortie: unit *) + ( + (* On anticipe l'expression de type *) + + (* OBSOLETE ET DANGEREUX : + Il ne faut pas traiter les decl + de constantes enum au niveau syntaxique + + let tir = idref_of_lxm typlxm in + let typexp = Lxm.flagit (Named_type_exp tir.it) tir.src in + let put_in_const_tab + (cstlxm: Lxm.t) + = (* output: string *) + ( + let cststr = (Lxm.str cstlxm) in + Syntaxe.add_info const_table + "constant" cstlxm (EnumConst (cststr, typexp)); + lexeme_to_string_flaged cstlxm + ) in + (* On mappe cette fonction pour avoir la liste des noms *) + let cstnamelist = List.map put_in_const_tab cstlxmlst in + *) + let cstnamelist = List.map lexeme_to_string_flaged cstlxmlst in + (* Enfin, on introduit la définition du type *) + let typstr = Lxm.str typlxm in + Syntaxe.add_info type_table + "type" typlxm (EnumType (typstr, cstnamelist)); + def_list := (TypeItem typstr) :: !def_list + ) (**********************************) (* Traitement d'un type structure *) (**********************************) let make_struct_type_info - (typlxm : Lxm.t) (* le lexeme du nom de type *) - (flexlist: id_valopt list) (* la liste des champs *) -= (* sortie: struct_type_info *) -( - (* On anticipe la construction de la table de champs *) - let ftab = Hashtbl.create 50 in - (* Traitement d'un champ élémentaire *) - let put_in_ftab ( - (lx : Lxm.t), (* le lexeme du champ *) - (ty : type_exp), (* le type du champ *) - (va : val_exp option) (* l'eventuelle valeur *) - ) = (* sortie: string *) - ( - (* fabrique le field_info *) - let lxstr = Lxm.str lx in - let fi = { fd_name = lxstr ; fd_type = ty ; fd_value =va } in - (* le range dans ftab *) - Syntaxe.add_info ftab "field" lx fi ; - (* renvoie juste le nom du champs *) - lxstr - ) in - (* remplissage de ftab et recup. de la liste de noms de champ *) - let flst = List.map put_in_ftab flexlist in - (* construction du type_info *) - let typstr = Lxm.str typlxm in - { st_name = typstr ; st_flist = flst ; st_ftable = ftab } -) + (typlxm : Lxm.t) (* le lexeme du nom de type *) + (flexlist: id_valopt list) (* la liste des champs *) + = (* sortie: struct_type_info *) + ( + (* On anticipe la construction de la table de champs *) + let ftab = Hashtbl.create 50 in + (* Traitement d'un champ élémentaire *) + let put_in_ftab ( + (lx : Lxm.t), (* le lexeme du champ *) + (ty : type_exp), (* le type du champ *) + (va : val_exp option) (* l'eventuelle valeur *) + ) = (* sortie: string *) + ( + (* fabrique le field_info *) + let lxstr = Lxm.str lx in + let fi = { fd_name = lxstr ; fd_type = ty ; fd_value =va } in + (* le range dans ftab *) + Syntaxe.add_info ftab "field" lx fi ; + (* renvoie juste le nom du champs *) + lxstr + ) in + (* remplissage de ftab et recup. de la liste de noms de champ *) + let flst = List.map put_in_ftab flexlist in + (* construction du type_info *) + let typstr = Lxm.str typlxm in + { st_name = typstr ; st_flist = flst ; st_ftable = ftab } + ) let treat_struct_type - (typlxm : Lxm.t) (* le lexeme du nom de type *) - (flexlist: id_valopt list) (* la liste des champs *) -= (* sortie: unit *) -( - let typstr = Lxm.str typlxm in - let typinfo = StructType - (make_struct_type_info typlxm flexlist) - in - (* met l'info dans la table des types *) - Syntaxe.add_info type_table "type" typlxm typinfo ; - def_list := (TypeItem typstr) :: !def_list -) + (typlxm : Lxm.t) (* le lexeme du nom de type *) + (flexlist: id_valopt list) (* la liste des champs *) + = (* sortie: unit *) + ( + let typstr = Lxm.str typlxm in + let typinfo = StructType + (make_struct_type_info typlxm flexlist) + in + (* met l'info dans la table des types *) + Syntaxe.add_info type_table "type" typlxm typinfo ; + def_list := (TypeItem typstr) :: !def_list + ) (*************************************) (* Traitement d'une function externe *) (*************************************) let treat_external_func - (funclxm : Lxm.t) (* le lexeme de la func *) - (inpars : ((Lxm.t list) * type_exp) list) (* liste des ins *) - (outpars : ((Lxm.t list) * type_exp) list) (* liste des outs *) -= (* sortie: unit *) -( - (* N.B. pas de src_info pour les params formels de fonctions *) - let make_a_param - (lxm : Lxm.t) (* le lexeme du param *) - (typ : type_exp) (* le type du param *) + (funclxm : Lxm.t) (* le lexeme de la func *) + (inpars : ((Lxm.t list) * type_exp) list) (* liste des ins *) + (outpars : ((Lxm.t list) * type_exp) list) (* liste des outs *) + = (* sortie: unit *) + ( + (* N.B. pas de src_info pour les params formels de fonctions *) + let make_a_param + (lxm : Lxm.t) (* le lexeme du param *) + (typ : type_exp) (* le type du param *) = (* sortie: (string option * type_exp *) - ( - ( Some((Lxm.str lxm)) , typ ) - ) in - (* fabrique la liste à plat des inputs *) - let flat_ins = Utils.flat_flaged_list inpars make_a_param in - (* fabrique la liste à plat des outputs *) - let flat_outs = Utils.flat_flaged_list outpars make_a_param in - (* fabrique le func_info *) - let funcstr = Lxm.str funclxm in - let finfo = { - fn_name = funcstr; - fn_inpars = flat_ins; - fn_outpars = flat_outs - } in - (* range l'info correspondante dans la table des oper *) - Syntaxe.add_info oper_table "function or node" funclxm (Func finfo) ; - def_list := (OperItem funcstr) :: !def_list -) + ( + ( Some((Lxm.str lxm)) , typ ) + ) in + (* fabrique la liste à plat des inputs *) + let flat_ins = Utils.flat_flaged_list inpars make_a_param in + (* fabrique la liste à plat des outputs *) + let flat_outs = Utils.flat_flaged_list outpars make_a_param in + (* fabrique le func_info *) + let funcstr = Lxm.str funclxm in + let finfo = { + fn_name = funcstr; + fn_inpars = flat_ins; + fn_outpars = flat_outs + } in + (* range l'info correspondante dans la table des oper *) + Syntaxe.add_info oper_table "function or node" funclxm (Func finfo) ; + def_list := (OperItem funcstr) :: !def_list + ) (********************************************) (* Déclarations de vars et params de noeuds *) @@ -208,17 +209,17 @@ type typed_ids = (Lxm.t list * type_exp) and clocked_ids = (typed_ids list * clock_exp) let rec clocked_ids_to_var_infos vnat vdefs = ( - let makevar lxm te ce = ( - Lxm.flagit - { - va_nature = vnat ; - va_name = (Lxm.str lxm) ; - va_type = te ; - va_clock = ce ; - } - lxm - ) in - flat_twice_flaged_list vdefs makevar + let makevar lxm te ce = ( + Lxm.flagit + { + va_nature = vnat ; + va_name = (Lxm.str lxm) ; + va_type = te ; + va_clock = ce ; + } + lxm + ) in + flat_twice_flaged_list vdefs makevar ) let treat_node_decl @@ -237,7 +238,7 @@ let treat_node_decl let vtable = Hashtbl.create 50 in (*------------------*) (* Procedure de traitement des in, out ou loc *) - (* elle est juste paramétrée par la fonction à fabriquer des var_nature *) + (* elle est juste paramétrée par la fonction à fabriquer des var_nature *) (*------------------*) let rec treat_vars (vdefs: clocked_ids list) (* la liste à traiter *) @@ -258,10 +259,10 @@ let treat_node_decl in (* traitement des entrées *) let make_input nm ty ck = ( - { va_nature = VarInput; va_name = nm; va_type = ty; va_clock = ck } + { va_nature = VarInput; va_name = nm; va_type = ty; va_clock = ck } ) in let innames = treat_vars indefs make_input in - (* traitement des sorties *) + (* traitement des sorties *) let make_output nm ty ck = ( { va_nature = VarOutput; va_name = nm; va_type = ty; va_clock = ck } ) in @@ -341,7 +342,6 @@ let flat_output_ids (vdefs: clocked_ids list) = ( %token <Lxm.t> TK_AND %token <Lxm.t> TK_ARROW -%token <Lxm.t> TK_ARROW %token <Lxm.t> TK_ASSERT %token <Lxm.t> TK_BAR %token <Lxm.t> TK_BOOL @@ -391,6 +391,7 @@ let flat_output_ids (vdefs: clocked_ids list) = ( %token <Lxm.t> TK_PLUS %token <Lxm.t> TK_POWER %token <Lxm.t> TK_PRE +%token <Lxm.t> TK_FBY %token <Lxm.t> TK_RCONST %token <Lxm.t> TK_REAL %token <Lxm.t> TK_RETURNS @@ -436,6 +437,7 @@ let flat_output_ids (vdefs: clocked_ids list) = ( %left TK_HAT TK_FIELD TK_DOT %right TK_OPEN_BRACKET TK_OPEN_BRACE TK_SEMICOL %right TK_COMA +%left TK_FBY /* sxEntry point */ %start sxLusFile @@ -850,7 +852,8 @@ sxLocalNode: TK_NODE sxIdent sxStaticParams sxParams TK_RETURNS sxParams sxOptSemicol sxLocals sxBody sxOptEndNode { treat_node_decl $2 $3 $4 $6 $8 (fst $9) (snd $9) } -| TK_NODE sxIdent sxStaticParams sxNodeProfileOpt TK_EQ sxEffectiveNode sxOptSemicol +| TK_NODE sxIdent sxStaticParams sxNodeProfileOpt TK_EQ sxEffectiveNode + sxOptSemicol { treat_node_alias $2 $3 $4 $6 } ; @@ -1047,6 +1050,7 @@ sxExpression: | TK_INT sxExpression { unexp $1 REAL2INT_n $2 } | TK_REAL sxExpression { unexp $1 INT2REAL_n $2 } /* binaires */ + | sxExpression TK_FBY sxExpression { binexp $2 FBY_n $1 $3 } | sxExpression TK_ARROW sxExpression { binexp $2 ARROW_n $1 $3 } | sxExpression TK_WHEN sxExpression { binexp $2 WHEN_n $1 $3 } | sxExpression TK_AND sxExpression { binexp $2 AND_n $1 $3 } @@ -1107,6 +1111,7 @@ sxExpression: sxPredefOp: | TK_NOT { {src=$1; it=NOT_n} } + | TK_FBY { {src=$1; it=FBY_n} } | TK_PRE { {src=$1; it=PRE_n} } | TK_CURRENT{ {src=$1; it=CURRENT_n} } | TK_INT { {src=$1; it=REAL2INT_n} } @@ -1167,35 +1172,36 @@ sxStaticArgList: /* Faut se tordre l'esprit ici ! - la nature est explicite, -- la nature est immediate (type, const ou node predefini) -- la nature est sans ambiguite const (expressions simples) -- la nature est compile-time (juste un ident, a résoudre) -*/ -sxStaticArg: - /* nature explicite */ - TK_TYPE sxType - { {src=$1 ; it=StaticArgType $2 } } + - la nature est immediate (type, const ou node predefini) + - la nature est sans ambiguite const (expressions simples) + - la nature est compile-time (juste un ident, a résoudre) + */ + sxStaticArg: + /* nature explicite */ + TK_TYPE sxType + { {src=$1 ; it=StaticArgType $2 } } | TK_CONST sxExpression - { {src=$1 ; it=StaticArgConst $2 } } + { {src=$1 ; it=StaticArgConst $2 } } | TK_NODE sxEffectiveNode - { {src=$1 ; it=StaticArgNode $2.it } } - /* un ident OU une expression simple (à résoudre) */ - /* c'est au retour qu'on choisit */ + { {src=$1 ; it=StaticArgNode $2.it } } + /* un ident OU une expression simple (à résoudre) */ + /* c'est au retour qu'on choisit */ | sxSimpleExp - { - match $1 with - CallByPos (op, x) -> ( - match op.it with + { + match $1 with + CallByPos (op, x) -> ( + match op.it with IDENT_n idref -> ( - {src=op.src ; it=StaticArgIdent idref } + {src=op.src ; it=StaticArgIdent idref } )| - _ -> ( - {src=op.src ; it=StaticArgConst $1} - ) - ) | _ -> ( - raise (Internal_error ("parser", "unexpected static argument" )) - ) - } + _ -> ( + {src=op.src ; it=StaticArgConst $1} + ) + ) + | _ -> + print_string "*** unexpected static argument\n"; + assert false + } /* un type sans ambiguite */ | sxSurelyType { {src=$1.src; it=StaticArgType $1} } diff --git a/src/srcTab.ml b/src/srcTab.ml index 732a7da334343a2320c696a5edd60e499a090234..9393cff0f2b0b9ee7179fdd4677e1345e9e482b8 100644 --- a/src/srcTab.ml +++ b/src/srcTab.ml @@ -1,97 +1,104 @@ +(** Time-stamp: <modified the 16/11/2007 (at 11:52) by Erwan Jahier> *) -(*---------------------------------------------------------------------- -MODULE : SrcTab ------------------------------------------------------------------------- -DESCRIPTION : +(** + Table des infos sources : une couche au dessus de Syntaxe pour mieux + ranger les packages et les modèles et faciliter la résolution des + identificateurs. -Table des infos sources : une couche au dessus de Syntaxe pour -mieux ranger les packages et les modèles et faciliter la résolution -des identificateurs. + 1) expansion des modèles + 2) pour chaque package instancié, 2 tables de symboles : -1) expansion des modèles + - une pour la vision "exportée" + - une pour la vision interne. Chaque table de symbole, 3 "espaces" + de noms (par nature d'items, type/const/oper) -2) pour chaque pack instancié, 2 tables de symboles : - - une pour la vision "exportée" - - une pour la vision interne - Chaque table de symbole, 3 "espaces" de noms - (par nature d'items, type/const/oper) + Ces tables sont destinées à résoudre les références simples, elle + associent à une string : + + - la definition syntaxique de l'item associé s'il est local + - l'identificateur absolu (package+nom) si il est externe +*) - Ces tables sont destinées à résoudre les références - simples, elle associent à une string : - - la def syntaxique de l'item associé si il est local - - l'ident absolu (pack+nom) si il est externe -----------------------------------------------------------------------*) open Lxm open CompUtils open Syntaxe open Errors -(**************************************************************************** -TYPE PRINCIPAL : t -- package et modèles sont rangés dans des tables, ce qui permet - notamment de traiter les erreurs de multi-déclarations - (st_raw_mod_tab et st_raw_pack_tab) +(** Package manager -- les instances de modeles sont traitées pour n'avoir plus - que des ``pack_given'' (i.e. pack avec provide + body) + Un package manager (pack_mng) contient les infos ``source'' du + package + DEUX tables de symboles, correspondant aux deux contextes + possibles de compilation : -- à chaque pack (éventuellement expansé) est associé un manager - pour faciliter l'accès à ses infos (pack_mng) + - compilation du provide + - compilation du body -****************************************************************************) -type t = { - (* liste + tables des sources bruts *) - st_list : Syntaxe.namespace list ; - st_raw_mod_tab : (string , model_info srcflaged) Hashtbl.t ; - st_raw_pack_tab : (string , pack_info srcflaged) Hashtbl.t ; - (* table des managers de packs *) - st_pack_mng_tab : (string , pack_mng) Hashtbl.t ; -} and -(**************************************************************************** -TYPES SECONDAIRES : pack_mng - - Un pack manager (pack_mng) contient les infos ``source'' du -package + DEUX tables de symboles, correspondant aux deux -contextes possibles de compilation : -- compilation du provide -- compilation du body -(en effet, un ident de type, de cont ou de noeud n'est pas -interprété de la même manihre suivant qu'il apparaît dans -la partie provide ou body). - Il contient aussi une table des items exportés pour faciliter -le traitement des "use" du pack. C'est une correspondance -nature+nom simple -> nom complet -(c.a.d. Syntaxe.item_ident -> fullid) -****************************************************************************) -pack_mng = { - (* le lexeme de ref *) - pm_lxm : Lxm.t; - (* le source brut *) - pm_raw_src : Syntaxe.pack_info ; - (* le source expansé *) - pm_actual_src : Syntaxe.pack_given ; - (* table "brute" des items provided *) - (* pour les "user" du pack *) - pm_user_items : (Syntaxe.item_ident, fullid Lxm.srcflaged) Hashtbl.t ; - (* les tables de symboles pour compil ultérieure *) - pm_body_stab : SymbolTab.t ; - (* la table pour provide n'est créée que si besoin ... *) - pm_provide_stab : SymbolTab.t option ; + En effet, un identificateur de type, de constante ou de noeud + n'est pas interprété de la même manière suivant qu'il apparaît + dans la partie provide ou body. + + Il contient aussi une table des items exportés pour faciliter le + traitement des "use" du package. C'est une correspondance nature+nom + simple -> nom complet (c.a.d. Syntaxe.item_ident -> fullid) +*) + +type pack_mng = { + (* le lexeme de ref *) + pm_lxm : Lxm.t; + (* le source brut *) + pm_raw_src : Syntaxe.pack_info; + (* le source expansé *) + pm_actual_src : Syntaxe.pack_given; + (* table "brute" des items provided *) + (* pour les "user" du pack *) + pm_user_items : (Syntaxe.item_ident, fullid Lxm.srcflaged) Hashtbl.t; + (* les tables de symboles pour compil ultérieure *) + pm_body_stab : SymbolTab.t; + (* la table pour provide n'est créée que si besoin ... *) + pm_provide_stab : SymbolTab.t option; } +(** TYPE PRINCIPAL : t + + Packages et modèles sont rangés dans des tables, ce qui permet + notamment de traiter les erreurs de multi-déclarations + (st_raw_mod_tab et st_raw_pack_tab) + + Les instances de modeles sont traitées pour n'avoir plus que des + ``pack_given'' (i.e. pack avec provide + body) + + À chaque package (éventuellement expansé) est associé un manager + pour faciliter l'accès à ses infos (pack_mng) +*) +type t = { + (* liste + tables des sources bruts *) + st_list : Syntaxe.namespace list ; + st_raw_mod_tab : (string , model_info srcflaged) Hashtbl.t ; + st_raw_pack_tab : (string , pack_info srcflaged) Hashtbl.t ; + (* table des managers de packs *) + st_pack_mng_tab : (string , pack_mng) Hashtbl.t; +} + + + let pack_list this = ( - let f n p l = ( n::l ) in - Hashtbl.fold f this.st_pack_mng_tab [] + let f n p l = ( n::l ) in + Hashtbl.fold f this.st_pack_mng_tab [] ) (* accès aux infos *) let pack_body_env this p = ( - (Hashtbl.find this.st_pack_mng_tab p).pm_body_stab + try + (Hashtbl.find this.st_pack_mng_tab p).pm_body_stab + with Not_found -> assert false ) + let pack_prov_env this p = ( - (Hashtbl.find this.st_pack_mng_tab p).pm_provide_stab + try + (Hashtbl.find this.st_pack_mng_tab p).pm_provide_stab + with Not_found -> assert false ) @@ -99,72 +106,72 @@ let pack_prov_env this p = ( init de la table des items provided (pour les users) ****************************************************************************) let init_user_items (this: pack_mng) = ( - let pname = Lxm.str this.pm_lxm in - (* EXPORTATION D'UNE const_info *) - let export_const - (s:string) - (xci: Syntaxe.const_info srcflaged) - = ( -Verbose.put " export const %s\n" s; - CompUtils.put_in_tab "const" this.pm_user_items - (ConstItem s) - (Lxm.flagit (make_fullid pname s) xci.src) - ) in - (* EXPORTATION D'UN type_info *) - let export_type - (s: string) - (xti: Syntaxe.type_info srcflaged) - = ( - let _ = match (xti.it) with - EnumType (_, ecl) -> ( - (* Cas particulier des types enums *) - (* on exporte les constantes ... *) - let treat_enum_const ec = ( - let s = ec.it in - let lxm = ec.src in -Verbose.put " export enum const %s\n" s; - CompUtils.put_in_tab "const" this.pm_user_items - (ConstItem s) - (Lxm.flagit (make_fullid pname s) lxm) - ) in - List.iter treat_enum_const ecl - ) | _ -> () - in -Verbose.put " export type %s\n" s; - CompUtils.put_in_tab "type" this.pm_user_items - (TypeItem s) - (Lxm.flagit (make_fullid pname s) xti.src) - ) in - (* EXPORTATION D'UN oper_info *) - let export_oper - (s: string) - (xoi: Syntaxe.oper_info srcflaged) - = ( -Verbose.put " export oper %s\n" s; - CompUtils.put_in_tab "oper" this.pm_user_items - (OperItem s) - (Lxm.flagit (make_fullid pname s) xoi.src) - ) in - let pg = this.pm_actual_src in - match pg.pg_provides with + let pname = Lxm.str this.pm_lxm in + (* EXPORTATION D'UNE const_info *) + let export_const + (s:string) + (xci: Syntaxe.const_info srcflaged) + = ( + Verbose.put " export const %s\n" s; + CompUtils.put_in_tab "const" this.pm_user_items + (ConstItem s) + (Lxm.flagit (make_fullid pname s) xci.src) + ) in + (* EXPORTATION D'UN type_info *) + let export_type + (s: string) + (xti: Syntaxe.type_info srcflaged) + = ( + let _ = match (xti.it) with + EnumType (_, ecl) -> ( + (* Cas particulier des types enums *) + (* on exporte les constantes ... *) + let treat_enum_const ec = ( + let s = ec.it in + let lxm = ec.src in + Verbose.put " export enum const %s\n" s; + CompUtils.put_in_tab "const" this.pm_user_items + (ConstItem s) + (Lxm.flagit (make_fullid pname s) lxm) + ) in + List.iter treat_enum_const ecl + ) | _ -> () + in + Verbose.put " export type %s\n" s; + CompUtils.put_in_tab "type" this.pm_user_items + (TypeItem s) + (Lxm.flagit (make_fullid pname s) xti.src) + ) in + (* EXPORTATION D'UN oper_info *) + let export_oper + (s: string) + (xoi: Syntaxe.oper_info srcflaged) + = ( + Verbose.put " export oper %s\n" s; + CompUtils.put_in_tab "oper" this.pm_user_items + (OperItem s) + (Lxm.flagit (make_fullid pname s) xoi.src) + ) in + let pg = this.pm_actual_src in + match pg.pg_provides with None -> ( - (* ON EXPORTE TOUT TEL QUEL *) - Hashtbl.iter export_type pg.pg_body.pk_type_table ; - Hashtbl.iter export_const pg.pg_body.pk_const_table ; - Hashtbl.iter export_oper pg.pg_body.pk_oper_table ; + (* ON EXPORTE TOUT TEL QUEL *) + Hashtbl.iter export_type pg.pg_body.pk_type_table ; + Hashtbl.iter export_const pg.pg_body.pk_const_table ; + Hashtbl.iter export_oper pg.pg_body.pk_oper_table ; ) | - Some spflg -> ( - (* ON EXPORTE LES PROVIDES *) - let treat_prov x = ( - let lxm = x.src in - let s = Lxm.str lxm in - match (x.it) with - TypeInfo xti -> export_type s (Lxm.flagit xti lxm) - | ConstInfo xci -> export_const s (Lxm.flagit xci lxm) - | OperInfo xoi -> export_oper s (Lxm.flagit xoi lxm) - ) in + Some spflg -> ( + (* ON EXPORTE LES PROVIDES *) + let treat_prov x = ( + let lxm = x.src in + let s = Lxm.str lxm in + match (x.it) with + TypeInfo xti -> export_type s (Lxm.flagit xti lxm) + | ConstInfo xci -> export_const s (Lxm.flagit xci lxm) + | OperInfo xoi -> export_oper s (Lxm.flagit xoi lxm) + ) in List.iter treat_prov spflg - ) + ) ) (* @@ -323,17 +330,20 @@ Verbose.put " symbol tables for pack %s\n" pname; (* PUIS LES DECLARATION LOCALES *) (* ... dans le body : *) - Hashtbl.iter (SymbolTab.add_type pm.pm_body_stab) pg.pg_body.pk_type_table; - Hashtbl.iter (SymbolTab.add_const pm.pm_body_stab) pg.pg_body.pk_const_table; - Hashtbl.iter (SymbolTab.add_oper pm.pm_body_stab) pg.pg_body.pk_oper_table; + Hashtbl.iter (SymbolTab.add_type pm.pm_body_stab) + pg.pg_body.pk_type_table; + Hashtbl.iter (SymbolTab.add_const pm.pm_body_stab) + pg.pg_body.pk_const_table; + Hashtbl.iter (SymbolTab.add_oper pm.pm_body_stab) + pg.pg_body.pk_oper_table; (* ... dans le provide : *) match pg.pg_provides with None -> ( ) | Some spflg -> ( let pptab = match pm.pm_provide_stab with - Some pt -> pt - | None -> raise (Internal_error ("SrcTab.init_pack_mng_stabs","unexpected case")) + Some pt -> pt + | None -> assert false in let treat_prov x = ( let lxm = x.src in @@ -362,13 +372,16 @@ Associations : (* associations idref -> fullid *) let find_type (genv: t) (pck: string) (idr: Syntaxe.idref) = ( - raise (Internal_error ("SrcTab.find_type", "not implemented")) + print_string "*** not implemented.\n"; + assert false ) let find_const (genv: t) (pck: string) (idr: Syntaxe.idref) = ( - raise (Internal_error ("SrcTab.find_const", "not implemented")) + print_string "*** not implemented.\n"; + assert false ) let find_oper (genv: t) (pck: string) (idr: Syntaxe.idref) = ( - raise (Internal_error ("SrcTab.find_oper", "not implemented")) + print_string "*** not implemented.\n"; + assert false ) diff --git a/src/srcTab.mli b/src/srcTab.mli index 4e2e8e384d7c18728d6db01aad146ec4594c9d87..99a2fd555a9ce06007fdb1d7e691d9351b50a882 100644 --- a/src/srcTab.mli +++ b/src/srcTab.mli @@ -1,19 +1,19 @@ -(* +(** Time-stamp: <modified the 05/12/2007 (at 11:12) by Erwan Jahier> *) +(** Table des infos sources -- créée à partir de la liste des pack/modeles -- s'occupe de l'instanciation (purement syntaxique) des modeles -- crée pour chaque pack given la liste ``brute'' des noms - d'items exportés - Cette liste sera importante pour traiter les "use" lors - de la création des tables se symboles de chaque pack + - créée à partir de la liste des pack/modeles + + - s'occupe de l'instanciation (purement syntaxique) des modeles + + - crée pour chaque pack provided la liste ``brute'' des noms d'items + exportés Cette liste sera importante pour traiter les "use" lors de + la création des tables de symboles de chaque pack *) -(* type principal *) type t -(* init *) val create : Syntaxe.namespace list -> t (* accès aux infos *) @@ -25,6 +25,6 @@ val pack_prov_env : t -> string -> SymbolTab.t option val pack_list : t -> string list -(* dump *) +(* *) val dump : t -> unit diff --git a/src/symbolTab.ml b/src/symbolTab.ml index d785bb8f37b913e3efc7c331bd38617fa2dfcf68..afb4906f1498204e97905926b6dd539e58eccdbb 100644 --- a/src/symbolTab.ml +++ b/src/symbolTab.ml @@ -24,10 +24,29 @@ let create () = { st_opers = Hashtbl.create 50; } -let find_type (this: t) (id: string) = ( Hashtbl.find (this.st_types) id) -let find_const (this: t) (id: string) = ( Hashtbl.find (this.st_consts) id) -let find_oper (this: t) (id: string) = ( Hashtbl.find (this.st_opers) id) +let find_type (this: t) (id: string) = ( + try + Hashtbl.find (this.st_types) id + with Not_found -> + print_string ("*** unknown type "^id^"\n"); + assert false +) + +let find_const (this: t) (id: string) = ( + try + Hashtbl.find (this.st_consts) id + with Not_found -> + print_string ("*** unknown const "^id^"\n"); + assert false +) +let find_oper (this: t) (id: string) = ( + try + Hashtbl.find (this.st_opers) id + with Not_found -> + print_string ("*** unknown operator "^id^"\n"); + assert false +) (* Manip de SymbolTab.t *) let add_import_const (this: t) (id: string) (aid: fullid) = ( diff --git a/src/syntaxe.ml b/src/syntaxe.ml index e2756cbcf3980e0cd254ae6b3db69778a25a7683..7d78baff76d9cac379cb732d1403ab305efde27c 100644 --- a/src/syntaxe.ml +++ b/src/syntaxe.ml @@ -1,9 +1,5 @@ -(*--------------------------------------------------------------------- - module : syntaxe.ml - date : ------------------------------------------------------------------------- - description : -----------------------------------------------------------------------*) +(** Time-stamp: <modified the 05/12/2007 (at 11:22) by Erwan Jahier> *) + (** Syntaxe abstraite des programmes Lustre *) @@ -61,15 +57,14 @@ and | NSModel of model_info srcflaged and model_info = { - mo_name : string ; - mo_uses : string srcflaged list ; - mo_needs : static_param srcflaged list ; + mo_name : string ; + mo_uses : string srcflaged list ; + mo_needs : static_param srcflaged list ; (* N.B. CAS PARTICULIER DE item_info *) mo_provides : item_info srcflaged list option; mo_body : packbody ; } -and - pack_info = { +and pack_info = { pa_name : string ; pa_def : pack_def ; } @@ -89,12 +84,11 @@ and pi_model : string ; pi_args : static_arg srcflaged list ; } - (**********************************************) - (** Collection de noeuds, types const etc *) - (* - une table pour chaque sorte de defs *) - (* - une liste de defs permettant de les *) - (* ressortir dans l'ordre *) - (**********************************************) + (** Collection de noeuds, types const etc. + - une table pour chaque sorte de defs + - une liste de defs permettant de les + ressortir dans l'ordre + *) and packbody = { pk_const_table : (string, const_info srcflaged ) Hashtbl.t ; @@ -231,9 +225,7 @@ and eq_info = { eq_left : left_part list ; eq_right: val_exp } - (************************************************) - (* Information d'horloge pour les var de node *) - (************************************************) + (* Information d'horloge pour les variables de noeud *) and clock_exp = BaseClock | NamedClock of string srcflaged @@ -262,6 +254,7 @@ and slice_info = { and val_exp = CallByPos of (by_pos_op srcflaged * val_exp list) | CallByName of (by_name_op srcflaged * (string srcflaged * val_exp) list) + (* Toutes les opérations classiques *) and by_pos_op = (* zeroaire *) @@ -315,31 +308,33 @@ and by_pos_op = (* pseudo-unaire : A USAGE INTERNE *) (* projection de tuple *) | PROJ_n of int - (* pseudo-unaire : appel par position *) + (* pseudo-unaire : appel par position *) | CALL_n of oper_exp srcflaged - (* pseudo-unaire : acces tableau *) + (* pseudo-unaire : acces tableau *) | ARRAY_ACCES_n of val_exp | ARRAY_SLICE_n of slice_info - (* pseudo-unaire : acces structure *) + (* pseudo-unaire : acces structure *) | STRUCT_ACCESS_n of string - (* Opération avec passage de param par nom *) + (* Opération avec passage de param par nom *) + +(* | MERGE_n of idref * ((idref * val_exp) list) *) + + and by_name_op = BYNAME_CALL_n of idref (* structure non typée *) | STRUCT_EXP_n - (********************************************** - Descripteur d'operateur call - **********************************************) + (* Descripteur d'operateur call *) and oper_exp = CallPreDef of by_pos_op | CallUsrDef of (idref * static_arg srcflaged list) - (********************************************** - Params statiques effectifs : - - val_exp (pour les constantes) - - type_exp (pour les types) - - oper_exp (pour les node) - - ident : a résoudre, peut etre const, type ou node - **********************************************) + (* + Params statiques effectifs : + - val_exp (pour les constantes) + - type_exp (pour les types) + - oper_exp (pour les node) + - ident : a résoudre, peut etre const, type ou node + *) and static_arg = StaticArgIdent of idref | StaticArgConst of val_exp @@ -429,12 +424,13 @@ let add_info try let x = Hashtbl.find htbl (Lxm.str lxm) in raise ( - Compile_error ( lxm , - (sprintf "bad %s declaration, ident already linked at %s" - kindof - (Lxm.position x.src) - ) - ) + Compile_error ( + lxm , + (sprintf "bad %s declaration, ident already linked at %s" + kindof + (Lxm.position x.src) + ) + ) ) with Not_found -> ( Hashtbl.add htbl (Lxm.str lxm) { diff --git a/test/C.xec b/test/C.xec deleted file mode 100644 index b6e901802e051d31711391793090c9f0e3744b59..0000000000000000000000000000000000000000 --- a/test/C.xec +++ /dev/null @@ -1,36 +0,0 @@ --------------------------------------------- --- File `C.xec' generated by --- the lustre-v6 compiler version 0.17 --------------------------------------------- - --------------------------------------------- --- alias types and constant declarations --------------------------------------------- -type TestCondact::t2 = int; -type TestCondact::t1 = int; - --------------------------------------------- --- operator definition --------------------------------------------- -node Main::n( - i_e : int; - ) returns ( - o_s : int; - ); -let - o_s = (i_e * i_e); -tel - -node TestCondact::C( - i_c : bool; - i_d : int; - i_x : int; - ) returns ( - o_y : int; - ); -let - o_y = (if i_c - then current(Main::n(i_x)) - else (i_d -> pre(o_y)) ); -tel - diff --git a/test/Makefile b/test/Makefile index a5a8bd1dab204944322957915f110b8a0703af0d..63b2819dcb5387be60c6759125abbad6921e6b1f 100644 --- a/test/Makefile +++ b/test/Makefile @@ -1,10 +1,11 @@ +LV6=../src/lus2lic test: rm -f test.res - ../../bin/lv6 packages.lus -main mainPack:preced > test.res - ../../bin/lv6 modelInst.lus -main main:main >> test.res - ../../bin/lv6 Condact.lus -main TestCondact:C >> test.res + $(LV6) packages.lus -main mainPack:preced > test.res + $(LV6) modelInst.lus -main main:main >> test.res + $(LV6) Condact.lus -main TestCondact:C >> test.res diff -u test.res test.exp > test.diff diff: diff --git a/test/main.xec b/test/main.xec deleted file mode 100644 index 066fa6c992b0575f62cd6116a690579840a3149d..0000000000000000000000000000000000000000 --- a/test/main.xec +++ /dev/null @@ -1,57 +0,0 @@ --------------------------------------------- --- File `main.xec' generated by --- the lustre-v6 compiler version 0.17 --------------------------------------------- - --------------------------------------------- --- alias types and constant declarations --------------------------------------------- -const main::pi : real = 3.14159; - --------------------------------------------- --- operator definition --------------------------------------------- -node Pint::n( - i_init : int; - i_in : int; - ) returns ( - o_ok : int; - ); -let - o_ok = (i_init -> pre(i_in)); -tel - -node Pbool::n( - i_init : bool; - i_in : bool; - ) returns ( - o_ok : bool; - ); -let - o_ok = (i_init -> pre(i_in)); -tel - -node Preal::n( - i_init : real; - i_in : real; - ) returns ( - o_ok : real; - ); -let - o_ok = (i_init -> pre(i_in)); -tel - -node main::main( - i_i : int; - i_ray : real; - ) returns ( - o_oint : int; - o_obool : bool; - o_oreal : real; - ); -let - o_oint = Pint::n(( 0, i_i )); - o_obool = Pbool::n(( true, (i_i < 50) )); - o_oreal = Preal::n(( 0., (0. -> ((main::pi * i_ray) * i_ray)) )); -tel - diff --git a/test/preced.xec b/test/preced.xec deleted file mode 100644 index 18448b5bd4c20df312b25f574043cc2669f91c26..0000000000000000000000000000000000000000 --- a/test/preced.xec +++ /dev/null @@ -1,80 +0,0 @@ --------------------------------------------- --- File `preced.xec' generated by --- the lustre-v6 compiler version 0.17 --------------------------------------------- - --------------------------------------------- --- internal type(s) definition(s) --------------------------------------------- -type T1_ARRAY = int^8; -type T2_STRUCT = { i: int, b: bool, r: real }; - --------------------------------------------- --- alias types and constant declarations --------------------------------------------- -type pbool::t = bool; -type pint::t = int; -type preal::t = real; -type inter::selType = T2_STRUCT; -const inter::n : int = -4; -type mainPack::T = T1_ARRAY; -const mainPack::N : int = 8; -const mainPack::X : int = mainPack::N; - --------------------------------------------- --- operator definition --------------------------------------------- -node pint::fby1( - i_init : int; - i_fb : int; - ) returns ( - o_next : int; - ); -let - o_next = (i_init -> pre(i_fb)); -tel - -node pbool::fby1( - i_init : bool; - i_fb : bool; - ) returns ( - o_next : bool; - ); -let - o_next = (i_init -> pre(i_fb)); -tel - -node preal::fby1( - i_init : real; - i_fb : real; - ) returns ( - o_next : real; - ); -let - o_next = (i_init -> pre(i_fb)); -tel - -node inter::preced( - i_in : T2_STRUCT; - ) returns ( - o_out : T2_STRUCT; - o_out2 : T2_STRUCT; - ); -let - o_out2 = { i = 0, b = true, r = 0.}; - o_out.i = pint::fby1(( o_out2.i, i_in.i )); - o_out.b = pbool::fby1(( o_out2.b, i_in.b )); - o_out.r = preal::fby1(( o_out2.r, i_in.r )); -tel - -node mainPack::preced( - i_in : T2_STRUCT; - ) returns ( - o_out : T2_STRUCT; - ); -var - v_out2 : T2_STRUCT; -let - (o_out, v_out2) = inter::preced(i_in); -tel -