diff options
Diffstat (limited to 'frontend/predef.icl')
| -rw-r--r-- | frontend/predef.icl | 557 |
1 files changed, 338 insertions, 219 deletions
diff --git a/frontend/predef.icl b/frontend/predef.icl index 3e71661..c4f0bca 100644 --- a/frontend/predef.icl +++ b/frontend/predef.icl @@ -6,13 +6,12 @@ cPredefinedModuleIndex :== 1 :: PredefinedSymbols :== {# PredefinedSymbol} -:: PredefinedSymbol = - { pds_ident :: !Ident - , pds_module :: !Index - , pds_def :: !Index +:: PredefinedSymbol = { + pds_module :: !Index, + pds_def :: !Index } -/* identifiers not present the hastable */ +/* identifiers not present the hashtable */ PD_PredefinedModule :== 0 @@ -183,195 +182,317 @@ PD_ConsTypeVar :== 200 PD_NrOfPredefSymbols :== 201 (<<=) infixl -(<<=) state val - :== let (array, symbol_table) = state - (name, index) = val - (id_info, new_symbol_table) = newPtr EmptySymbolTableEntry symbol_table - in ({ array & [index] = { pds_ident = { id_name = name, id_info = id_info }, pds_module = NoIndex, pds_def = NoIndex } }, new_symbol_table) - -(<<+) infixl -(<<+) state val - :== let (array, symbol_table) = state - (cons_and_nil_idents, index) = val - in ({ array & [index] = { pds_ident = cons_and_nil_idents.[index-FirstConstructorPredefinedSymbolIndex], pds_module = NoIndex, pds_def = NoIndex } }, symbol_table) +(<<=) symbol_table val + :== let (predefined_idents, index) = val + in writePtr predefined_idents.[index].id_info EmptySymbolTableEntry symbol_table (<<-) infixl -(<<-) (array, hash_table) (name, table_kind, index) -// # (id, hash_table) = putIdentInHashTable name table_kind hash_table - # ({boxed_ident=id}, hash_table) = putIdentInHashTable name table_kind hash_table - = ({ array & [index] = { pds_ident = id, pds_module = NoIndex, pds_def = NoIndex } }, hash_table) - +(<<-) hash_table val + :== let (predefined_idents, table_kind, index) = val + in putPredefinedIdentInHashTable predefined_idents.[index] table_kind hash_table + GetTupleConsIndex tup_arity :== PD_Arity2TupleSymbol + tup_arity - 2 GetTupleTypeIndex tup_arity :== PD_Arity2TupleType + tup_arity - 2 -cons_and_nil_idents :: {!Ident} -cons_and_nil_idents =: { - { id_name = PD_ConsSymbol_String, id_info = allocPtr }, - { id_name = "_!Cons", id_info = allocPtr }, - { id_name = "_#Cons", id_info = allocPtr }, - { id_name = "_Cons!", id_info = allocPtr }, - { id_name = "_!Cons!", id_info = allocPtr }, - { id_name = "_#Cons!", id_info = allocPtr }, - { id_name = "_|Cons", id_info = allocPtr }, - { id_name = PD_NilSymbol_String, id_info = allocPtr }, - { id_name = "_!Nil", id_info = allocPtr }, - { id_name = "_#Nil", id_info = allocPtr }, - { id_name = "_Nil!", id_info = allocPtr }, - { id_name = "_!Nil!", id_info = allocPtr }, - { id_name = "_#Nil!", id_info = allocPtr }, - { id_name = "_|Nil", id_info = allocPtr } - } - -init_identifiers :: *SymbolTable -> *SymbolTable -init_identifiers heap - # local_cons_and_nil_idents = cons_and_nil_idents - # heap = init_cons_and_nil_idents 0 heap +predefined_idents :: {!Ident} +predefined_idents + # idents = createArray PD_NrOfPredefSymbols {id_name="",id_info=nilPtr} + # idents = { idents & + [PD_ConsSymbol] = i PD_ConsSymbol_String, + [PD_StrictConsSymbol] = i "_!Cons", + [PD_UnboxedConsSymbol] = i "_#Cons", + [PD_TailStrictConsSymbol] = i "_Cons!", + [PD_StrictTailStrictConsSymbol] = i "_!Cons!", + [PD_UnboxedTailStrictConsSymbol] = i "_#Cons!", + [PD_OverloadedConsSymbol] = i "_|Cons", + [PD_NilSymbol] = i PD_NilSymbol_String, + [PD_StrictNilSymbol] = i "_!Nil", + [PD_UnboxedNilSymbol] = i "_#Nil", + [PD_TailStrictNilSymbol] = i "_Nil!", + [PD_StrictTailStrictNilSymbol] = i "_!Nil!", + [PD_UnboxedTailStrictNilSymbol] = i "_#Nil!", + [PD_OverloadedNilSymbol] = i "_|Nil", + + [PD_PredefinedModule] = i "_predefined", + [PD_StringType] = i "_String", + [PD_ListType] = i PD_ListType_String, + [PD_StrictListType] = i "_!List", + [PD_UnboxedListType] = i "_#List", + [PD_TailStrictListType] = i "_List!", + [PD_StrictTailStrictListType] = i "_!List!", + [PD_UnboxedTailStrictListType] = i "_#List!", + [PD_OverloadedListType] = i "_|List", + [PD_LazyArrayType] = i "_Array", + [PD_StrictArrayType] = i "_!Array", + [PD_UnboxedArrayType] = i PD_UnboxedArray_String, + [PD_TypeCodeMember] = i "_type_code", + [PD_DummyForStrictAliasFun] = i "_dummyForStrictAlias" + } + # idents = build_tuples 2 32 idents + # idents = build_variables 0 32 idents + + # idents = { idents & + [PD_StdArray] = i "_SystemArray", + [PD_StdEnum] = i "StdEnum", + [PD_StdBool] = i "StdBool", + [PD_AndOp] = i "&&", + [PD_OrOp] = i "||", + [PD_ArrayClass] = i "Array", + [PD_CreateArrayFun] = i "createArray", + [PD__CreateArrayFun] = i "_createArray", + [PD_ArraySelectFun] = i "select", + [PD_UnqArraySelectFun] = i "uselect", + [PD_ArrayUpdateFun] = i "update", + [PD_ArrayReplaceFun] = i "replace", + [PD_ArraySizeFun] = i "size", + [PD_UnqArraySizeFun] = i "usize", + + [PD_StdStrictLists] = i "StdStrictLists", + [PD_cons] = i "cons", + [PD_decons] = i "decons", + [PD_nil] = i "nil", + + [PD_cons_u] = i "cons_u", + [PD_decons_u] = i "decons_u", + [PD_nil_u] = i "nil_u", + + [PD_cons_uts] = i "cons_uts", + [PD_decons_uts] = i "decons_uts", + [PD_nil_uts] = i "nil_uts", + + [PD_ListClass] = i "List", + [PD_UListClass] = i "UList", + [PD_UTSListClass] = i "UTSList", + + [PD_SmallerFun] = i "<", + [PD_LessOrEqualFun] = i "<=", + [PD_IncFun] = i "inc", + [PD_SubFun] = i "-", + + [PD_From] = i "_from", + [PD_FromThen] = i "_from_then", + [PD_FromTo] = i "_from_to", + [PD_FromThenTo] = i "_from_then_to", + + [PD_TypeCodeClass] = i "TC", + [PD_TypeObjectType] = i "T_ypeObjectType", + [PD_TypeConsSymbol] = i "T_ypeConsSymbol", + [PD_variablePlaceholder] = i "P_laceholder", + [PD_unify] = i "_unify", + [PD_coerce] = i "_coerce", + [PD_StdDynamic] = i UnderscoreSystemDynamicModule_String, + [PD_undo_indirections] = i "_undo_indirections", + + [PD_DynamicTemp] = i DynamicRepresentation_String, + [PD_ModuleConsSymbol] = i "__Module", + [PD_TypeID] = i "T_ypeID", + [PD_ModuleID] = i "ModuleID", + + [PD_StdGeneric] = i "StdGeneric", + [PD_TypeISO] = i "ISO", + [PD_ConsISO] = i "_ISO", + [PD_TypeUNIT] = i "UNIT", + [PD_ConsUNIT] = i "UNIT", + [PD_TypeEITHER] = i "EITHER", + [PD_ConsLEFT] = i "LEFT", + [PD_ConsRIGHT] = i "RIGHT", + [PD_TypePAIR] = i "PAIR", + [PD_ConsPAIR] = i "PAIR", + [PD_TypeARROW] = i "ARROW", + [PD_ConsARROW] = i "ARROW", + [PD_isomap_ARROW_] = i "isomap_ARROW_", + [PD_isomap_ID] = i "isomap_ID", + [PD_TypeConsDefInfo] = i "ConsDefInfo", + [PD_ConsConsDefInfo] = i "_ConsDefInfo", + [PD_TypeTypeDefInfo] = i "TypeDefInfo", + [PD_ConsTypeDefInfo] = i "_TypeDefInfo", + [PD_TypeCONS] = i "CONS", + [PD_ConsCONS] = i "CONS", + [PD_cons_info] = i "CONS_INFO", + [PD_TypeType] = i "Type", + [PD_ConsTypeApp] = i "TypeApp", + [PD_ConsTypeVar] = i "TypeVar", + + [PD_StdMisc] = i "StdMisc", + [PD_abort] = i "abort", + [PD_undef] = i "undef", + + [PD_Start] = i "Start", + + [PD_iso_from] = i "iso_from", + [PD_iso_to] = i "iso_to", + + [PD_DynamicType] = i "type", + [PD_DynamicValue] = i "value" + } + =: idents + where + i s = { id_name = s, id_info = allocPtr }; + + build_tuples tup_arity max_arity idents + | tup_arity > max_arity + = idents + # tup_name = "_Tuple" +++ toString tup_arity + # idents = {idents & [GetTupleTypeIndex tup_arity]=i tup_name, [GetTupleConsIndex tup_arity]=i tup_name} + = build_tuples (inc tup_arity) max_arity idents + + build_variables var_number max_arity idents + | var_number == max_arity + = idents + # var_name = "a" +++ toString var_number + # idents = {idents & [PD_TypeVar_a0 + var_number] = i var_name} + = build_variables (inc var_number) max_arity idents + +init_identifiers :: !*SymbolTable !*World -> (!*SymbolTable,!*World) +init_identifiers heap world + # local_predefined_idents = predefined_idents + # (heap,world) = init_predefined_idents 0 heap world with - init_cons_and_nil_idents i heap - | i<size local_cons_and_nil_idents - # heap=initPtr local_cons_and_nil_idents.[i].id_info EmptySymbolTableEntry heap - = init_cons_and_nil_idents (i+1) heap - = heap - = heap + init_predefined_idents i heap world + | i<size local_predefined_idents + | size local_predefined_idents.[i].id_name>0 + # (heap,world) = initPtr local_predefined_idents.[i].id_info EmptySymbolTableEntry heap world + = init_predefined_idents (i+1) heap world + = init_predefined_idents (i+1) heap world + = (heap,world) + = (heap,world) buildPredefinedSymbols :: !*HashTable -> (!.PredefinedSymbols,!*HashTable) buildPredefinedSymbols hash_table=:{hte_symbol_heap} - # predef_symbol_table = createArray PD_NrOfPredefSymbols { pds_ident = { id_name = "", id_info = nilPtr }, pds_module = NoIndex, pds_def = NoIndex } - (predef_symbol_table, hte_symbol_heap) = fill_table_without_hashing (predef_symbol_table, hte_symbol_heap) - = fill_table_with_hashing (predef_symbol_table, { hash_table & hte_symbol_heap = hte_symbol_heap }) + # predef_symbol_table = createArray PD_NrOfPredefSymbols { pds_module = NoIndex, pds_def = NoIndex } + hte_symbol_heap = fill_table_without_hashing hte_symbol_heap + = (predef_symbol_table,fill_table_with_hashing { hash_table & hte_symbol_heap = hte_symbol_heap }) where - local_cons_and_nil_idents = cons_and_nil_idents + local_predefined_idents = predefined_idents - fill_table_without_hashing tables - = build_variables 0 32 (build_tuples 2 32 tables) - <<= ("_predefined", PD_PredefinedModule) - <<= ("_String", PD_StringType) - <<= (PD_ListType_String, PD_ListType) <<+ (local_cons_and_nil_idents, PD_ConsSymbol)<<+ (local_cons_and_nil_idents, PD_NilSymbol) - <<= ("_!List", PD_StrictListType) <<+ (local_cons_and_nil_idents, PD_StrictConsSymbol) <<+ (local_cons_and_nil_idents, PD_StrictNilSymbol) - <<= ("_#List", PD_UnboxedListType) <<+ (local_cons_and_nil_idents, PD_UnboxedConsSymbol) <<+ (local_cons_and_nil_idents, PD_UnboxedNilSymbol) - <<= ("_List!", PD_TailStrictListType) <<+ (local_cons_and_nil_idents, PD_TailStrictConsSymbol) <<+ (local_cons_and_nil_idents, PD_TailStrictNilSymbol) - <<= ("_!List!", PD_StrictTailStrictListType) <<+ (local_cons_and_nil_idents, PD_StrictTailStrictConsSymbol) <<+ (local_cons_and_nil_idents, PD_StrictTailStrictNilSymbol) - <<= ("_#List!", PD_UnboxedTailStrictListType) <<+ (local_cons_and_nil_idents, PD_UnboxedTailStrictConsSymbol) <<+ (local_cons_and_nil_idents, PD_UnboxedTailStrictNilSymbol) - <<= ("_|List", PD_OverloadedListType) <<+ (local_cons_and_nil_idents, PD_OverloadedConsSymbol) <<+ (local_cons_and_nil_idents, PD_OverloadedNilSymbol) - <<= ("_Array", PD_LazyArrayType) <<= ("_!Array", PD_StrictArrayType) <<= (PD_UnboxedArray_String, PD_UnboxedArrayType) - <<= ("_type_code", PD_TypeCodeMember) - <<= ("_dummyForStrictAlias", PD_DummyForStrictAliasFun) // MW++ + fill_table_without_hashing hash_table + = build_variables 0 32 (build_tuples 2 32 hash_table) + <<= (local_predefined_idents, PD_PredefinedModule) + <<= (local_predefined_idents, PD_StringType) + <<= (local_predefined_idents, PD_ListType) <<= (local_predefined_idents, PD_ConsSymbol)<<= (local_predefined_idents, PD_NilSymbol) + <<= (local_predefined_idents, PD_StrictListType) <<= (local_predefined_idents, PD_StrictConsSymbol) <<= (local_predefined_idents, PD_StrictNilSymbol) + <<= (local_predefined_idents, PD_UnboxedListType) <<= (local_predefined_idents, PD_UnboxedConsSymbol) <<= (local_predefined_idents, PD_UnboxedNilSymbol) + <<= (local_predefined_idents, PD_TailStrictListType) <<= (local_predefined_idents, PD_TailStrictConsSymbol) <<= (local_predefined_idents, PD_TailStrictNilSymbol) + <<= (local_predefined_idents, PD_StrictTailStrictListType) <<= (local_predefined_idents, PD_StrictTailStrictConsSymbol) <<= (local_predefined_idents, PD_StrictTailStrictNilSymbol) + <<= (local_predefined_idents, PD_UnboxedTailStrictListType) <<= (local_predefined_idents, PD_UnboxedTailStrictConsSymbol) <<= (local_predefined_idents, PD_UnboxedTailStrictNilSymbol) + <<= (local_predefined_idents, PD_OverloadedListType) <<= (local_predefined_idents, PD_OverloadedConsSymbol) <<= (local_predefined_idents, PD_OverloadedNilSymbol) + <<= (local_predefined_idents, PD_LazyArrayType) + <<= (local_predefined_idents, PD_StrictArrayType) + <<= (local_predefined_idents, PD_UnboxedArrayType) + <<= (local_predefined_idents, PD_TypeCodeMember) + <<= (local_predefined_idents, PD_DummyForStrictAliasFun) // MW++ where - - build_tuples tup_arity max_arity tables + build_tuples tup_arity max_arity hash_table | tup_arity > max_arity - = tables - # tup_name = "_Tuple" +++ toString tup_arity - = build_tuples (inc tup_arity) max_arity (tables <<= (tup_name, GetTupleTypeIndex tup_arity) - <<= (tup_name, GetTupleConsIndex tup_arity)) + = hash_table + = build_tuples (inc tup_arity) max_arity (hash_table <<= (local_predefined_idents, GetTupleTypeIndex tup_arity) + <<= (local_predefined_idents, GetTupleConsIndex tup_arity)) - build_variables var_number max_arity tables + build_variables var_number max_arity hash_table | var_number == max_arity - = tables - # var_name = "a" +++ toString var_number - = build_variables (inc var_number) max_arity (tables <<= (var_name, PD_TypeVar_a0 + var_number)) - - fill_table_with_hashing tables - # (predefs, hash_table) = tables - <<- ("_SystemArray", IC_Module, PD_StdArray) <<- ("StdEnum", IC_Module, PD_StdEnum) <<- ("StdBool", IC_Module, PD_StdBool) - <<- ("&&", IC_Expression, PD_AndOp) <<- ("||", IC_Expression, PD_OrOp) - <<- ("Array", IC_Class, PD_ArrayClass) - <<- ("createArray", IC_Expression, PD_CreateArrayFun) - <<- ("_createArray", IC_Expression, PD__CreateArrayFun) - <<- ("select", IC_Expression, PD_ArraySelectFun) - <<- ("uselect", IC_Expression, PD_UnqArraySelectFun) - <<- ("update", IC_Expression, PD_ArrayUpdateFun) - <<- ("replace", IC_Expression, PD_ArrayReplaceFun) - <<- ("size", IC_Expression, PD_ArraySizeFun) - <<- ("usize", IC_Expression, PD_UnqArraySizeFun) - - <<- ("StdStrictLists", IC_Module, PD_StdStrictLists) - <<- ("cons", IC_Expression, PD_cons) - <<- ("decons", IC_Expression, PD_decons) - <<- ("nil", IC_Expression, PD_nil) - - <<- ("cons_u", IC_Expression, PD_cons_u) - <<- ("decons_u", IC_Expression, PD_decons_u) - <<- ("nil_u", IC_Expression, PD_nil_u) - - <<- ("cons_uts", IC_Expression, PD_cons_uts) - <<- ("decons_uts", IC_Expression, PD_decons_uts) - <<- ("nil_uts", IC_Expression, PD_nil_uts) - - <<- ("List", IC_Class, PD_ListClass) - <<- ("UList", IC_Class, PD_UListClass) - <<- ("UTSList", IC_Class, PD_UTSListClass) - -// RWS ... <<- ("_smaller", IC_Expression, PD_SmallerFun) <<- ("_inc", IC_Expression, PD_IncFun) - <<- ("<", IC_Expression, PD_SmallerFun) - <<- ("<=", IC_Expression, PD_LessOrEqualFun) - <<- ("inc", IC_Expression, PD_IncFun) - <<- ("-", IC_Expression, PD_SubFun) -// ... RWS - <<- ("_from", IC_Expression, PD_From) <<- ("_from_then", IC_Expression, PD_FromThen) - <<- ("_from_to", IC_Expression, PD_FromTo) <<- ("_from_then_to", IC_Expression, PD_FromThenTo) + = hash_table + = build_variables (inc var_number) max_arity (hash_table <<= (local_predefined_idents, PD_TypeVar_a0 + var_number)) + + fill_table_with_hashing hash_table + # hash_table = hash_table + <<- (local_predefined_idents, IC_Module, PD_StdArray) + <<- (local_predefined_idents, IC_Module, PD_StdEnum) + <<- (local_predefined_idents, IC_Module, PD_StdBool) + <<- (local_predefined_idents, IC_Expression, PD_AndOp) + <<- (local_predefined_idents, IC_Expression, PD_OrOp) + <<- (local_predefined_idents, IC_Class, PD_ArrayClass) + <<- (local_predefined_idents, IC_Expression, PD_CreateArrayFun) + <<- (local_predefined_idents, IC_Expression, PD__CreateArrayFun) + <<- (local_predefined_idents, IC_Expression, PD_ArraySelectFun) + <<- (local_predefined_idents, IC_Expression, PD_UnqArraySelectFun) + <<- (local_predefined_idents, IC_Expression, PD_ArrayUpdateFun) + <<- (local_predefined_idents, IC_Expression, PD_ArrayReplaceFun) + <<- (local_predefined_idents, IC_Expression, PD_ArraySizeFun) + <<- (local_predefined_idents, IC_Expression, PD_UnqArraySizeFun) + + <<- (local_predefined_idents, IC_Module, PD_StdStrictLists) + <<- (local_predefined_idents, IC_Expression, PD_cons) + <<- (local_predefined_idents, IC_Expression, PD_decons) + <<- (local_predefined_idents, IC_Expression, PD_nil) + + <<- (local_predefined_idents, IC_Expression, PD_cons_u) + <<- (local_predefined_idents, IC_Expression, PD_decons_u) + <<- (local_predefined_idents, IC_Expression, PD_nil_u) + + <<- (local_predefined_idents, IC_Expression, PD_cons_uts) + <<- (local_predefined_idents, IC_Expression, PD_decons_uts) + <<- (local_predefined_idents, IC_Expression, PD_nil_uts) + + <<- (local_predefined_idents, IC_Class, PD_ListClass) + <<- (local_predefined_idents, IC_Class, PD_UListClass) + <<- (local_predefined_idents, IC_Class, PD_UTSListClass) - <<- ("TC", IC_Class, PD_TypeCodeClass) - <<- ("T_ypeObjectType", IC_Type, PD_TypeObjectType) - <<- ("T_ypeConsSymbol", IC_Expression, PD_TypeConsSymbol) - <<- ("P_laceholder", IC_Expression, PD_variablePlaceholder) - <<- ("_unify", IC_Expression, PD_unify) - <<- ("_coerce", IC_Expression, PD_coerce) /* MV */ - <<- (UnderscoreSystemDynamicModule_String, IC_Module, PD_StdDynamic) - <<- ("_undo_indirections", IC_Expression, PD_undo_indirections) -// MV.. - <<- (DynamicRepresentation_String, IC_Type, PD_DynamicTemp) - <<- ("__Module", IC_Expression, PD_ModuleConsSymbol) - <<- ("T_ypeID", IC_Type, PD_TypeID) - <<- ("ModuleID", IC_Expression, PD_ModuleID) -// ..MV + <<- (local_predefined_idents, IC_Expression, PD_SmallerFun) + <<- (local_predefined_idents, IC_Expression, PD_LessOrEqualFun) + <<- (local_predefined_idents, IC_Expression, PD_IncFun) + <<- (local_predefined_idents, IC_Expression, PD_SubFun) + + <<- (local_predefined_idents, IC_Expression, PD_From) + <<- (local_predefined_idents, IC_Expression, PD_FromThen) + <<- (local_predefined_idents, IC_Expression, PD_FromTo) + <<- (local_predefined_idents, IC_Expression, PD_FromThenTo) -// AA.. - <<- ("StdGeneric", IC_Module, PD_StdGeneric) - <<- ("ISO", IC_Type, PD_TypeISO) - <<- ("_ISO", IC_Expression, PD_ConsISO) - //<<- ("iso_from", IC_Field {id_name="", id_info=nilPtr}, PD_iso_from) - //<<- ("iso_to", IC_Field {id_name="", id_info=nilPtr}, PD_iso_to) - <<- ("UNIT", IC_Type, PD_TypeUNIT) - <<- ("UNIT", IC_Expression, PD_ConsUNIT) - <<- ("EITHER", IC_Type, PD_TypeEITHER) - <<- ("LEFT", IC_Expression, PD_ConsLEFT) - <<- ("RIGHT", IC_Expression, PD_ConsRIGHT) - <<- ("PAIR", IC_Type, PD_TypePAIR) - <<- ("PAIR", IC_Expression, PD_ConsPAIR) - <<- ("ARROW", IC_Type, PD_TypeARROW) - <<- ("ARROW", IC_Expression, PD_ConsARROW) - <<- ("isomap_ARROW_", IC_Expression, PD_isomap_ARROW_) - <<- ("isomap_ID", IC_Expression, PD_isomap_ID) - <<- ("ConsDefInfo", IC_Type, PD_TypeConsDefInfo) - <<- ("_ConsDefInfo", IC_Expression, PD_ConsConsDefInfo) - <<- ("TypeDefInfo", IC_Type, PD_TypeTypeDefInfo) - <<- ("_TypeDefInfo", IC_Expression, PD_ConsTypeDefInfo) - <<- ("CONS", IC_Type, PD_TypeCONS) - <<- ("CONS", IC_Expression, PD_ConsCONS) - <<- ("CONS_INFO", IC_Expression, PD_cons_info) - <<- ("Type", IC_Type, PD_TypeType) - <<- ("TypeApp", IC_Expression, PD_ConsTypeApp) - <<- ("TypeVar", IC_Expression, PD_ConsTypeVar) - - <<- ("StdMisc", IC_Module, PD_StdMisc) - <<- ("abort", IC_Expression, PD_abort) - <<- ("undef", IC_Expression, PD_undef) -// ..AA + <<- (local_predefined_idents, IC_Class, PD_TypeCodeClass) + <<- (local_predefined_idents, IC_Type, PD_TypeObjectType) + <<- (local_predefined_idents, IC_Expression, PD_TypeConsSymbol) + <<- (local_predefined_idents, IC_Expression, PD_variablePlaceholder) + <<- (local_predefined_idents, IC_Expression, PD_unify) + <<- (local_predefined_idents, IC_Expression, PD_coerce) /* MV */ + <<- (local_predefined_idents, IC_Module, PD_StdDynamic) + <<- (local_predefined_idents, IC_Expression, PD_undo_indirections) + + <<- (local_predefined_idents, IC_Type, PD_DynamicTemp) + <<- (local_predefined_idents, IC_Expression, PD_ModuleConsSymbol) + <<- (local_predefined_idents, IC_Type, PD_TypeID) + <<- (local_predefined_idents, IC_Expression, PD_ModuleID) + + <<- (local_predefined_idents, IC_Module, PD_StdGeneric) + <<- (local_predefined_idents, IC_Type, PD_TypeISO) + <<- (local_predefined_idents, IC_Expression, PD_ConsISO) + <<- (local_predefined_idents, IC_Type, PD_TypeUNIT) + <<- (local_predefined_idents, IC_Expression, PD_ConsUNIT) + <<- (local_predefined_idents, IC_Type, PD_TypeEITHER) + <<- (local_predefined_idents, IC_Expression, PD_ConsLEFT) + <<- (local_predefined_idents, IC_Expression, PD_ConsRIGHT) + <<- (local_predefined_idents, IC_Type, PD_TypePAIR) + <<- (local_predefined_idents, IC_Expression, PD_ConsPAIR) + <<- (local_predefined_idents, IC_Type, PD_TypeARROW) + <<- (local_predefined_idents, IC_Expression, PD_ConsARROW) + <<- (local_predefined_idents, IC_Expression, PD_isomap_ARROW_) + <<- (local_predefined_idents, IC_Expression, PD_isomap_ID) + <<- (local_predefined_idents, IC_Type, PD_TypeConsDefInfo) + <<- (local_predefined_idents, IC_Expression, PD_ConsConsDefInfo) + <<- (local_predefined_idents, IC_Type, PD_TypeTypeDefInfo) + <<- (local_predefined_idents, IC_Expression, PD_ConsTypeDefInfo) + <<- (local_predefined_idents, IC_Type, PD_TypeCONS) + <<- (local_predefined_idents, IC_Expression, PD_ConsCONS) + <<- (local_predefined_idents, IC_Expression, PD_cons_info) + <<- (local_predefined_idents, IC_Type, PD_TypeType) + <<- (local_predefined_idents, IC_Expression, PD_ConsTypeApp) + <<- (local_predefined_idents, IC_Expression, PD_ConsTypeVar) + + <<- (local_predefined_idents, IC_Module, PD_StdMisc) + <<- (local_predefined_idents, IC_Expression, PD_abort) + <<- (local_predefined_idents, IC_Expression, PD_undef) - <<- ("Start", IC_Expression, PD_Start) + <<- (local_predefined_idents, IC_Expression, PD_Start) - # ({pds_ident}, predefs) = predefs![PD_TypeISO] - # (predefs, hash_table)= (predefs, hash_table) - <<- ("iso_from", IC_Field pds_ident, PD_iso_from) - <<- ("iso_to", IC_Field pds_ident, PD_iso_to) + # type_iso_ident = local_predefined_idents.[PD_TypeISO] + # hash_table= hash_table + <<- (local_predefined_idents, IC_Field type_iso_ident, PD_iso_from) + <<- (local_predefined_idents, IC_Field type_iso_ident, PD_iso_to) - # ({pds_ident}, predefs) = predefs![PD_DynamicTemp] - # (predefs, hash_table)= (predefs, hash_table) - <<- ("type", IC_Field pds_ident, PD_DynamicType) - <<- ("value", IC_Field pds_ident, PD_DynamicValue) - <<- ("Start", IC_Expression, PD_Start) - = (predefs, hash_table) + # dynamic_temp_ident = local_predefined_idents.[PD_DynamicTemp] + # hash_table = hash_table + <<- (local_predefined_idents, IC_Field dynamic_temp_ident, PD_DynamicType) + <<- (local_predefined_idents, IC_Field dynamic_temp_ident, PD_DynamicValue) + + = hash_table MakeTupleConsSymbIndex arity :== arity - 2 + (PD_Arity2TupleSymbol-FirstConstructorPredefinedSymbolIndex) @@ -385,62 +506,62 @@ cTCInstanceSymbIndex :== 0 make_type_def :: !Int ![TypeVar] !a !*{#PredefinedSymbol} -> (!TypeDef a,!.{#PredefinedSymbol}) make_type_def type_cons_index type_vars type_rhs pre_def_symbols - # (type_ident, pre_def_symbols) = pre_def_symbols![type_cons_index] - = (MakeTypeDef type_ident.pds_ident (map (\tv -> MakeAttributedTypeVar tv) type_vars) type_rhs TA_None [] NoPos, pre_def_symbols) + # type_cons_ident = predefined_idents.[type_cons_index] + = (MakeTypeDef type_cons_ident (map (\tv -> MakeAttributedTypeVar tv) type_vars) type_rhs TA_None [] NoPos, pre_def_symbols) make_list_definition :: Int Int Int Ident TypeVar AType *{#PredefinedSymbol} -> (!TypeDef TypeRhs,!ConsDef,!ConsDef,!.{#PredefinedSymbol}) make_list_definition list_type_pre_def_symbol_index cons_pre_def_symbol_index nil_pre_def_symbol_index pre_mod_id type_var type_var_with_attr pre_def_symbols - # (cons_id, pre_def_symbols) = pre_def_symbols![cons_pre_def_symbol_index] - (nil_id, pre_def_symbols) = pre_def_symbols![nil_pre_def_symbol_index] - (list_id, pre_def_symbols) = pre_def_symbols![list_type_pre_def_symbol_index] - cons_symb = { ds_ident = cons_id.pds_ident, ds_arity = 2, ds_index = cons_pre_def_symbol_index-FirstConstructorPredefinedSymbolIndex } - nil_symb = { ds_ident = nil_id.pds_ident, ds_arity=0 ,ds_index = nil_pre_def_symbol_index-FirstConstructorPredefinedSymbolIndex } + # cons_ident = predefined_idents.[cons_pre_def_symbol_index] + nil_ident = predefined_idents.[nil_pre_def_symbol_index] + list_ident = predefined_idents.[list_type_pre_def_symbol_index] + + cons_symb = { ds_ident = cons_ident, ds_arity = 2, ds_index = cons_pre_def_symbol_index-FirstConstructorPredefinedSymbolIndex } + nil_symb = { ds_ident = nil_ident, ds_arity=0 ,ds_index = nil_pre_def_symbol_index-FirstConstructorPredefinedSymbolIndex } (list_def, pre_def_symbols) = make_type_def list_type_pre_def_symbol_index [type_var] (AlgType [cons_symb,nil_symb]) pre_def_symbols - list_type = MakeAttributedType (TA (MakeNewTypeSymbIdent list_id.pds_ident 1) [type_var_with_attr]) - cons_def = { pc_cons_name = cons_id.pds_ident, pc_cons_arity = 2, pc_arg_types = [type_var_with_attr, list_type], + list_type = MakeAttributedType (TA (MakeNewTypeSymbIdent list_ident 1) [type_var_with_attr]) + cons_def = { pc_cons_name = cons_ident, pc_cons_arity = 2, pc_arg_types = [type_var_with_attr, list_type], pc_cons_prio = NoPrio, pc_exi_vars = [], pc_cons_pos = PreDefPos pre_mod_id} - nil_def = { pc_cons_name = nil_id.pds_ident, pc_cons_arity = 0, pc_arg_types = [], + nil_def = { pc_cons_name = nil_ident, pc_cons_arity = 0, pc_arg_types = [], pc_cons_prio = NoPrio, pc_exi_vars = [], pc_cons_pos = PreDefPos pre_mod_id} = (list_def,ParsedConstructorToConsDef cons_def,ParsedConstructorToConsDef nil_def,pre_def_symbols); buildPredefinedModule :: !*PredefinedSymbols -> (!ScannedModule, !.PredefinedSymbols) buildPredefinedModule pre_def_symbols - # (type_var_id, pre_def_symbols) = pre_def_symbols![PD_TypeVar_a0] - (string_id, pre_def_symbols) = pre_def_symbols![PD_StringType] - (unb_array_id, pre_def_symbols) = pre_def_symbols![PD_UnboxedArrayType] - (pre_mod_symb, pre_def_symbols) = pre_def_symbols![PD_PredefinedModule] - (alias_dummy_symb,pre_def_symbols)= pre_def_symbols![PD_DummyForStrictAliasFun] - pre_mod_id = pre_mod_symb.pds_ident - - type_var = MakeTypeVar type_var_id.pds_ident + # type_var_ident = predefined_idents.[PD_TypeVar_a0] + string_ident = predefined_idents.[PD_StringType] + unb_array_ident = predefined_idents.[PD_UnboxedArrayType] + pre_mod_ident = predefined_idents.[PD_PredefinedModule] + alias_dummy_ident = predefined_idents.[PD_DummyForStrictAliasFun] + + type_var = MakeTypeVar type_var_ident type_var_with_attr = MakeAttributedType (TV type_var) - unb_arr_of_char_type = MakeAttributedType (TA (MakeNewTypeSymbIdent unb_array_id.pds_ident 1) [MakeAttributedType (TB BT_Char)]) + unb_arr_of_char_type = MakeAttributedType (TA (MakeNewTypeSymbIdent unb_array_ident 1) [MakeAttributedType (TB BT_Char)]) (string_def, pre_def_symbols) = make_type_def PD_StringType [] (SynType unb_arr_of_char_type) pre_def_symbols (list_def,cons_def,nil_def,pre_def_symbols) - = make_list_definition PD_ListType PD_ConsSymbol PD_NilSymbol pre_mod_id type_var type_var_with_attr pre_def_symbols + = make_list_definition PD_ListType PD_ConsSymbol PD_NilSymbol pre_mod_ident type_var type_var_with_attr pre_def_symbols (strict_list_def,strict_cons_def,strict_nil_def,pre_def_symbols) - = make_list_definition PD_StrictListType PD_StrictConsSymbol PD_StrictNilSymbol pre_mod_id type_var type_var_with_attr pre_def_symbols + = make_list_definition PD_StrictListType PD_StrictConsSymbol PD_StrictNilSymbol pre_mod_ident type_var type_var_with_attr pre_def_symbols (unboxed_list_def,unboxed_cons_def,unboxed_nil_def,pre_def_symbols) - = make_list_definition PD_UnboxedListType PD_UnboxedConsSymbol PD_UnboxedNilSymbol pre_mod_id type_var type_var_with_attr pre_def_symbols + = make_list_definition PD_UnboxedListType PD_UnboxedConsSymbol PD_UnboxedNilSymbol pre_mod_ident type_var type_var_with_attr pre_def_symbols (tail_strict_list_def,tail_strict_cons_def,tail_strict_nil_def,pre_def_symbols) - = make_list_definition PD_TailStrictListType PD_TailStrictConsSymbol PD_TailStrictNilSymbol pre_mod_id type_var type_var_with_attr pre_def_symbols + = make_list_definition PD_TailStrictListType PD_TailStrictConsSymbol PD_TailStrictNilSymbol pre_mod_ident type_var type_var_with_attr pre_def_symbols (strict_tail_strict_list_def,strict_tail_strict_cons_def,strict_tail_strict_nil_def,pre_def_symbols) - = make_list_definition PD_StrictTailStrictListType PD_StrictTailStrictConsSymbol PD_StrictTailStrictNilSymbol pre_mod_id type_var type_var_with_attr pre_def_symbols + = make_list_definition PD_StrictTailStrictListType PD_StrictTailStrictConsSymbol PD_StrictTailStrictNilSymbol pre_mod_ident type_var type_var_with_attr pre_def_symbols (unboxed_tail_strict_list_def,unboxed_tail_strict_cons_def,unboxed_tail_strict_nil_def,pre_def_symbols) - = make_list_definition PD_UnboxedTailStrictListType PD_UnboxedTailStrictConsSymbol PD_UnboxedTailStrictNilSymbol pre_mod_id type_var type_var_with_attr pre_def_symbols + = make_list_definition PD_UnboxedTailStrictListType PD_UnboxedTailStrictConsSymbol PD_UnboxedTailStrictNilSymbol pre_mod_ident type_var type_var_with_attr pre_def_symbols (overloaded_list_def,overloaded_cons_def,overloaded_nil_def,pre_def_symbols) - = make_list_definition PD_OverloadedListType PD_OverloadedConsSymbol PD_OverloadedNilSymbol pre_mod_id type_var type_var_with_attr pre_def_symbols + = make_list_definition PD_OverloadedListType PD_OverloadedConsSymbol PD_OverloadedNilSymbol pre_mod_ident type_var type_var_with_attr pre_def_symbols (array_def, pre_def_symbols) = make_type_def PD_LazyArrayType [type_var] (AbstractType cAllBitsClear) pre_def_symbols (strict_def, pre_def_symbols) = make_type_def PD_StrictArrayType [type_var] (AbstractType cIsHyperStrict) pre_def_symbols (unboxed_def, pre_def_symbols) = make_type_def PD_UnboxedArrayType [type_var] (AbstractType cIsHyperStrict) pre_def_symbols - (type_defs, cons_defs, pre_def_symbols) = add_tuple_defs pre_mod_id MaxTupleArity [array_def,strict_def,unboxed_def] [] pre_def_symbols - alias_dummy_type = make_identity_fun_type alias_dummy_symb.pds_ident type_var // MW++ + (type_defs, cons_defs, pre_def_symbols) = add_tuple_defs pre_mod_ident MaxTupleArity [array_def,strict_def,unboxed_def] [] pre_def_symbols + alias_dummy_type = make_identity_fun_type alias_dummy_ident type_var (class_def, member_def, pre_def_symbols) = make_TC_class_def pre_def_symbols - = ({ mod_name = pre_mod_id, mod_modification_time = "", mod_type = MK_System, mod_imports = [], mod_imported_objects = [], + = ({ mod_name = pre_mod_ident, mod_modification_time = "", mod_type = MK_System, mod_imports = [], mod_imported_objects = [], mod_defs = { def_types = [string_def, list_def,strict_list_def,unboxed_list_def,tail_strict_list_def,strict_tail_strict_list_def,unboxed_tail_strict_list_def,overloaded_list_def : type_defs], def_constructors = [cons_def,strict_cons_def,unboxed_cons_def,tail_strict_cons_def,strict_tail_strict_cons_def,unboxed_tail_strict_cons_def,overloaded_cons_def, @@ -452,11 +573,11 @@ where add_tuple_defs pre_mod_id tup_arity type_defs cons_defs pre_def_symbols | tup_arity >= 2 # (type_vars, pre_def_symbols) = make_type_vars tup_arity [] pre_def_symbols - (tuple_id, pre_def_symbols) = pre_def_symbols![GetTupleConsIndex tup_arity] - tuple_cons_symb = { ds_ident = tuple_id.pds_ident, ds_index = MakeTupleConsSymbIndex tup_arity, ds_arity = tup_arity } + tuple_ident = predefined_idents.[GetTupleConsIndex tup_arity] + tuple_cons_symb = { ds_ident = tuple_ident, ds_index = MakeTupleConsSymbIndex tup_arity, ds_arity = tup_arity } (tuple_type_def, pre_def_symbols) = make_type_def (GetTupleTypeIndex tup_arity) type_vars (AlgType [tuple_cons_symb]) pre_def_symbols - tuple_cons_def = { pc_cons_name = tuple_id.pds_ident, pc_cons_arity = tup_arity, pc_cons_pos = PreDefPos pre_mod_id, + tuple_cons_def = { pc_cons_name = tuple_ident, pc_cons_arity = tup_arity, pc_cons_pos = PreDefPos pre_mod_id, pc_arg_types = [ MakeAttributedType (TV tv) \\ tv <- type_vars], pc_cons_prio = NoPrio, pc_exi_vars = []} = add_tuple_defs pre_mod_id (dec tup_arity) [tuple_type_def : type_defs] [ParsedConstructorToConsDef tuple_cons_def : cons_defs] pre_def_symbols = (type_defs, cons_defs, pre_def_symbols) @@ -465,28 +586,28 @@ where | nr_of_vars == 0 = (type_vars, pre_def_symbols) # nr_of_vars = dec nr_of_vars - # (var_id, pre_def_symbols) = pre_def_symbols![PD_TypeVar_a0 + nr_of_vars] - = make_type_vars nr_of_vars [MakeTypeVar var_id.pds_ident : type_vars] pre_def_symbols + # var_ident = predefined_idents.[PD_TypeVar_a0 + nr_of_vars] + = make_type_vars nr_of_vars [MakeTypeVar var_ident : type_vars] pre_def_symbols make_TC_class_def pre_def_symbols - # (tc_class_name, pre_def_symbols) = pre_def_symbols![PD_TypeCodeClass] - (type_var_id, pre_def_symbols) = pre_def_symbols![PD_TypeVar_a0] - (tc_member_name, pre_def_symbols) = pre_def_symbols![PD_TypeCodeMember] + # tc_class_name = predefined_idents.[PD_TypeCodeClass] + type_var_ident = predefined_idents.[PD_TypeVar_a0] + tc_member_name = predefined_idents.[PD_TypeCodeMember] - class_var = MakeTypeVar type_var_id.pds_ident + class_var = MakeTypeVar type_var_ident me_type = { st_vars = [], st_args = [], st_arity = 0, st_result = { at_attribute = TA_None, at_annotation = AN_None, at_type = TV class_var }, - st_context = [ {tc_class = {glob_module = NoIndex, glob_object = {ds_ident = tc_class_name.pds_ident, ds_arity = 1, ds_index = NoIndex }}, + st_context = [ {tc_class = {glob_module = NoIndex, glob_object = {ds_ident = tc_class_name, ds_arity = 1, ds_index = NoIndex }}, tc_types = [ TV class_var ], tc_var = nilPtr}], st_attr_vars = [], st_attr_env = [] } - member_def = { me_symb = tc_member_name.pds_ident, me_type = me_type, me_pos = NoPos, me_priority = NoPrio, + member_def = { me_symb = tc_member_name, me_type = me_type, me_pos = NoPos, me_priority = NoPrio, me_offset = NoIndex, me_class_vars = [], me_class = { glob_module = NoIndex, glob_object = NoIndex}, me_type_ptr = nilPtr } - class_def = { class_name = tc_class_name.pds_ident, class_arity = 1, class_args = [class_var], class_context = [], - class_members = {{ds_ident = tc_member_name.pds_ident, ds_index = cTCMemberSymbIndex, ds_arity = 0 }}, class_cons_vars = 0, - class_dictionary = { ds_ident = { tc_class_name.pds_ident & id_info = nilPtr }, ds_arity = 0, ds_index = NoIndex }, class_pos = NoPos, + class_def = { class_name = tc_class_name, class_arity = 1, class_args = [class_var], class_context = [], + class_members = {{ds_ident = tc_member_name, ds_index = cTCMemberSymbIndex, ds_arity = 0 }}, class_cons_vars = 0, + class_dictionary = { ds_ident = { tc_class_name & id_info = nilPtr }, ds_arity = 0, ds_index = NoIndex }, class_pos = NoPos, class_arg_kinds = [] } = (class_def, member_def, pre_def_symbols) @@ -498,9 +619,7 @@ where st_attr_vars = [], st_attr_env = [] } // !.a -> .a = { ft_symb = alias_dummy_id, ft_arity = 1, ft_priority = NoPrio, ft_type = id_symbol_type, ft_pos = NoPos, ft_specials = SP_None, ft_type_ptr = nilPtr } -// ..MW -// MV ... // changes requires recompile of {static,dynamic}-linker plus all dynamics ever made UnderscoreSystemDynamicModule_String :== "_SystemDynamic" |
