aboutsummaryrefslogtreecommitdiff
path: root/frontend/predef.icl
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/predef.icl')
-rw-r--r--frontend/predef.icl557
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"