diff --git a/src/Makefile b/src/Makefile index c838f97816b8c6f249a22684c20c6ff55eb22a35..a3b6a4789b1463c6cc106e9a92c752ec34fe2e45 100644 --- a/src/Makefile +++ b/src/Makefile @@ -46,7 +46,7 @@ include $(OCAMLMAKEFILE) MLONLY_SOURCES := $(filter %.ml, $(SOURCES)) tags: $(MLONLY_SOURCES) - otags $(MLONLY_SOURCES) $(shell ocamlc -where)/*.mli + otags $(SOURCES) $(shell ocamlc -where)/*.mli test: $(RESULT) cd test; make test diff --git a/src/TAGS b/src/TAGS index b69d3698b3af9c887878d79fa73c8bc1e972ac2a..42e8e99f59a14adc2971ffff00a2d9db48756cf4 100644 --- a/src/TAGS +++ b/src/TAGS @@ -121,6 +121,14 @@ let warningwarning123,4420 let print_global_errorprint_global_error130,4701 let print_internal_errorprint_internal_error138,4984 +./evalConst.mli,236 +EvalConst1,0 +exception EvalArray_errorEvalArray_error63,1475 +val eval_consteval_const65,1512 +val eval_array_sizeeval_array_size79,1859 +val eval_array_indexeval_array_index93,2109 +val eval_array_sliceeval_array_slice110,2556 + ./evalConst.ml,582 EvalConst1,0 exception EvalArray_errorEvalArray_error14,319 @@ -137,15 +145,49 @@ and eval_array_sizeeval_array_size747,22831 and eval_array_indexeval_array_index780,23764 and eval_array_sliceeval_array_slice818,24958 +./evalType.mli,30 +EvalType1,0 +val ff48,1234 + ./evalType.ml,79 EvalType1,0 exception EvalType_errorEvalType_error9,145 let rec ff24,501 +./expandPack.mli,38 +ExpandPack1,0 +val doitdoit46,1653 + ./expandPack.ml,37 ExpandPack1,0 let (doitdoit8,131 +./ident.mli,825 +Ident1,0 +tt4,74 +type pack_namepack_name6,82 +type longlong8,98 +val to_stringto_string11,110 +val of_stringof_string12,138 +val of_longof_long14,167 +val pack_name_of_stringpack_name_of_string15,191 +val to_pack_nameto_pack_name16,237 +val pack_name_to_stringpack_name_to_string17,271 +val pack_of_longpack_of_long18,317 +val string_of_longstring_of_long20,355 +val long_to_stringlong_to_string21,391 +val long_of_stringlong_of_string22,427 +val make_longmake_long24,464 +val set_dft_pack_nameset_dft_pack_name27,505 +type idrefidref44,1000 + id_packid_pack46,1020 + id_idid_id47,1051 +val idref_of_stringidref_of_string50,1080 +val string_of_idrefstring_of_idref53,1120 +val name_of_idrefname_of_idref55,1159 +val pack_of_idrefpack_of_idref56,1190 +val long_of_idreflong_of_idref60,1334 + ./ident.ml,898 Ident1,0 tt44,790 @@ -163,40 +205,74 @@ let (make_longmake_long71,1285 let dft_pack_namedft_pack_name74,1352 let (set_dft_pack_nameset_dft_pack_name76,1426 let (to_pack_nameto_pack_name80,1510 -type idrefidref90,1593 - id_packid_pack92,1613 - id_idid_id93,1647 -let (pack_of_idrefpack_of_idref96,1671 -let (name_of_idrefname_of_idref99,1745 -let idref_of_stringidref_of_string104,1827 -let (long_of_stringlong_of_string111,2066 -let string_of_idrefstring_of_idref118,2293 -let (long_of_idreflong_of_idref124,2398 - -./lazyCompiler.ml,794 +type idrefidref90,1595 + id_packid_pack92,1615 + id_idid_id93,1649 +let (pack_of_idrefpack_of_idref96,1673 +let (name_of_idrefname_of_idref99,1747 +let idref_of_stringidref_of_string104,1829 +let (long_of_stringlong_of_string111,2068 +let string_of_idrefstring_of_idref118,2295 +let (long_of_idreflong_of_idref124,2400 + +./lazyCompiler.mli,114 LazyCompiler1,0 -exception Recursion_errorRecursion_error19,337 -exception BadCheckRef_errorBadCheckRef_error22,440 -let recursion_errorrecursion_error26,492 -tt39,884 - src_tabsrc_tab40,895 - typestypes42,943 - constsconsts43,1011 - nodesnodes44,1079 - prov_typesprov_types46,1170 - prov_constsprov_consts47,1243 - prov_nodesprov_nodes48,1316 -let (createcreate54,1488 -let rec do_typedo_type86,2344 - do_prov_typedo_prov_type114,3299 - and check_type_defcheck_type_def175,5214 - do_constdo_const260,7916 - do_prov_constdo_prov_const290,8942 - check_const_defcheck_const_def348,10763 - solve_type_idrefsolve_type_idref408,12695 - solve_const_idrefsolve_const_idref437,13583 -let (do_nodedo_node470,14626 -let test_typestest_types492,15137 +tt11,407 +val createcreate14,445 +val do_nodedo_node18,502 +val test_typestest_types22,631 + +./lazyCompiler.ml,1173 +LazyCompiler1,0 +exception Recursion_errorRecursion_error14,316 +exception BadCheckRef_errorBadCheckRef_error16,392 +let recursion_errorrecursion_error18,421 +tt31,813 + src_tabsrc_tab32,824 + typestypes34,872 + constsconsts35,940 + nodesnodes36,1008 + prov_typesprov_types38,1099 + prov_constsprov_consts39,1172 + prov_nodesprov_nodes40,1245 +let (createcreate46,1417 +let x_checkx_check105,3546 +let x_check_interfacex_check_interface119,4157 +let lookup_x_efflookup_x_eff143,5106 +let (lookup_type_efflookup_type_eff149,5372 +let (lookup_const_efflookup_const_eff153,5536 +let rec (type_checktype_check161,5819 +and (const_checkconst_check166,6032 +and (type_check_interfacetype_check_interface171,6256 +and (const_check_interfaceconst_check_interface178,6530 +and (type_check_interface_dotype_check_interface_do185,6786 +and (const_check_interface_doconst_check_interface_do228,8273 +and (type_check_dotype_check_do258,9414 +and (const_check_doconst_check_do329,11699 +and (solve_type_idrefsolve_type_idref386,13572 +and (solve_const_idrefsolve_const_idref409,14386 +let (do_nodedo_node434,15320 +let test_typestest_types456,15831 + +./lxm.mli,441 +Lxm1,0 +tt7,84 +val strstr10,93 +val idid11,115 +val pack_namepack_name12,137 +val lineline13,174 +val cstartcstart14,195 +val cendcend15,217 +val makemake24,438 +val new_linenew_line28,561 +type 'a srcflagedsrcflaged35,758 +type 'a srcsrc35,758 +type 'a srcflaged = { src : t ; itit35,758 +val flagitflagit36,801 +val dummydummy39,876 +val last_madelast_made43,987 +val detailsdetails48,1107 +val positionposition51,1169 ./lxm.ml,598 Lxm1,0 @@ -227,251 +303,317 @@ let last_madelast_made66,1467 ./main.ml,582 Main1,0 -let usage_msgusage_msg52,1080 -type lpp_argslpp_args58,1330 - mutable infileinfile59,1348 - mutable main_nodemain_node60,1376 - mutable runmoderunmode61,1407 -let rec _LPP_ARGS_LPP_ARGS63,1438 -and set_infileset_infile69,1616 -and set_run_modeset_run_mode80,1868 -and print_versionprint_version83,1940 -and arg_listarg_list86,2022 - parse_argsparse_args110,2813 -let test_lextest_lex118,3007 -let lus_loadlus_load131,3330 -let dump_bodydump_body136,3423 -let dump_nsdump_ns142,3608 -let get_source_listget_source_list160,4105 -let mainmain173,4448 +let usage_msgusage_msg52,1085 +type lpp_argslpp_args58,1335 + mutable infileinfile59,1353 + mutable main_nodemain_node60,1381 + mutable runmoderunmode61,1412 +let rec _LPP_ARGS_LPP_ARGS63,1443 +and set_infileset_infile69,1621 +and set_run_modeset_run_mode80,1873 +and print_versionprint_version83,1945 +and arg_listarg_list86,2027 + parse_argsparse_args110,2818 +let test_lextest_lex118,3012 +let lus_loadlus_load131,3335 +let dump_bodydump_body136,3428 +let dump_nsdump_ns142,3613 +let get_source_listget_source_list160,4116 +let mainmain173,4459 ./parserUtils.ml,124 ParserUtils1,0 let flat_flagged_listflat_flagged_list35,932 let flat_twice_flagged_listflat_twice_flagged_list73,1926 -./symbolTab.ml,659 +./symbolTab.mli,583 SymbolTab1,0 -type 'a hereflagedhereflaged9,73 - HereHere10,94 -| NotHereNotHere11,107 -tt13,132 - st_constsst_consts14,143 - st_typesst_types15,215 - st_opersst_opers16,285 -let createcreate20,406 -let find_typefind_type26,527 -let find_constfind_const34,721 -let find_operfind_oper42,916 -let add_import_constadd_import_const51,1138 -let add_import_typeadd_import_type55,1260 -let add_import_operadd_import_oper59,1380 -let add_constadd_const63,1500 -let add_typeadd_type67,1619 -let add_operadd_oper84,2150 -let iter_typesiter_types88,2261 -let iter_constsiter_consts89,2317 -let iter_opersiter_opers90,2375 -let dumpdump92,2432 - -./syntaxTab.ml,15 +type 'a hereflagedhereflaged16,596 + HereHere17,617 + | NotHereNotHere18,662 +tt20,710 +val createcreate22,718 +val find_typefind_type27,794 +val find_constfind_const28,874 +val find_operfind_oper29,956 +val add_import_constadd_import_const32,1083 +val add_import_typeadd_import_type33,1141 +val add_import_operadd_import_oper34,1198 +val add_typeadd_type37,1291 +val add_constadd_const38,1366 +val add_operadd_oper39,1443 +val iter_typesiter_types43,1547 +val iter_constsiter_consts45,1649 +val iter_opersiter_opers47,1753 +val dumpdump50,1856 + +./symbolTab.ml,662 +SymbolTab1,0 +type 'a hereflagedhereflaged10,145 + HereHere11,166 +| NotHereNotHere12,179 +tt14,204 + st_constsst_consts15,215 + st_typesst_types16,286 + st_opersst_opers17,357 +let createcreate21,479 +let find_typefind_type27,602 +let find_constfind_const35,796 +let find_operfind_oper43,991 +let add_import_constadd_import_const52,1213 +let add_import_typeadd_import_type56,1335 +let add_import_operadd_import_oper60,1455 +let add_constadd_const64,1575 +let add_typeadd_type68,1694 +let add_operadd_oper85,2225 +let iter_typesiter_types89,2336 +let iter_constsiter_consts90,2392 +let iter_opersiter_opers91,2450 +let dumpdump93,2507 + +./syntaxTab.mli,181 +SyntaxTab1,0 +tt14,449 +val createcreate16,457 +val pack_body_envpack_body_env20,529 +val pack_prov_envpack_prov_env23,629 +val pack_listpack_list26,723 +val dumpdump29,768 + +./syntaxTab.ml,871 SyntaxTab1,0 +type pack_mngpack_mng49,1439 + pm_lxmpm_lxm51,1495 + pm_raw_srcpm_raw_src53,1536 + pm_actual_srcpm_actual_src55,1599 + pm_user_itemspm_user_items58,1713 + pm_body_stabpm_body_stab60,1846 + pm_provide_stabpm_provide_stab62,1936 +tt77,2413 + st_listst_list79,2465 + st_raw_mod_tabst_raw_mod_tab80,2509 + st_raw_pack_tabst_raw_pack_tab81,2574 + st_pack_mng_tabst_pack_mng_tab83,2682 +let (pack_listpack_list87,2762 +let (pack_body_envpack_body_env93,2899 +let (pack_prov_envpack_prov_env100,3087 +let init_user_itemsinit_user_items110,3479 +let create_pack_mngcreate_pack_mng191,5879 +let rec (createcreate228,7013 +init_raw_tabsinit_raw_tabs260,8055 +init_pack_mng_stabsinit_pack_mng_stabs296,9204 +let find_typefind_type376,11669 +let find_constfind_const380,11782 +let find_operfind_oper384,11896 +let (dumpdump391,12025 + +./syntaxTabUtils.mli,53 +SyntaxTabUtils1,0 +val put_in_tabput_in_tab16,524 ./syntaxTabUtils.ml,51 SyntaxTabUtils1,0 let put_in_tabput_in_tab7,85 -./syntaxTree.ml,6133 +./syntaxTree.ml,6196 SyntaxTree1,0 -type 'a errorerror18,456 - OkOk19,474 - | ErrorError20,487 -tt26,641 - PRPackBodyPRPackBody27,651 - | PRPack_or_modelsPRPack_or_models28,678 - pack_or_modelpack_or_model30,725 - NSPackNSPack31,743 - | NSModelNSModel32,780 - model_infomodel_info34,822 - mo_namemo_name35,839 - mo_usesmo_uses36,872 - mo_needsmo_needs37,920 - mo_providesmo_provides39,1009 - mo_bodymo_body40,1060 -and pack_infopack_info42,1089 - pa_namepa_name43,1107 - pa_defpa_def44,1139 - pack_defpack_def47,1171 - PackGivenPackGiven48,1185 - | PackInstancePackInstance49,1213 - pack_givenpack_given51,1251 - pg_usespg_uses52,1269 - pg_providespg_provides54,1361 - pg_bodypg_body55,1412 - pack_instancepack_instance58,1445 - pi_modelpi_model59,1465 - pi_argspi_args60,1490 - packbodypackbody68,1715 - pk_const_tablepk_const_table69,1730 - pk_type_tablepk_type_table70,1796 - pk_oper_tablepk_oper_table71,1862 - pk_def_listpk_def_list72,1928 - item_identitem_ident75,1976 - ConstItemConstItem79,2083 - | TypeItemTypeItem80,2108 - | OperItemOperItem81,2133 - item_infoitem_info83,2162 - ConstInfoConstInfo84,2176 - | TypeInfoTypeInfo85,2204 - | OperInfoOperInfo86,2231 - const_infoconst_info91,2428 - ExternalConstExternalConst92,2444 - | EnumConstEnumConst93,2487 - | DefinedConstDefinedConst94,2530 - type_infotype_info99,2755 - ExternalTypeExternalType100,2769 - | AliasedTypeAliasedType101,2799 - | EnumTypeEnumType102,2840 - | StructTypeStructType104,2955 - struct_type_infostruct_type_info114,3444 - st_namest_name115,3467 - st_flistst_flist116,3491 - st_ftablest_ftable117,3521 -and field_infofield_info119,3586 - fd_namefd_name120,3605 - fd_typefd_type121,3628 - fd_valuefd_value122,3652 - type_exptype_exp130,4014 - type_exp_coretype_exp_core132,4055 - Bool_type_expBool_type_exp133,4073 - | Int_type_expInt_type_exp134,4091 - | Real_type_expReal_type_exp135,4108 - | Named_type_expNamed_type_exp136,4126 - | Array_type_expArray_type_exp137,4162 - oper_infooper_info143,4428 - NodeNode144,4442 - | FuncFunc145,4465 - func_infofunc_info150,4655 - fn_namefn_name151,4671 - fn_inparsfn_inpars152,4698 - fn_outparsfn_outpars153,4750 - node_infonode_info160,5014 - ni_nameni_name161,5030 - ni_staticlistni_staticlist162,5060 - ni_valueni_value163,5110 -and node_profilenode_profile165,5138 -and node_defnode_def166,5209 - NodeExternNodeExtern167,5224 - | NodeBodyNodeBody168,5255 - | NodeAliasNodeAlias169,5282 -and node_bodynode_body176,5652 - nbdy_inlistnbdy_inlist177,5670 - nbdy_outlistnbdy_outlist178,5704 - nbdy_loclistnbdy_loclist179,5738 - nbdy_vartablenbdy_vartable180,5772 - nbdy_assertsnbdy_asserts181,5808 - nbdy_eqsnbdy_eqs182,5854 -and var_info_tablevar_info_table184,5900 -and static_paramstatic_param185,5962 - StaticParamTypeStaticParamType186,5981 - | StaticParamConstStaticParamConst187,6013 - | StaticParamNodeStaticParamNode188,6058 -and var_infovar_info189,6144 - va_natureva_nature190,6161 - va_nameva_name191,6187 - va_typeva_type192,6210 - va_clockva_clock193,6234 -and var_naturevar_nature195,6261 - VarInputVarInput196,6278 - | VarOutputVarOutput197,6291 - | VarLocalVarLocal198,6305 -and eq_infoeq_info199,6318 - eq_lefteq_left200,6334 - eq_righteq_right201,6363 -and clock_expclock_exp204,6445 - BaseClockBaseClock205,6461 - | NamedClockNamedClock206,6475 -and left_partleft_part207,6511 - LeftVarLeftVar209,6582 - | LeftFieldLeftField210,6617 - | LeftArrayLeftArray211,6668 - | LeftSliceLeftSlice212,6721 -and slice_infoslice_info213,6775 - si_firstsi_first214,6794 - si_lastsi_last215,6817 - si_stepsi_step216,6840 -and val_expval_exp229,7384 - CallByPosCallByPos230,7398 - | CallByNameCallByName231,7456 -and by_pos_opby_pos_op234,7581 - NULL_expNULL_exp236,7616 - | TRUE_nTRUE_n237,7629 - | FALSE_nFALSE_n238,7640 - | ICONST_nICONST_n239,7652 - | RCONST_nRCONST_n240,7676 - | IDENT_nIDENT_n241,7700 - | NOT_nNOT_n243,7745 - | UMINUS_nUMINUS_n244,7755 - | PRE_nPRE_n245,7768 - | CURRENT_nCURRENT_n246,7778 - | REAL2INT_nREAL2INT_n247,7792 - | INT2REAL_nINT2REAL_n248,7807 - | ARROW_nARROW_n250,7843 - | FBY_nFBY_n251,7855 - | WHEN_nWHEN_n252,7865 - | AND_nAND_n253,7876 - | OR_nOR_n254,7886 - | XOR_nXOR_n255,7895 - | IMPL_nIMPL_n256,7905 - | EQ_nEQ_n257,7916 - | NEQ_nNEQ_n258,7925 - | LT_nLT_n259,7935 - | LTE_nLTE_n260,7944 - | GT_nGT_n261,7954 - | GTE_nGTE_n262,7963 - | DIV_nDIV_n263,7973 - | MOD_nMOD_n264,7983 - | MINUS_nMINUS_n265,7993 - | PLUS_nPLUS_n266,8005 - | SLASH_nSLASH_n267,8016 - | TIMES_nTIMES_n268,8028 - | POWER_nPOWER_n269,8040 - | HAT_nHAT_n270,8052 - | CONCAT_nCONCAT_n271,8062 - | IF_nIF_n273,8097 - | WITH_nWITH_n274,8106 - | NOR_nNOR_n276,8137 - | DIESE_nDIESE_n277,8147 - | TUPLE_nTUPLE_n278,8159 - | ARRAY_nARRAY_n279,8171 - | PROJ_nPROJ_n285,8442 - | CALL_nCALL_n287,8507 - | ARRAY_ACCES_nARRAY_ACCES_n289,8582 - | ARRAY_SLICE_nARRAY_SLICE_n290,8611 - | STRUCT_ACCESS_nSTRUCT_ACCESS_n292,8687 -and by_name_opby_name_op298,8840 - BYNAME_CALL_nBYNAME_CALL_n299,8857 - | STRUCT_EXP_nSTRUCT_EXP_n301,8922 -and oper_expoper_exp303,8980 - CallPreDefCallPreDef304,8995 - | CallUsrDefCallUsrDef305,9023 -and static_argstatic_arg313,9289 - StaticArgIdentStaticArgIdent314,9306 - | StaticArgConstStaticArgConst315,9340 - | StaticArgTypeStaticArgType316,9370 - | StaticArgNodeStaticArgNode317,9401 -let give_pack_this_namegive_pack_this_name324,9571 -let leafexpleafexp339,9880 -let unexpunexp343,9952 -let binexpbinexp347,10027 -let ternexpternexp351,10111 -let naryexpnaryexp355,10203 -let bynameexpbynameexp359,10282 -let make_packbodymake_packbody374,10801 -let add_infoadd_info393,11369 -let lexeme_of_val_explexeme_of_val_exp425,12305 -let rec lexeme_of_left_partlexeme_of_left_part429,12435 -let lexeme_of_pack_or_modellexeme_of_pack_or_model436,12647 +type 'a errorerror18,460 + OkOk19,478 + | ErrorError20,491 +tt26,645 + PRPackBodyPRPackBody27,655 + | PRPack_or_modelsPRPack_or_models28,682 + pack_or_modelpack_or_model30,729 + NSPackNSPack31,747 + | NSModelNSModel32,784 + model_infomodel_info34,826 + mo_namemo_name35,843 + mo_usesmo_uses36,876 + mo_needsmo_needs37,924 + mo_providesmo_provides39,1013 + mo_bodymo_body40,1064 +and pack_infopack_info42,1093 + pa_namepa_name43,1111 + pa_defpa_def44,1143 + pack_defpack_def47,1175 + PackGivenPackGiven48,1189 + | PackInstancePackInstance49,1217 + pack_givenpack_given51,1255 + pg_usespg_uses52,1273 + pg_providespg_provides54,1365 + pg_bodypg_body55,1416 + pack_instancepack_instance58,1449 + pi_modelpi_model59,1469 + pi_argspi_args60,1494 + packbodypackbody68,1719 + pk_const_tablepk_const_table69,1734 + pk_type_tablepk_type_table70,1800 + pk_oper_tablepk_oper_table71,1866 + pk_def_listpk_def_list72,1932 + item_identitem_ident75,1980 + ConstItemConstItem79,2087 + | TypeItemTypeItem80,2112 + | OperItemOperItem81,2137 + item_infoitem_info83,2166 + ConstInfoConstInfo84,2180 + | TypeInfoTypeInfo85,2208 + | OperInfoOperInfo86,2235 + const_infoconst_info91,2432 + ExternalConstExternalConst92,2448 + | EnumConstEnumConst93,2491 + | DefinedConstDefinedConst94,2534 + type_infotype_info99,2759 + ExternalTypeExternalType100,2773 + | AliasedTypeAliasedType101,2803 + | EnumTypeEnumType102,2844 + | StructTypeStructType104,2959 + struct_type_infostruct_type_info114,3448 + st_namest_name115,3471 + st_flistst_flist116,3495 + st_ftablest_ftable117,3525 +and field_infofield_info119,3590 + fd_namefd_name120,3609 + fd_typefd_type121,3632 + fd_valuefd_value122,3656 + type_exptype_exp130,4018 + type_exp_coretype_exp_core132,4059 + Bool_type_expBool_type_exp133,4077 + | Int_type_expInt_type_exp134,4095 + | Real_type_expReal_type_exp135,4112 + | Named_type_expNamed_type_exp136,4130 + | Array_type_expArray_type_exp137,4166 + oper_infooper_info143,4432 + NodeNode144,4446 + | FuncFunc145,4469 + func_infofunc_info150,4659 + fn_namefn_name151,4675 + fn_inparsfn_inpars152,4702 + fn_outparsfn_outpars153,4754 + node_infonode_info160,5018 + ni_nameni_name161,5034 + ni_staticlistni_staticlist162,5064 + ni_valueni_value163,5114 +and node_profilenode_profile165,5142 +and node_defnode_def166,5213 + NodeExternNodeExtern167,5228 + | NodeBodyNodeBody168,5259 + | NodeAliasNodeAlias169,5286 +and node_bodynode_body176,5656 + nbdy_inlistnbdy_inlist177,5674 + nbdy_outlistnbdy_outlist178,5708 + nbdy_loclistnbdy_loclist179,5742 + nbdy_vartablenbdy_vartable180,5776 + nbdy_assertsnbdy_asserts181,5812 + nbdy_eqsnbdy_eqs182,5858 +and var_info_tablevar_info_table184,5904 +and static_paramstatic_param185,5966 + StaticParamTypeStaticParamType186,5985 + | StaticParamConstStaticParamConst187,6017 + | StaticParamNodeStaticParamNode188,6062 +and var_infovar_info189,6148 + va_natureva_nature190,6165 + va_nameva_name191,6191 + va_typeva_type192,6214 + va_clockva_clock193,6238 +and var_naturevar_nature195,6265 + VarInputVarInput196,6282 + | VarOutputVarOutput197,6295 + | VarLocalVarLocal198,6309 +and eq_infoeq_info199,6322 + eq_lefteq_left200,6338 + eq_righteq_right201,6367 +and clock_expclock_exp204,6449 + BaseClockBaseClock205,6465 + | NamedClockNamedClock206,6479 +and left_partleft_part207,6515 + LeftVarLeftVar209,6586 + | LeftFieldLeftField210,6621 + | LeftArrayLeftArray211,6672 + | LeftSliceLeftSlice212,6725 +and slice_infoslice_info213,6779 + si_firstsi_first214,6798 + si_lastsi_last215,6821 + si_stepsi_step216,6844 +and val_expval_exp229,7388 + CallByPosCallByPos230,7402 + | CallByNameCallByName231,7460 +and by_pos_opby_pos_op234,7585 + NULL_expNULL_exp236,7620 + | TRUE_nTRUE_n237,7633 + | FALSE_nFALSE_n238,7644 + | ICONST_nICONST_n239,7656 + | RCONST_nRCONST_n240,7680 + | IDENT_nIDENT_n241,7704 + | NOT_nNOT_n243,7749 + | UMINUS_nUMINUS_n244,7759 + | PRE_nPRE_n245,7772 + | CURRENT_nCURRENT_n246,7782 + | REAL2INT_nREAL2INT_n247,7796 + | INT2REAL_nINT2REAL_n248,7811 + | ARROW_nARROW_n250,7847 + | FBY_nFBY_n251,7859 + | WHEN_nWHEN_n252,7869 + | AND_nAND_n253,7880 + | OR_nOR_n254,7890 + | XOR_nXOR_n255,7899 + | IMPL_nIMPL_n256,7909 + | EQ_nEQ_n257,7920 + | NEQ_nNEQ_n258,7929 + | LT_nLT_n259,7939 + | LTE_nLTE_n260,7948 + | GT_nGT_n261,7958 + | GTE_nGTE_n262,7967 + | DIV_nDIV_n263,7977 + | MOD_nMOD_n264,7987 + | MINUS_nMINUS_n265,7997 + | PLUS_nPLUS_n266,8009 + | SLASH_nSLASH_n267,8020 + | TIMES_nTIMES_n268,8032 + | POWER_nPOWER_n269,8044 + | HAT_nHAT_n270,8056 + | CONCAT_nCONCAT_n271,8066 + | IF_nIF_n273,8101 + | WITH_nWITH_n274,8110 + | NOR_nNOR_n276,8141 + | DIESE_nDIESE_n277,8151 + | TUPLE_nTUPLE_n278,8163 + | ARRAY_nARRAY_n279,8175 + | PROJ_nPROJ_n285,8446 + | CALL_nCALL_n287,8511 + | ARRAY_ACCES_nARRAY_ACCES_n289,8586 + | ARRAY_SLICE_nARRAY_SLICE_n290,8615 + | STRUCT_ACCESS_nSTRUCT_ACCESS_n292,8691 +and by_name_opby_name_op298,8844 + BYNAME_CALL_nBYNAME_CALL_n299,8861 + | STRUCT_EXP_nSTRUCT_EXP_n301,8926 +and oper_expoper_exp303,8984 + CallPreDefCallPreDef304,8999 + | CallUsrDefCallUsrDef305,9027 +and static_argstatic_arg313,9293 + StaticArgIdentStaticArgIdent314,9310 + | StaticArgConstStaticArgConst315,9344 + | StaticArgTypeStaticArgType316,9374 + | StaticArgNodeStaticArgNode317,9405 +let give_pack_this_namegive_pack_this_name324,9575 +let leafexpleafexp339,9884 +let unexpunexp343,9956 +let binexpbinexp347,10031 +let ternexpternexp351,10115 +let naryexpnaryexp355,10207 +let bynameexpbynameexp359,10286 +let make_packbodymake_packbody374,10805 +let add_infoadd_info393,11373 +let lexeme_of_val_explexeme_of_val_exp425,12309 +let rec lexeme_of_left_partlexeme_of_left_part429,12439 +let lexeme_of_pack_or_modellexeme_of_pack_or_model436,12651 +let (pack_or_model_to_stringpack_or_model_to_string443,12794 + +./syntaxTreeDump.mli,137 +SyntaxTreeDump1,0 +val packinfopackinfo6,121 +val packbodypackbody7,199 +val modelinfomodelinfo9,263 +val op2stringop2string10,343 ./syntaxTreeDump.ml,1938 SyntaxTreeDump1,0 @@ -520,12 +662,20 @@ let dump_packgivendump_packgiven627,20832 let rec packinfopackinfo641,21241 let modelinfomodelinfo660,21970 -./verbose.ml,120 +./verbose.mli,137 +Verbose1,0 +val set_levelset_level16,413 +val get_levelget_level17,441 +val printfprintf19,470 +val print_stringprint_string20,536 + +./verbose.ml,164 Verbose1,0 let _level_level27,880 let set_levelset_level29,900 let get_levelget_level30,940 -let putput33,1003 +let printfprintf33,1003 +let print_stringprint_string36,1112 ./version.ml,118 Version1,0 diff --git a/src/ident.ml b/src/ident.ml index c3546da7d99e53700039d1fbc23aadc77ed6cce9..0fffc4ae8bd1db93327453c2f4e607ed02744be4 100644 --- a/src/ident.ml +++ b/src/ident.ml @@ -1,4 +1,4 @@ -(** Time-stamp: <modified the 21/12/2007 (at 14:34) by Erwan Jahier> *) +(** Time-stamp: <modified the 29/01/2008 (at 09:33) by Erwan Jahier> *) (* J'ai appele ca symbol (mais ca remplace le ident) : c'est juste une couche qui garantit l'unicite en memoire @@ -85,7 +85,7 @@ let (to_pack_name : t -> pack_name) = -(* -> syntaxeTree.ml *) +(* -> syntaxeTree.ml ? *) type idref = { diff --git a/src/lazyCompiler.ml b/src/lazyCompiler.ml index 97ec90b2dcf9dffda00066c91fdb1128315713ef..d984ad31ba2ec7630965a6c0d00a92ced42fd7d2 100644 --- a/src/lazyCompiler.ml +++ b/src/lazyCompiler.ml @@ -1,4 +1,4 @@ -(** Time-stamp: <modified the 19/12/2007 (at 10:39) by Erwan Jahier> *) +(** Time-stamp: <modified the 30/01/2008 (at 11:12) by Erwan Jahier> *) open Lxm @@ -7,22 +7,14 @@ open SyntaxTree open CompiledData - - (******************************************************************************) -(** Returns the ident on which the recursion was detedted, plus an execution +(** Returns the ident on which the recursion was detected, plus an execution stack description. - - XXX cf QUESTION - *) exception Recursion_error of (Ident.long as 'id) * (string list as 'stack) -(* vraiment utile ????? *) exception BadCheckRef_error - -(* XXX cf QUESTION *) let recursion_error (lxm : Lxm.t) (stack : string list) = let rec string_of_stack = function | [] -> "" @@ -65,130 +57,216 @@ fun tbl -> (******************************************************************************) -(* -Compiler les types -- do_type : nom absolu -> type_eff, c'est là qu'on tabule les résultat +(******************************************************************************) + +(** Type checking + constant checking/evaluation + + This is performed (lazily) by 10 mutually recursive functions: + + types checking + -------------- + (1) [type_check env type_name lxm]: type check the type id [type_name] + (3) [type_check_do]: untabulated version of [type_check] (do the real work). -- do_prov_type : nom absolu -> type_eff, c'est là qu'on tabule les résultat + (2) [type_check_interface]: ditto, but for the interface part + (2) [type_check_interface_do]: untabulated version (do the real work) -- check_type_def : - * type_info + table de symbole et nom du pack courant - * utilisée par do_type et par do_prov_type - * utilise, si nécessaire la compil type_exp -> type_eff - => voir eval_type/eval_const + (4) [solve_type_idref] solves constant reference (w.r.t. short/long ident) + + constants checking + ------------------ + (5) [const_check env const_name lxm]: eval/check the constant [const_name] + (7) [const_check_do] : untabulated version (do the real work) + + (6) [const_check_interface]: ditto, but for the interface part + (6) [const_check_interface_do]: untabulated version (do the real work) + + (8) [solve_const_idref] solves constant reference (w.r.t. short/long ident) + + nb : the 4 functions dealing with constants duplicate 90% of the + code of the 4 functions dealing with types. It is not easy to + factorize them out (because of the 10%). I managed to do it for + [type_check] and [const_check], but even there, it is not that clear + that it was worthwhile... *) -(* -Compiler, si besoin, le type identifié par tk à -l'intérieur du pack correspondant. + +(* Before starting, let's define a few utilitary functions. *) + +(** Intermediary results are put into a table. This tabulation handling + is common to type and constant checking, and is performed by the + 2 following functions. + + Since [x] is meant to stand for [type] or [const], those 2 + functions will lead to the definition of 4 functions: + [type_check], [const_check], [type_check_interface], + [const_check_interface]. *) -(* exported *) -let rec do_type - (this: t) (* l'env global *) - (tk: Ident.long) (* 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)])) - | Incorrect -> raise (BadCheckRef_error) - ) with - Not_found -> ( - Hashtbl.add this.types tk Checking ; - let (p,t) = (Ident.pack_of_long tk, Ident.of_long tk) in - let lenv = SyntaxTab.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 +let x_check tab find_x x_check_do lookup_x_eff this x_long_name lxm = + try lookup_x_eff tab x_long_name lxm + with Not_found -> + Hashtbl.add tab x_long_name Checking; + let (x_pack,xn) = (Ident.pack_of_long x_long_name, Ident.of_long x_long_name) in + let x_pack_symbols = SyntaxTab.pack_body_env this.src_tab x_pack in + let x_def = match find_x x_pack_symbols xn with + | SymbolTab.Here x_def -> x_def + | SymbolTab.NotHere _ -> assert false + in + let res = x_check_do this x_long_name lxm x_pack_symbols x_pack x_def in + Hashtbl.replace tab x_long_name (Checked res); + res + +let x_check_interface + tab find_x x_check x_check_interface_do lookup_x_eff this x_long_name lxm = + try lookup_x_eff tab x_long_name lxm + with Not_found -> + Hashtbl.add tab x_long_name Checking; + let (xp,xn) = (Ident.pack_of_long x_long_name, Ident.of_long x_long_name) in + let xp_prov_symbols_opt = SyntaxTab.pack_prov_env this.src_tab xp in + let res = (* [xp] migth have no provided symbol table *) + match xp_prov_symbols_opt with + | None -> x_check this x_long_name lxm + (* if [xp] have no provided symbol table, the whole + package is exported. *) + | Some xp_prov_symbols -> + let x_def = match find_x xp_prov_symbols xn 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)])) - | Incorrect -> raise (BadCheckRef_error) - ) with - Not_found -> ( - Hashtbl.add this.prov_types tk Checking ; - let (p,t) = (Ident.pack_of_long tk, Ident.of_long tk) in - let res = ( - match SyntaxTab.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 _ -> 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 = SyntaxTab.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: Ident.pack_name) (* nom du pack courant *) - (tix: SyntaxTree.type_info srcflaged) - = try ( + x_check_interface_do this x_long_name lxm xp_prov_symbols xp x_def + in + Hashtbl.replace tab x_long_name (Checked res); + res + +(* Returns the tabulated [type] or [const], if it has already been computed; + otherwise, raise [Not_found] otherwise. *) +let lookup_x_eff x_label types_tab x_long_name lxm = + match Hashtbl.find types_tab x_long_name with + | Checked res -> res + | Checking -> raise (Recursion_error (x_long_name, [x_label^(Lxm.details lxm)])) + | Incorrect -> raise (BadCheckRef_error) + +let (lookup_type_eff: (item_key, CompiledData.type_eff check_flag) Hashtbl.t -> + Ident.long -> Lxm.t -> CompiledData.type_eff) = + lookup_x_eff "type ref " + +let (lookup_const_eff:(item_key, CompiledData.const_eff check_flag) Hashtbl.t -> + Ident.long -> Lxm.t -> CompiledData.const_eff) = + lookup_x_eff "const ref " + + +(* And now we can start the big mutually recursive definition... *) + +(** Tabulated version of [type_check_do]. *) +let rec (type_check : t -> Ident.long -> Lxm.t -> CompiledData.type_eff) = + fun this -> + x_check this.types SymbolTab.find_type type_check_do lookup_type_eff this + +(** Tabulated version of [const_check_do]. *) +and (const_check : t -> Ident.long -> Lxm.t -> CompiledData.const_eff) = + fun this -> + x_check this.consts SymbolTab.find_const const_check_do lookup_const_eff this + +(** Tabulated version of [type_check_interface_do]. *) +and (type_check_interface: t -> Ident.long -> Lxm.t -> CompiledData.type_eff) = + fun this -> + x_check_interface + this.prov_types SymbolTab.find_type type_check type_check_interface_do + lookup_type_eff this + +(** Tabulated version of [const_check_interface_do]. *) +and (const_check_interface: t -> Ident.long -> Lxm.t -> CompiledData.const_eff) = + fun this -> + x_check_interface + this.prov_consts SymbolTab.find_const const_check const_check_interface_do + lookup_const_eff this + + +(* now the real work! *) +and (type_check_interface_do: t -> Ident.long -> Lxm.t -> SymbolTab.t -> + Ident.pack_name -> SyntaxTree.type_info srcflaged -> CompiledData.type_eff) = + fun this type_name lxm prov_symbols pack_name type_def -> + (* We type check the interface and the body. + For non-abstract types, we also check that both effective types are + the same. *) + let body_type_eff = type_check this type_name lxm in + let prov_type_eff = + type_check_do this type_name lxm prov_symbols pack_name type_def + in + match prov_type_eff with + | External_type_eff _ -> prov_type_eff (* no check is necessary *) + | Bool_type_eff + | Int_type_eff + | Real_type_eff + | Enum_type_eff (_,_) + | Array_type_eff (_,_) + | Struct_type_eff (_,_) + -> (* Not an abstract type: therefore, we check that [prov_type_eff] + is the same as [body_type_eff]. + *) + let body_symbols = SyntaxTab.pack_body_env this.src_tab pack_name in + let prov_type_eff_body = + type_check_do this type_name lxm body_symbols pack_name type_def + in + assert (prov_type_eff_body = body_type_eff); + if prov_type_eff_body = body_type_eff then + prov_type_eff + else + raise(Compile_error ( + type_def.src, + "provided type inconsistant with its implementation" )) + (* Ici ; affichage + sympa ??? *) + + +and (const_check_interface_do: t -> Ident.long -> Lxm.t -> SymbolTab.t -> + Ident.pack_name -> SyntaxTree.const_info srcflaged -> CompiledData.const_eff) = + fun this cn lxm prov_symbols p const_def -> + (* on évalue à l'intérieur de provided *) + let prov_const_eff = const_check_do this cn lxm prov_symbols p const_def in + (* on force la compil de la version body (implémentation) *) + let body_const_eff = const_check this cn 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 ( + const_def.src, + "provided constant inconsistant with its implementation" + (* Ici ; affichage + sympa ??? *) + )) + | Bool_const_eff _ + | Int_const_eff _ + | Real_const_eff _ + | Enum_const_eff (_,_) + | Struct_const_eff (_,_) + | Array_const_eff (_,_) + -> assert false (* pas abstrait => impossible ! *) + +and (type_check_do: t -> Ident.long -> Lxm.t -> SymbolTab.t -> Ident.pack_name -> + SyntaxTree.type_info srcflaged -> CompiledData.type_eff) = + fun + this (* l'env global*) + type_name(* juste pour les erreurs de récursions *) + lxm (* ditto *) + symbols (* table courante des symboles *) + p (* nom du pack courant *) + type_def + -> 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 + id2const = (solve_const_idref this symbols p); + id2type = (solve_type_idref this symbols p); + } + in + let tinfo = type_def.it in match tinfo with - ExternalType s -> External_type_eff (Ident.make_long p s) - | AliasedType (s, texp) -> - EvalType.f eval_env texp + | ExternalType s -> External_type_eff (Ident.make_long p s) + | AliasedType (s, texp) -> EvalType.f eval_env texp | EnumType (s, clst) -> ( let n : Ident.long = Ident.make_long p s in let putpack x = Ident.make_long p x.it in @@ -198,20 +276,17 @@ let rec do_type | StructType sti -> ( let make_field (fname : Ident.t) = ( let field_def = Hashtbl.find sti.st_ftable fname in - let teff = EvalType.f - eval_env field_def.it.fd_type in + let teff = EvalType.f eval_env field_def.it.fd_type in match field_def.it.fd_value with - None -> ( - (fname, teff, None) - ) + | None -> (fname, teff, None) | Some vexp -> ( let veff = EvalConst.eval_const eval_env vexp in match veff with - [v] -> ( + | [v] -> ( let tv = type_of_const_eff v in - if (tv = teff) then ( - (fname, teff, Some v) - ) else + if (tv = teff) + then (fname, teff, Some v) + else raise (Compile_error( field_def.src, @@ -220,14 +295,16 @@ let rec do_type (string_of_type_eff teff) (string_of_type_eff tv) )) - ) - | _ -> + ) + | [] -> assert false + | _::_ -> raise ( Compile_error( field_def.src, "bad field value: tuple not allowed" )) ) - ) in + ) + in let eff_fields = List.map make_field sti.st_flist in let n = Ident.make_long p sti.st_name in Struct_type_eff (n, eff_fields) @@ -235,141 +312,38 @@ let rec do_type ) with (* capte et complete/stoppe les recursions *) Recursion_error (root, stack) -> ( - if (root = tk) then ( - (* on stoppe *) - recursion_error tix.src stack - ) else ( + if (root = type_name) then recursion_error type_def.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 - - 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: Ident.long) (* 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)])) - | Incorrect -> raise (BadCheckRef_error) - ) with - Not_found -> ( - Hashtbl.add this.consts ck Checking ; - let (p,c) = Ident.pack_of_long ck, Ident.of_long ck in - let lenv = SyntaxTab.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)])) - | Incorrect -> raise (BadCheckRef_error) - ) with - Not_found -> ( - Hashtbl.add this.prov_consts ck Checking ; - let (p,c) = Ident.pack_of_long ck, Ident.of_long ck in - let res = ( - match SyntaxTab.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 _ -> 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 +and (const_check_do : t -> Ident.long -> Lxm.t -> SymbolTab.t -> Ident.pack_name -> + SyntaxTree.const_info srcflaged -> CompiledData.const_eff) = + fun this cn lxm symbols currpack const_def -> + (* [cn] and [lxm] are used for recursion errors. + [symbols] is the current symbol table. *) - 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: Ident.pack_name) (* nom du pack courant *) - (cix: SyntaxTree.const_info srcflaged) - = try ( + 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 + id2const = (solve_const_idref this symbols currpack) ; + id2type = (solve_type_idref this symbols currpack) ; + } + in + let cinfo = const_def.it in match cinfo with - | ExternalConst (id, texp) -> ( - Extern_const_eff ((Ident.make_long p id), EvalType.f eval_env texp) - ) - | EnumConst (id, texp) -> ( - Enum_const_eff ((Ident.make_long p id), EvalType.f eval_env texp) - ) + | ExternalConst (id, texp) -> + Extern_const_eff ((Ident.make_long currpack id), EvalType.f eval_env texp) + + | EnumConst (id, texp) -> + Enum_const_eff ((Ident.make_long currpack id), EvalType.f eval_env texp) + | DefinedConst (id, texp_opt, vexp ) -> ( match (EvalConst.eval_const eval_env vexp) with - [ceff] -> ( + | [ceff] -> ( match texp_opt with - None -> ( ceff) + | None -> ( ceff) | Some texp -> ( let tdecl = EvalType.f eval_env texp in let teff = type_of_const_eff ceff in @@ -377,7 +351,7 @@ let rec do_type else raise (Compile_error - (cix.src , + (const_def.src , Printf.sprintf " this constant is declared as '%s' but evaluated as '%s'" (string_of_type_eff tdecl) @@ -385,85 +359,67 @@ let rec do_type )) ) ) - | _ -> raise (Compile_error - (cix.src, - "bad constant value: tuple not allowed")) + | [] -> assert false + | _::_ -> raise (Compile_error + (const_def.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 + if (root = cn) then ( + recursion_error const_def.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: Ident.pack_name) - (idr: Ident.idref) - (lxm: Lxm.t) - = ( - let s = Ident.name_of_idref idr in - match Ident.pack_of_idref idr with - Some p -> ( - (* référence absolue -> on refile le boulot à this *) - do_prov_type this (Ident.make_long 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 (Ident.make_long 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")) - ) - ) - ) and - solve_const_idref - (this: t) (* l'env global *) - (penv: SymbolTab.t) (* table des symboles courante *) - (curpack: Ident.pack_name) - (idr: Ident.idref) - (lxm: Lxm.t) - = ( - let s = Ident.name_of_idref idr in - match (Ident.pack_of_idref idr) with - Some p -> ( - (* référence absolue -> on refile le boulot à this *) - do_prov_const this (Ident.make_long 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 (Ident.make_long 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")) - ) - ) - ) + +(** solving type and constant references *) +and (solve_type_idref : t -> SymbolTab.t -> Ident.pack_name -> Ident.idref -> Lxm.t + -> CompiledData.type_eff) = + fun this symbols currpack idr lxm -> + let s = Ident.name_of_idref idr in + match Ident.pack_of_idref idr with + | Some p -> + (* référence absolue -> on refile le boulot à this *) + type_check_interface this (Ident.make_long p s) lxm + + | None -> + (* on passe par symbols pour savoir quoi faire ... *) + try + match (SymbolTab.find_type symbols s) with + | SymbolTab.Here _ -> + type_check this (Ident.make_long currpack s) lxm + + | SymbolTab.NotHere fid -> + (* référence absolue -> on refile le boulot à this *) + type_check_interface this fid lxm + + with Not_found -> + raise(Compile_error(lxm,"unbounded type ident")) + +and (solve_const_idref : t -> SymbolTab.t -> Ident.pack_name -> Ident.idref -> + Lxm.t -> const_eff) = + fun this symbols curpack idr lxm -> + let s = Ident.name_of_idref idr in + match (Ident.pack_of_idref idr) with + | Some p -> + (* référence absolue -> on refile le boulot à this *) + const_check_interface this (Ident.make_long p s) lxm + | None -> + (* Printf.printf "solve_const_idref %s\n" s ; *) + (* on passe par symbols pour savoir quoi faire ... *) + try + match (SymbolTab.find_const symbols s) with + | SymbolTab.Here _ -> + const_check this (Ident.make_long curpack s) lxm + | SymbolTab.NotHere fid -> + (* référence absolue -> on refile le boulot à this *) + const_check_interface this fid lxm + with Not_found -> + raise(Compile_error(lxm,"unbounded const ident")) + + (******************************************************************************) (* exported *) @@ -492,27 +448,44 @@ let (do_node: t -> CompiledData.node_key -> CompiledData.node_eff) = let test_types (this: t) = ( (* src_tab : SyntaxTab.t; *) let testpack pn = ( - Printf.printf "package %s\n" (Ident.pack_name_to_string pn); + Verbose.printf " * package %s\n" (Ident.pack_name_to_string pn); let stab = match SyntaxTab.pack_prov_env this.src_tab pn with Some tab -> tab | None -> SyntaxTab.pack_body_env this.src_tab pn - in - let testtype n v = ( + in + let testtype n v = match v with - SymbolTab.Here cix -> ( + | SymbolTab.Here const_def -> (* Printf.printf " const %s \n" n *) - let teff = do_prov_type this (Ident.make_long pn n) Lxm.dummy in - Printf.printf " type %s -> %s\n" (Ident.to_string n) + let teff = type_check_interface this (Ident.make_long pn n) Lxm.dummy in + Printf.printf "\t\ttype %s = %s\n" (Ident.to_string n) (string_of_type_eff teff) - ) - | SymbolTab.NotHere fid -> ( - Printf.printf " type %s -> %s\n" (Ident.to_string n) (Ident.string_of_long fid) ; - ) - ) + + | SymbolTab.NotHere fid -> + Printf.printf "\t\ttype %s = %s (imported)\n" + (Ident.to_string n) + (Ident.string_of_long fid) ; + in + let testconst n v = + match v with + | SymbolTab.Here const_def -> + (* Printf.printf " const %s \n" n *) + let teff = type_check_interface this (Ident.make_long pn n) Lxm.dummy in + Printf.printf "\t\ttype %s = %s\n" (Ident.to_string n) + (string_of_type_eff teff) + + | SymbolTab.NotHere fid -> + Printf.printf "\t\ttype %s = %s (imported)\n" + (Ident.to_string n) + (Ident.string_of_long fid) ; in - SymbolTab.iter_types stab testtype + Verbose.print_string "\tExported types:\n"; + SymbolTab.iter_types stab testtype; +(* Verbose.print_string "\tExported constants:\n"; *) +(* SymbolTab.iter_consts stab testconst *) ) in let plist = SyntaxTab.pack_list this.src_tab in + Verbose.print_string "*** Dump the exported items of the packages.\n"; List.iter testpack plist ) diff --git a/src/lazyCompiler.mli b/src/lazyCompiler.mli index 2a02a8540da575c73c00e36b69d5d7566a0976dd..63acc69c283b7f76ee378907b052bc31fcf6e3a2 100644 --- a/src/lazyCompiler.mli +++ b/src/lazyCompiler.mli @@ -1,4 +1,6 @@ -(** Time-stamp: <modified the 19/12/2007 (at 09:50) by Erwan Jahier> *) +(** Time-stamp: <modified the 29/01/2008 (at 15:43) by Erwan Jahier> *) + +(** nb: compiling = type checking + constant evaluation *) (** A lazy compiler is an internal structure that contains tables @@ -8,18 +10,9 @@ *) type t -(* Create en lazy compiler. *) +(* Create a lazy compiler. *) val create : SyntaxTab.t -> t -(** Compiles one type. - - nb: modifies its first argument! - *) -val do_type : t -> Ident.long -> Lxm.t -> CompiledData.type_eff - -(** Compiles one provided type *) -val do_prov_type : t -> Ident.long -> Lxm.t -> CompiledData.type_eff -(* val do_prov_const : t -> Ident.long -> Lxm.t -> CompiledData.type_eff *) (** Compiles one node *) val do_node : t -> CompiledData.node_key -> CompiledData.node_eff diff --git a/src/main.ml b/src/main.ml index 7554fad7902deddaf2d861e9a55e2ac7b0e7b146..21de61c413a8f199b5eee5f502cc12c95d4d90cb 100644 --- a/src/main.ml +++ b/src/main.ml @@ -1,4 +1,4 @@ -(** Time-stamp: <modified the 28/01/2008 (at 14:10) by Erwan Jahier> *) +(** Time-stamp: <modified the 28/01/2008 (at 14:51) by Erwan Jahier> *) (** Here follows a description of the different modules used by this lus2lic compiler. @@ -24,7 +24,7 @@ which results into a parse tree containing raw source expressions. syntaxTab is a kind of layer above syntaxTree to make things easier afterwards. -(3) Finally, the compilation (checking+const/type evaluation) is performed. +(3) Finally, the compilation (type checking+const/type evaluation) is performed. compile.ml lazyCompiler.mli/ml diff --git a/src/symbolTab.ml b/src/symbolTab.ml index 6cdbdd164ad504ac92f2708a5df0743901a54da5..e70bca2a8d1e9bfc2512e7849a8dd150c4c4273a 100644 --- a/src/symbolTab.ml +++ b/src/symbolTab.ml @@ -1,3 +1,4 @@ +(** Time-stamp: <modified the 30/01/2008 (at 09:44) by Erwan Jahier> *) (* Sous-module pour SyntaxTab @@ -11,16 +12,16 @@ type 'a hereflaged = | NotHere of Ident.long type t = { - st_consts : (Ident.t , (const_info srcflaged) hereflaged) Hashtbl.t ; - st_types : (Ident.t , (type_info srcflaged) hereflaged) Hashtbl.t ; - st_opers : (Ident.t , (oper_info srcflaged) hereflaged) Hashtbl.t ; + st_consts: (Ident.t , (const_info srcflaged) hereflaged) Hashtbl.t ; + st_types : (Ident.t , (type_info srcflaged) hereflaged) Hashtbl.t ; + st_opers : (Ident.t , (oper_info srcflaged) hereflaged) Hashtbl.t ; } (* Création/initialisation d'une symbol_tab *) let create () = { st_consts = Hashtbl.create 50; - st_types = Hashtbl.create 50; - st_opers = Hashtbl.create 50; + st_types = Hashtbl.create 50; + st_opers = Hashtbl.create 50; } let find_type (this: t) (id: Ident.t) = ( diff --git a/src/symbolTab.mli b/src/symbolTab.mli index ccc150909b31584c15acc4cec83f4537ed3b56f4..b3dfd3900a56c45e6f44c054a8f340058d55e9a7 100644 --- a/src/symbolTab.mli +++ b/src/symbolTab.mli @@ -1,4 +1,4 @@ -(** Time-stamp: <modified the 18/12/2007 (at 11:10) by Erwan Jahier> *) +(** Time-stamp: <modified the 30/01/2008 (at 09:53) by Erwan Jahier> *) (********************************************************** Sous-module pour SyntaxTab @@ -14,8 +14,8 @@ qui sont par d ***********************************************************) type 'a hereflaged = - Here of 'a - | NotHere of Ident.long + Here of 'a (* local items *) + | NotHere of Ident.long (* imported items *) type t diff --git a/src/syntaxTab.ml b/src/syntaxTab.ml index 56bb62638bd8b04a1638e14e8695068fd42238ea..7bd1df14998c17a5e857a013b39d38ee91a4f777 100644 --- a/src/syntaxTab.ml +++ b/src/syntaxTab.ml @@ -1,4 +1,4 @@ -(** Time-stamp: <modified the 28/01/2008 (at 14:16) by Erwan Jahier> *) +(** Time-stamp: <modified the 30/01/2008 (at 10:44) by Erwan Jahier> *) (** Table des infos sources : une couche au dessus de SyntaxTree pour mieux @@ -399,7 +399,7 @@ let (dump : t -> unit) = (fun pm -> p (SyntaxTree.pack_or_model_to_string pm); p "\n\t\t") x.st_list ; - p "\n\t - Raw module table: "; + p "\n\t - Raw model table: "; (* st_raw_mod_tab : (Ident.t , model_info srcflaged) Hashtbl.t ; *) Hashtbl.iter (fun id _mi -> p ((Ident.to_string id) ^ " ")) diff --git a/src/syntaxTab.mli b/src/syntaxTab.mli index 345d6ddb50a379c31e12fc29cbf99574267c51cd..8a79adc275e47db1d3c5c1816b4fbde55e8e33ef 100644 --- a/src/syntaxTab.mli +++ b/src/syntaxTab.mli @@ -1,4 +1,4 @@ -(** Time-stamp: <modified the 17/12/2007 (at 18:02) by Erwan Jahier> *) +(** Time-stamp: <modified the 30/01/2008 (at 09:47) by Erwan Jahier> *) (** source info tables: tabulated version of the parse tree @@ -18,8 +18,9 @@ val create : SyntaxTree.pack_or_model list -> t (* accès aux infos *) val pack_body_env : t -> Ident.pack_name -> SymbolTab.t -val pack_prov_env : t -> Ident.pack_name -> SymbolTab.t option +(** A package may have no provided part *) +val pack_prov_env : t -> Ident.pack_name -> SymbolTab.t option (* Liste des noms de packs *) val pack_list : t -> Ident.pack_name list diff --git a/src/syntaxTree.ml b/src/syntaxTree.ml index bd1927bc5dadb64fc73090fa004a0e0330a1ac74..38176514af9f424996eeb804abc734b2884e1e2f 100644 --- a/src/syntaxTree.ml +++ b/src/syntaxTree.ml @@ -1,9 +1,9 @@ -(** Time-stamp: <modified the 28/01/2008 (at 14:01) by Erwan Jahier> *) +(** Time-stamp: <modified the 30/01/2008 (at 09:58) by Erwan Jahier> *) (** (Raw) Abstract syntax tree of source programs. -This syntax tree represented by Hash tables. + This syntax tree represented by Hash tables. *) open Printf diff --git a/src/test/test.res b/src/test/test.res index 86852591d0806e6e189c593c820fe003beb2cb95..a30bbe7b095e3337a154b5f644d1d494f5b98b4d 100644 --- a/src/test/test.res +++ b/src/test/test.res @@ -25,30 +25,37 @@ Non-regression tests init symbol tables for pack pbool init symbol tables for pack preal *** SyntaxTab.create done - « Syntax table dump: - Package or model list:modSimple (model) +*** « Syntax table dump: + - Package or model list: + modSimple (model) pint (pack) pbool (pack) preal (pack) inter (pack) mainPack (pack) - Raw module table: modSimple - Raw Package table: inter mainPack pint pbool preal - Package manager table: inter mainPack pint pbool preal + - Raw model table: modSimple + - Raw Package table: inter mainPack pint pbool preal + - Package manager table: inter mainPack pint pbool preal End of Syntax table dump. » -- MAIN NODE: "pint::main" -package preal - type t -> real -package pbool - type t -> bool -package pint - type t -> int -package mainPack - type selType -> inter::selType -package inter - type t -> preal::t - type selType -> inter::selType +*** Dump the exported items of the packages. + * package preal + Exported types: + type t = real + * package pbool + Exported types: + type t = bool + * package pint + Exported types: + type t = int + * package mainPack + Exported types: + type selType = inter::selType (imported) + * package inter + Exported types: + type t = preal::t (imported) + type selType = inter::selType ====> ../lus2lic -vl 3 struct0.lus *** SyntaxTab.create pass 1 @@ -59,16 +66,19 @@ package inter *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:struct0 (pack) +*** « Syntax table dump: + - Package or model list: + struct0 (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "struct0::main" -package dummy - type Toto -> dummy::Toto +*** Dump the exported items of the packages. + * package dummy + Exported types: + type Toto = dummy::Toto ====> ../lus2lic -vl 3 t0.lus *** SyntaxTab.create pass 1 @@ -81,15 +91,18 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:t0 (pack) +*** « Syntax table dump: + - Package or model list: + t0 (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "t0::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 t2.lus *** SyntaxTab.create pass 1 @@ -103,15 +116,18 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:t2 (pack) +*** « Syntax table dump: + - Package or model list: + t2 (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "t2::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 test.lus *** SyntaxTab.create pass 1 @@ -122,16 +138,19 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack P1 *** SyntaxTab.create done - « Syntax table dump: - Package or model list:P1 (pack) +*** « Syntax table dump: + - Package or model list: + P1 (pack) - Raw module table: - Raw Package table: P1 - Package manager table: P1 + - Raw model table: + - Raw Package table: P1 + - Package manager table: P1 End of Syntax table dump. » -- MAIN NODE: "P1::main" -package P1 - type titi -> P1::titi +*** Dump the exported items of the packages. + * package P1 + Exported types: + type titi = P1::titi ====> ../lus2lic -vl 3 trivial.lus *** SyntaxTab.create pass 1 @@ -141,15 +160,18 @@ package P1 *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:trivial (pack) +*** « Syntax table dump: + - Package or model list: + trivial (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "trivial::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 x.lus *** SyntaxTab.create pass 1 @@ -163,15 +185,18 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:x (pack) +*** « Syntax table dump: + - Package or model list: + x (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "x::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 consensus.lus *** SyntaxTab.create pass 1 @@ -184,15 +209,18 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:consensus (pack) +*** « Syntax table dump: + - Package or model list: + consensus (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "consensus::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 left.lus *** SyntaxTab.create pass 1 @@ -203,16 +231,19 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:left (pack) +*** « Syntax table dump: + - Package or model list: + left (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "left::main" -package dummy - type truc -> dummy::truc +*** Dump the exported items of the packages. + * package dummy + Exported types: + type truc = dummy::truc ====> ../lus2lic -vl 3 packs.lus *** SyntaxTab.create pass 1 @@ -249,34 +280,41 @@ package dummy init symbol tables for pack pbool init symbol tables for pack preal *** SyntaxTab.create done - « Syntax table dump: - Package or model list:modSimple (model) +*** « Syntax table dump: + - Package or model list: + modSimple (model) pint (pack) pbool (pack) preal (pack) inter (pack) mainPack (pack) - Raw module table: modSimple - Raw Package table: inter mainPack pint pbool preal - Package manager table: inter mainPack pint pbool preal + - Raw model table: modSimple + - Raw Package table: inter mainPack pint pbool preal + - Package manager table: inter mainPack pint pbool preal End of Syntax table dump. » -- MAIN NODE: "pint::main" -package preal - type t -> real -package pbool - type t -> bool -package pint - type t -> int -package mainPack - type selType -> inter::selType - type toto -> inter::toto - type T -> int^8 - type couleurs -> mainPack::couleurs -package inter - type t -> preal::t - type selType -> inter::selType - type toto -> inter::toto +*** Dump the exported items of the packages. + * package preal + Exported types: + type t = real + * package pbool + Exported types: + type t = bool + * package pint + Exported types: + type t = int + * package mainPack + Exported types: + type selType = inter::selType (imported) + type toto = inter::toto (imported) + type T = int^8 + type couleurs = mainPack::couleurs + * package inter + Exported types: + type t = preal::t (imported) + type selType = inter::selType + type toto = inter::toto ====> ../lus2lic -vl 3 p.lus *** SyntaxTab.create pass 1 @@ -303,30 +341,37 @@ package inter init symbol tables for pack pbool init symbol tables for pack preal *** SyntaxTab.create done - « Syntax table dump: - Package or model list:modSimple (model) +*** « Syntax table dump: + - Package or model list: + modSimple (model) pint (pack) pbool (pack) preal (pack) inter (pack) mainPack (pack) - Raw module table: modSimple - Raw Package table: inter mainPack pint pbool preal - Package manager table: inter mainPack pint pbool preal + - Raw model table: modSimple + - Raw Package table: inter mainPack pint pbool preal + - Package manager table: inter mainPack pint pbool preal End of Syntax table dump. » -- MAIN NODE: "pint::main" -package preal - type t -> real -package pbool - type t -> bool -package pint - type t -> int -package mainPack - type selType -> inter::selType -package inter - type t -> preal::t - type selType -> inter::selType +*** Dump the exported items of the packages. + * package preal + Exported types: + type t = real + * package pbool + Exported types: + type t = bool + * package pint + Exported types: + type t = int + * package mainPack + Exported types: + type selType = inter::selType (imported) + * package inter + Exported types: + type t = preal::t (imported) + type selType = inter::selType ====> ../lus2lic -vl 3 t.lus *** SyntaxTab.create pass 1 @@ -339,15 +384,18 @@ package inter *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:t (pack) +*** « Syntax table dump: + - Package or model list: + t (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "t::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 trivial.lus *** SyntaxTab.create pass 1 @@ -357,15 +405,18 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:trivial (pack) +*** « Syntax table dump: + - Package or model list: + trivial (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "trivial::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 t1.lus *** SyntaxTab.create pass 1 @@ -377,12 +428,15 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:t1 (pack) +*** « Syntax table dump: + - Package or model list: + t1 (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "t1::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: diff --git a/src/test/test.res.exp b/src/test/test.res.exp index 86852591d0806e6e189c593c820fe003beb2cb95..a30bbe7b095e3337a154b5f644d1d494f5b98b4d 100644 --- a/src/test/test.res.exp +++ b/src/test/test.res.exp @@ -25,30 +25,37 @@ Non-regression tests init symbol tables for pack pbool init symbol tables for pack preal *** SyntaxTab.create done - « Syntax table dump: - Package or model list:modSimple (model) +*** « Syntax table dump: + - Package or model list: + modSimple (model) pint (pack) pbool (pack) preal (pack) inter (pack) mainPack (pack) - Raw module table: modSimple - Raw Package table: inter mainPack pint pbool preal - Package manager table: inter mainPack pint pbool preal + - Raw model table: modSimple + - Raw Package table: inter mainPack pint pbool preal + - Package manager table: inter mainPack pint pbool preal End of Syntax table dump. » -- MAIN NODE: "pint::main" -package preal - type t -> real -package pbool - type t -> bool -package pint - type t -> int -package mainPack - type selType -> inter::selType -package inter - type t -> preal::t - type selType -> inter::selType +*** Dump the exported items of the packages. + * package preal + Exported types: + type t = real + * package pbool + Exported types: + type t = bool + * package pint + Exported types: + type t = int + * package mainPack + Exported types: + type selType = inter::selType (imported) + * package inter + Exported types: + type t = preal::t (imported) + type selType = inter::selType ====> ../lus2lic -vl 3 struct0.lus *** SyntaxTab.create pass 1 @@ -59,16 +66,19 @@ package inter *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:struct0 (pack) +*** « Syntax table dump: + - Package or model list: + struct0 (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "struct0::main" -package dummy - type Toto -> dummy::Toto +*** Dump the exported items of the packages. + * package dummy + Exported types: + type Toto = dummy::Toto ====> ../lus2lic -vl 3 t0.lus *** SyntaxTab.create pass 1 @@ -81,15 +91,18 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:t0 (pack) +*** « Syntax table dump: + - Package or model list: + t0 (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "t0::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 t2.lus *** SyntaxTab.create pass 1 @@ -103,15 +116,18 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:t2 (pack) +*** « Syntax table dump: + - Package or model list: + t2 (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "t2::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 test.lus *** SyntaxTab.create pass 1 @@ -122,16 +138,19 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack P1 *** SyntaxTab.create done - « Syntax table dump: - Package or model list:P1 (pack) +*** « Syntax table dump: + - Package or model list: + P1 (pack) - Raw module table: - Raw Package table: P1 - Package manager table: P1 + - Raw model table: + - Raw Package table: P1 + - Package manager table: P1 End of Syntax table dump. » -- MAIN NODE: "P1::main" -package P1 - type titi -> P1::titi +*** Dump the exported items of the packages. + * package P1 + Exported types: + type titi = P1::titi ====> ../lus2lic -vl 3 trivial.lus *** SyntaxTab.create pass 1 @@ -141,15 +160,18 @@ package P1 *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:trivial (pack) +*** « Syntax table dump: + - Package or model list: + trivial (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "trivial::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 x.lus *** SyntaxTab.create pass 1 @@ -163,15 +185,18 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:x (pack) +*** « Syntax table dump: + - Package or model list: + x (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "x::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 consensus.lus *** SyntaxTab.create pass 1 @@ -184,15 +209,18 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:consensus (pack) +*** « Syntax table dump: + - Package or model list: + consensus (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "consensus::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 left.lus *** SyntaxTab.create pass 1 @@ -203,16 +231,19 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:left (pack) +*** « Syntax table dump: + - Package or model list: + left (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "left::main" -package dummy - type truc -> dummy::truc +*** Dump the exported items of the packages. + * package dummy + Exported types: + type truc = dummy::truc ====> ../lus2lic -vl 3 packs.lus *** SyntaxTab.create pass 1 @@ -249,34 +280,41 @@ package dummy init symbol tables for pack pbool init symbol tables for pack preal *** SyntaxTab.create done - « Syntax table dump: - Package or model list:modSimple (model) +*** « Syntax table dump: + - Package or model list: + modSimple (model) pint (pack) pbool (pack) preal (pack) inter (pack) mainPack (pack) - Raw module table: modSimple - Raw Package table: inter mainPack pint pbool preal - Package manager table: inter mainPack pint pbool preal + - Raw model table: modSimple + - Raw Package table: inter mainPack pint pbool preal + - Package manager table: inter mainPack pint pbool preal End of Syntax table dump. » -- MAIN NODE: "pint::main" -package preal - type t -> real -package pbool - type t -> bool -package pint - type t -> int -package mainPack - type selType -> inter::selType - type toto -> inter::toto - type T -> int^8 - type couleurs -> mainPack::couleurs -package inter - type t -> preal::t - type selType -> inter::selType - type toto -> inter::toto +*** Dump the exported items of the packages. + * package preal + Exported types: + type t = real + * package pbool + Exported types: + type t = bool + * package pint + Exported types: + type t = int + * package mainPack + Exported types: + type selType = inter::selType (imported) + type toto = inter::toto (imported) + type T = int^8 + type couleurs = mainPack::couleurs + * package inter + Exported types: + type t = preal::t (imported) + type selType = inter::selType + type toto = inter::toto ====> ../lus2lic -vl 3 p.lus *** SyntaxTab.create pass 1 @@ -303,30 +341,37 @@ package inter init symbol tables for pack pbool init symbol tables for pack preal *** SyntaxTab.create done - « Syntax table dump: - Package or model list:modSimple (model) +*** « Syntax table dump: + - Package or model list: + modSimple (model) pint (pack) pbool (pack) preal (pack) inter (pack) mainPack (pack) - Raw module table: modSimple - Raw Package table: inter mainPack pint pbool preal - Package manager table: inter mainPack pint pbool preal + - Raw model table: modSimple + - Raw Package table: inter mainPack pint pbool preal + - Package manager table: inter mainPack pint pbool preal End of Syntax table dump. » -- MAIN NODE: "pint::main" -package preal - type t -> real -package pbool - type t -> bool -package pint - type t -> int -package mainPack - type selType -> inter::selType -package inter - type t -> preal::t - type selType -> inter::selType +*** Dump the exported items of the packages. + * package preal + Exported types: + type t = real + * package pbool + Exported types: + type t = bool + * package pint + Exported types: + type t = int + * package mainPack + Exported types: + type selType = inter::selType (imported) + * package inter + Exported types: + type t = preal::t (imported) + type selType = inter::selType ====> ../lus2lic -vl 3 t.lus *** SyntaxTab.create pass 1 @@ -339,15 +384,18 @@ package inter *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:t (pack) +*** « Syntax table dump: + - Package or model list: + t (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "t::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 trivial.lus *** SyntaxTab.create pass 1 @@ -357,15 +405,18 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:trivial (pack) +*** « Syntax table dump: + - Package or model list: + trivial (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "trivial::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: ====> ../lus2lic -vl 3 t1.lus *** SyntaxTab.create pass 1 @@ -377,12 +428,15 @@ package dummy *** SyntaxTab.create pass 3 init symbol tables for pack dummy *** SyntaxTab.create done - « Syntax table dump: - Package or model list:t1 (pack) +*** « Syntax table dump: + - Package or model list: + t1 (pack) - Raw module table: - Raw Package table: dummy - Package manager table: dummy + - Raw model table: + - Raw Package table: dummy + - Package manager table: dummy End of Syntax table dump. » -- MAIN NODE: "t1::main" -package dummy +*** Dump the exported items of the packages. + * package dummy + Exported types: diff --git a/src/version.ml b/src/version.ml index a4071868963ab295be7dfa7dc84283e0fe2606dd..2da7c792a6ede0934562a69964b75d77b6d9c109 100644 --- a/src/version.ml +++ b/src/version.ml @@ -1,6 +1,6 @@ (* Automatically generated from src/Makefile *) let tool = "lus2lic" let branch = "u0" -let commit = "11" -let sha_1 = "cbec21161346256d244e19c3f507170352f9bb4f" +let commit = "12" +let sha_1 = "d0b9462e6b43f8249a7ab09bff759174e4cfcaa4" let str = (branch ^ "." ^ commit)