summaryrefslogtreecommitdiff
path: root/src/runtime/c/teyjus/tables
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2017-04-12 10:31:01 +0000
committerkrasimir <krasimir@chalmers.se>2017-04-12 10:31:01 +0000
commit456f0a5733a3b688ebd3f5b3db35f60400ca7abe (patch)
tree7b6a931a099ffe31402bc59690263bf34374e4c3 /src/runtime/c/teyjus/tables
parenta8eaa2f2e560547e63c7976960435e1ae23a22b1 (diff)
remove the teyjus and utils folders
Diffstat (limited to 'src/runtime/c/teyjus/tables')
-rw-r--r--src/runtime/c/teyjus/tables/README27
-rw-r--r--src/runtime/c/teyjus/tables/instructions.c292
-rw-r--r--src/runtime/c/teyjus/tables/instructions.h480
-rw-r--r--src/runtime/c/teyjus/tables/pervasives.c810
-rw-r--r--src/runtime/c/teyjus/tables/pervasives.h326
-rw-r--r--src/runtime/c/teyjus/tables/pervinit.c152
-rw-r--r--src/runtime/c/teyjus/tables/pervinit.h73
7 files changed, 0 insertions, 2160 deletions
diff --git a/src/runtime/c/teyjus/tables/README b/src/runtime/c/teyjus/tables/README
deleted file mode 100644
index 00c92caa2..000000000
--- a/src/runtime/c/teyjus/tables/README
+++ /dev/null
@@ -1,27 +0,0 @@
- TABLES
- ======
-The files in source/tables define the pervasive tables and instruction
-format tables.
-
-pervasives:
-
- pervasives.h{c}
- ===============
- Defines the pervasive tables for pervasive kinds, type skeletons
- and constants. Note these files are automatically generated.
-
- pervinit.h{c}
- =============
- Defines the initialization functions for pervasive tables: such functions
- are necessary because the pervasive names in the system run-time have
- special encoding in the simulator (source/simulator/mcstring.h{c}) for
- garbage collection as opposed to simply C strings. These names have to
- be laid out on the system memory upon system initialization.
-
- instructions.h{c}
- =================
- Defines instruction formats and instruction opcodes.
- Note these files are automatically generated.
-
-
- \ No newline at end of file
diff --git a/src/runtime/c/teyjus/tables/instructions.c b/src/runtime/c/teyjus/tables/instructions.c
deleted file mode 100644
index 183eb1875..000000000
--- a/src/runtime/c/teyjus/tables/instructions.c
+++ /dev/null
@@ -1,292 +0,0 @@
-/****************************************************************************/
-/* */
-/* File instructions.c. This file defines the operand types table and */
-/* the instruction information table. */
-/* */
-/****************************************************************************/
-
-
-#include "instructions.h"
-
-/****************************************************************************/
-/* OPERAND TYPES TABLE */
-/****************************************************************************/
-
-/* Max number of operand that could be taken by instructions including the */
-/* padding bytes and one to terminate the list. (machine dependent) */
-#define INSTR_MAX_OPERAND 8
-
-/* this array is indexed by instruction category. For each category,
- INSTR_operandTypeTab contains a string of values indicating the type
- of the operand at that position, terminated by INSTR_X. This
- information is useful when parsing instruction streams. */
-typedef INSTR_OperandType
- INSTR_OperandTypeTab[INSTR_NUM_INSTR_CATS][INSTR_MAX_OPERAND];
-
-INSTR_OperandTypeTab INSTR_operandTypeTable ={
- //INSTR_CAT_X
- {INSTR_P, INSTR_P, INSTR_P, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_RX
- {INSTR_R, INSTR_P, INSTR_P, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_EX
- {INSTR_E, INSTR_P, INSTR_P, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_I1X
- {INSTR_I1, INSTR_P, INSTR_P, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_CX
- {INSTR_P, INSTR_C, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_KX
- {INSTR_P, INSTR_K, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_IX
- {INSTR_P, INSTR_P, INSTR_P, INSTR_I, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_FX
- {INSTR_P, INSTR_P, INSTR_P, INSTR_F, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_SX
- {INSTR_P, INSTR_P, INSTR_P, INSTR_S, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_MTX
- {INSTR_P, INSTR_P, INSTR_P, INSTR_MT, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_LX
- {INSTR_P, INSTR_P, INSTR_P, INSTR_L, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_RRX
- {INSTR_R, INSTR_R, INSTR_P, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_ERX
- {INSTR_E, INSTR_R, INSTR_P, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_RCX
- {INSTR_R, INSTR_C, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_RIX
- {INSTR_R, INSTR_P, INSTR_P, INSTR_I, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_RFX
- {INSTR_R, INSTR_P, INSTR_P, INSTR_F, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_RSX
- {INSTR_R, INSTR_P, INSTR_P, INSTR_S, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_RI1X
- {INSTR_R, INSTR_I1, INSTR_P, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_RCEX
- {INSTR_R, INSTR_CE, INSTR_P, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_ECEX
- {INSTR_E, INSTR_CE, INSTR_P, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_CLX
- {INSTR_P, INSTR_C, INSTR_L, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_RKX
- {INSTR_R, INSTR_K, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_ECX
- {INSTR_E, INSTR_C, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_I1ITX
- {INSTR_I1, INSTR_P, INSTR_P, INSTR_IT, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_I1LX
- {INSTR_I1, INSTR_P, INSTR_P, INSTR_L, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_SEGLX
- {INSTR_SEG, INSTR_P, INSTR_P, INSTR_L, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_I1LWPX
- {INSTR_I1, INSTR_P, INSTR_P, INSTR_L, INSTR_WP, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_I1NX
- {INSTR_I1, INSTR_N, INSTR_P, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_I1HTX
- {INSTR_I1, INSTR_P, INSTR_P, INSTR_HT, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_I1BVTX
- {INSTR_I1, INSTR_P, INSTR_P, INSTR_BVT, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_CWPX
- {INSTR_P, INSTR_C, INSTR_WP, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_I1WPX
- {INSTR_I1, INSTR_P, INSTR_P, INSTR_WP, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_RRI1X
- {INSTR_R, INSTR_R, INSTR_I1, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_RCLX
- {INSTR_R, INSTR_C, INSTR_L, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_RCI1X
- {INSTR_R, INSTR_C, INSTR_I1, INSTR_P, INSTR_P, INSTR_P, INSTR_X, INSTR_X},
- //INSTR_CAT_SEGI1LX
- {INSTR_SEG, INSTR_I1, INSTR_P, INSTR_L, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_I1LLX
- {INSTR_I1, INSTR_P, INSTR_P, INSTR_L, INSTR_L, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_NLLX
- {INSTR_N, INSTR_P, INSTR_P, INSTR_L, INSTR_L, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_LLLLX
- {INSTR_P, INSTR_P, INSTR_P, INSTR_L, INSTR_L, INSTR_L, INSTR_L, INSTR_X},
- //INSTR_CAT_I1CWPX
- {INSTR_I1, INSTR_C, INSTR_WP, INSTR_X, INSTR_X, INSTR_X, INSTR_X, INSTR_X},
- //INSTR_CAT_I1I1WPX
- {INSTR_I1, INSTR_I1, INSTR_P, INSTR_WP, INSTR_X, INSTR_X, INSTR_X, INSTR_X}
-};
-
-INSTR_OperandType* INSTR_operandTypes(INSTR_InstrCategory index)
-{
- return INSTR_operandTypeTable[index];
-}
-
-/****************************************************************************/
-/* INSTRUCTION INFORMATION TABLE */
-/****************************************************************************/
-typedef struct //entry of the instruction info table
-{
- char* name;
- INSTR_InstrCategory type;
- int size;
-} INSTR_InstrInfoTab_;
-
-typedef INSTR_InstrInfoTab_ INSTR_InstrInfoTab[INSTR_NUM_INSTRS];
-
-INSTR_InstrInfoTab INSTR_instrInfoTable ={
- {"put_variable_t", INSTR_CAT_RRX, INSTR_RRX_LEN},
- {"put_variable_p", INSTR_CAT_ERX, INSTR_ERX_LEN},
- {"put_value_t", INSTR_CAT_RRX, INSTR_RRX_LEN},
- {"put_value_p", INSTR_CAT_ERX, INSTR_ERX_LEN},
- {"put_unsafe_value", INSTR_CAT_ERX, INSTR_ERX_LEN},
- {"copy_value", INSTR_CAT_ERX, INSTR_ERX_LEN},
- {"put_m_const", INSTR_CAT_RCX, INSTR_RCX_LEN},
- {"put_p_const", INSTR_CAT_RCX, INSTR_RCX_LEN},
- {"put_nil", INSTR_CAT_RX, INSTR_RX_LEN},
- {"put_integer", INSTR_CAT_RIX, INSTR_RIX_LEN},
- {"put_float", INSTR_CAT_RFX, INSTR_RFX_LEN},
- {"put_string", INSTR_CAT_RSX, INSTR_RSX_LEN},
- {"put_index", INSTR_CAT_RI1X, INSTR_RI1X_LEN},
- {"put_app", INSTR_CAT_RRI1X, INSTR_RRI1X_LEN},
- {"put_list", INSTR_CAT_RX, INSTR_RX_LEN},
- {"put_lambda", INSTR_CAT_RRI1X, INSTR_RRI1X_LEN},
- {"set_variable_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"set_variable_te", INSTR_CAT_RX, INSTR_RX_LEN},
- {"set_variable_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"set_value_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"set_value_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"globalize_pt", INSTR_CAT_ERX, INSTR_ERX_LEN},
- {"globalize_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"set_m_const", INSTR_CAT_CX, INSTR_CX_LEN},
- {"set_p_const", INSTR_CAT_CX, INSTR_CX_LEN},
- {"set_nil", INSTR_CAT_X, INSTR_X_LEN},
- {"set_integer", INSTR_CAT_IX, INSTR_IX_LEN},
- {"set_float", INSTR_CAT_FX, INSTR_FX_LEN},
- {"set_string", INSTR_CAT_SX, INSTR_SX_LEN},
- {"set_index", INSTR_CAT_I1X, INSTR_I1X_LEN},
- {"set_void", INSTR_CAT_I1X, INSTR_I1X_LEN},
- {"deref", INSTR_CAT_RX, INSTR_RX_LEN},
- {"set_lambda", INSTR_CAT_RI1X, INSTR_RI1X_LEN},
- {"get_variable_t", INSTR_CAT_RRX, INSTR_RRX_LEN},
- {"get_variable_p", INSTR_CAT_ERX, INSTR_ERX_LEN},
- {"init_variable_t", INSTR_CAT_RCEX, INSTR_RCEX_LEN},
- {"init_variable_p", INSTR_CAT_ECEX, INSTR_ECEX_LEN},
- {"get_m_constant", INSTR_CAT_RCX, INSTR_RCX_LEN},
- {"get_p_constant", INSTR_CAT_RCLX, INSTR_RCLX_LEN},
- {"get_integer", INSTR_CAT_RIX, INSTR_RIX_LEN},
- {"get_float", INSTR_CAT_RFX, INSTR_RFX_LEN},
- {"get_string", INSTR_CAT_RSX, INSTR_RSX_LEN},
- {"get_nil", INSTR_CAT_RX, INSTR_RX_LEN},
- {"get_m_structure", INSTR_CAT_RCI1X, INSTR_RCI1X_LEN},
- {"get_p_structure", INSTR_CAT_RCI1X, INSTR_RCI1X_LEN},
- {"get_list", INSTR_CAT_RX, INSTR_RX_LEN},
- {"unify_variable_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"unify_variable_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"unify_value_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"unify_value_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"unify_local_value_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"unify_local_value_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"unify_m_constant", INSTR_CAT_CX, INSTR_CX_LEN},
- {"unify_p_constant", INSTR_CAT_CLX, INSTR_CLX_LEN},
- {"unify_integer", INSTR_CAT_IX, INSTR_IX_LEN},
- {"unify_float", INSTR_CAT_FX, INSTR_FX_LEN},
- {"unify_string", INSTR_CAT_SX, INSTR_SX_LEN},
- {"unify_nil", INSTR_CAT_X, INSTR_X_LEN},
- {"unify_void", INSTR_CAT_I1X, INSTR_I1X_LEN},
- {"put_type_variable_t", INSTR_CAT_RRX, INSTR_RRX_LEN},
- {"put_type_variable_p", INSTR_CAT_ERX, INSTR_ERX_LEN},
- {"put_type_value_t", INSTR_CAT_RRX, INSTR_RRX_LEN},
- {"put_type_value_p", INSTR_CAT_ERX, INSTR_ERX_LEN},
- {"put_type_unsafe_value", INSTR_CAT_ERX, INSTR_ERX_LEN},
- {"put_type_const", INSTR_CAT_RKX, INSTR_RKX_LEN},
- {"put_type_structure", INSTR_CAT_RKX, INSTR_RKX_LEN},
- {"put_type_arrow", INSTR_CAT_RX, INSTR_RX_LEN},
- {"set_type_variable_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"set_type_variable_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"set_type_value_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"set_type_value_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"set_type_local_value_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"set_type_local_value_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"set_type_constant", INSTR_CAT_KX, INSTR_KX_LEN},
- {"get_type_variable_t", INSTR_CAT_RRX, INSTR_RRX_LEN},
- {"get_type_variable_p", INSTR_CAT_ERX, INSTR_ERX_LEN},
- {"init_type_variable_t", INSTR_CAT_RCEX, INSTR_RCEX_LEN},
- {"init_type_variable_p", INSTR_CAT_ECEX, INSTR_ECEX_LEN},
- {"get_type_value_t", INSTR_CAT_RRX, INSTR_RRX_LEN},
- {"get_type_value_p", INSTR_CAT_ERX, INSTR_ERX_LEN},
- {"get_type_constant", INSTR_CAT_RKX, INSTR_RKX_LEN},
- {"get_type_structure", INSTR_CAT_RKX, INSTR_RKX_LEN},
- {"get_type_arrow", INSTR_CAT_RX, INSTR_RX_LEN},
- {"unify_type_variable_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"unify_type_variable_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"unify_type_value_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"unify_type_value_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"unify_envty_value_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"unify_envty_value_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"unify_type_local_value_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"unify_type_local_value_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"unify_envty_local_value_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"unify_envty_local_value_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"unify_type_constant", INSTR_CAT_KX, INSTR_KX_LEN},
- {"pattern_unify_t", INSTR_CAT_RRX, INSTR_RRX_LEN},
- {"pattern_unify_p", INSTR_CAT_ERX, INSTR_ERX_LEN},
- {"finish_unify", INSTR_CAT_X, INSTR_X_LEN},
- {"head_normalize_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"head_normalize_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"incr_universe", INSTR_CAT_X, INSTR_X_LEN},
- {"decr_universe", INSTR_CAT_X, INSTR_X_LEN},
- {"set_univ_tag", INSTR_CAT_ECX, INSTR_ECX_LEN},
- {"tag_exists_t", INSTR_CAT_RX, INSTR_RX_LEN},
- {"tag_exists_p", INSTR_CAT_EX, INSTR_EX_LEN},
- {"tag_variable", INSTR_CAT_EX, INSTR_EX_LEN},
- {"push_impl_point", INSTR_CAT_I1ITX, INSTR_I1ITX_LEN},
- {"pop_impl_point", INSTR_CAT_X, INSTR_X_LEN},
- {"add_imports", INSTR_CAT_SEGI1LX, INSTR_SEGI1LX_LEN},
- {"remove_imports", INSTR_CAT_SEGLX, INSTR_SEGLX_LEN},
- {"push_import", INSTR_CAT_MTX, INSTR_MTX_LEN},
- {"pop_imports", INSTR_CAT_I1X, INSTR_I1X_LEN},
- {"allocate", INSTR_CAT_I1X, INSTR_I1X_LEN},
- {"deallocate", INSTR_CAT_X, INSTR_X_LEN},
- {"call", INSTR_CAT_I1LX, INSTR_I1LX_LEN},
- {"call_name", INSTR_CAT_I1CWPX, INSTR_I1CWPX_LEN},
- {"execute", INSTR_CAT_LX, INSTR_LX_LEN},
- {"execute_name", INSTR_CAT_CWPX, INSTR_CWPX_LEN},
- {"proceed", INSTR_CAT_X, INSTR_X_LEN},
- {"try_me_else", INSTR_CAT_I1LX, INSTR_I1LX_LEN},
- {"retry_me_else", INSTR_CAT_I1LX, INSTR_I1LX_LEN},
- {"trust_me", INSTR_CAT_I1WPX, INSTR_I1WPX_LEN},
- {"try", INSTR_CAT_I1LX, INSTR_I1LX_LEN},
- {"retry", INSTR_CAT_I1LX, INSTR_I1LX_LEN},
- {"trust", INSTR_CAT_I1LWPX, INSTR_I1LWPX_LEN},
- {"trust_ext", INSTR_CAT_I1NX, INSTR_I1NX_LEN},
- {"try_else", INSTR_CAT_I1LLX, INSTR_I1LLX_LEN},
- {"retry_else", INSTR_CAT_I1LLX, INSTR_I1LLX_LEN},
- {"branch", INSTR_CAT_LX, INSTR_LX_LEN},
- {"switch_on_term", INSTR_CAT_LLLLX, INSTR_LLLLX_LEN},
- {"switch_on_constant", INSTR_CAT_I1HTX, INSTR_I1HTX_LEN},
- {"switch_on_bvar", INSTR_CAT_I1BVTX, INSTR_I1BVTX_LEN},
- {"switch_on_reg", INSTR_CAT_NLLX, INSTR_NLLX_LEN},
- {"neck_cut", INSTR_CAT_X, INSTR_X_LEN},
- {"get_level", INSTR_CAT_EX, INSTR_EX_LEN},
- {"put_level", INSTR_CAT_EX, INSTR_EX_LEN},
- {"cut", INSTR_CAT_EX, INSTR_EX_LEN},
- {"call_builtin", INSTR_CAT_I1I1WPX, INSTR_I1I1WPX_LEN},
- {"builtin", INSTR_CAT_I1X, INSTR_I1X_LEN},
- {"stop", INSTR_CAT_X, INSTR_X_LEN},
- {"halt", INSTR_CAT_X, INSTR_X_LEN},
- {"fail", INSTR_CAT_X, INSTR_X_LEN},
- {"create_type_variable", INSTR_CAT_EX, INSTR_EX_LEN},
- {"execute_link_only", INSTR_CAT_CWPX, INSTR_CWPX_LEN},
- {"call_link_only", INSTR_CAT_I1CWPX, INSTR_I1CWPX_LEN},
- {"put_variable_te", INSTR_CAT_RRX, INSTR_RRX_LEN}
-};
-
-/* Accessing functions */
-INSTR_InstrCategory INSTR_instrType(int index)
-{
- return (INSTR_instrInfoTable[index]).type;
-}
-
-char* INSTR_instrName(int index)
-{
- return (INSTR_instrInfoTable[index]).name;
-}
-
-int INSTR_instrSize(int index)
-{
- return (INSTR_instrInfoTable[index]).size;
-}
-
-
diff --git a/src/runtime/c/teyjus/tables/instructions.h b/src/runtime/c/teyjus/tables/instructions.h
deleted file mode 100644
index 2ced4e85d..000000000
--- a/src/runtime/c/teyjus/tables/instructions.h
+++ /dev/null
@@ -1,480 +0,0 @@
-/****************************************************************************/
-/* File instructions.h. */
-/* This file defines instruction operand types, instruction categories and */
-/* instruction opcode. */
-/****************************************************************************/
-
-#ifndef INSTRUCTIONS_H
-#define INSTRUCTIONS_H
-
-#include "../simulator/mctypes.h" //to be changed
-#include "../simulator/dataformats.h" //to be changed
-
-/****************************************************************************/
-/* OPERAND TYPES */
-/****************************************************************************/
-
-/* possible types of instruction operands */
-typedef enum INSTR_OperandType
-{
- // (1 byte) padding
- INSTR_P,
- // (1 word) padding
- INSTR_WP,
- // argument register number
- INSTR_R,
- // environment variable number
- INSTR_E,
- // next clause number in impt or impl pt
- INSTR_N,
- // 1 byte natural number
- INSTR_I1,
- // closure environment variable number
- INSTR_CE,
- // import segment index
- INSTR_SEG,
- // constant symbol table index
- INSTR_C,
- // kind symbol table index
- INSTR_K,
- // code location
- INSTR_L,
- // integer immediate value
- INSTR_I,
- // floating point immediate value
- INSTR_F,
- // string pointer
- INSTR_S,
- // module table address
- INSTR_MT,
- // impl table address
- INSTR_IT,
- // hash table address
- INSTR_HT,
- // branch table for bound var indexing
- INSTR_BVT,
- // operand list terminator
- INSTR_X
-} INSTR_OperandType;
-
-/**************************************************************************/
-/* Types for instruction operants */
-/**************************************************************************/
-
-typedef Byte INSTR_OpCode;
-typedef Byte INSTR_RegInd;
-typedef Byte INSTR_EnvInd;
-typedef Byte INSTR_NextClauseInd;
-typedef Byte INSTR_OneByteInt;
-typedef Byte INSTR_ClEnvInd;
-typedef Byte INSTR_ImpSegInd;
-typedef TwoBytes INSTR_CstIndex;
-typedef TwoBytes INSTR_KstIndex;
-typedef CSpacePtr INSTR_CodeLabel;
-typedef int INSTR_Int;
-typedef float INSTR_Float;
-typedef DF_StrDataPtr INSTR_Str;
-typedef MemPtr INSTR_ModTab;
-typedef MemPtr INSTR_ImplTab;
-typedef MemPtr INSTR_HashTab;
-typedef MemPtr INSTR_BranchTab;
-
-/***************************************************************************/
-/* INSTRUCTION CATEGORIES */
-/***************************************************************************/
- /* The names of instruction categories no longer include padding bytes. */
-/* Thus we do not need to maintain two sets of names for different machine */
-/* architectures. */
-typedef enum INSTR_InstrCategory
-{
- INSTR_CAT_X = 0,
- INSTR_CAT_RX = 1,
- INSTR_CAT_EX = 2,
- INSTR_CAT_I1X = 3,
- INSTR_CAT_CX = 4,
- INSTR_CAT_KX = 5,
- INSTR_CAT_IX = 6,
- INSTR_CAT_FX = 7,
- INSTR_CAT_SX = 8,
- INSTR_CAT_MTX = 9,
- INSTR_CAT_LX = 10,
- INSTR_CAT_RRX = 11,
- INSTR_CAT_ERX = 12,
- INSTR_CAT_RCX = 13,
- INSTR_CAT_RIX = 14,
- INSTR_CAT_RFX = 15,
- INSTR_CAT_RSX = 16,
- INSTR_CAT_RI1X = 17,
- INSTR_CAT_RCEX = 18,
- INSTR_CAT_ECEX = 19,
- INSTR_CAT_CLX = 20,
- INSTR_CAT_RKX = 21,
- INSTR_CAT_ECX = 22,
- INSTR_CAT_I1ITX = 23,
- INSTR_CAT_I1LX = 24,
- INSTR_CAT_SEGLX = 25,
- INSTR_CAT_I1LWPX = 26,
- INSTR_CAT_I1NX = 27,
- INSTR_CAT_I1HTX = 28,
- INSTR_CAT_I1BVTX = 29,
- INSTR_CAT_CWPX = 30,
- INSTR_CAT_I1WPX = 31,
- INSTR_CAT_RRI1X = 32,
- INSTR_CAT_RCLX = 33,
- INSTR_CAT_RCI1X = 34,
- INSTR_CAT_SEGI1LX = 35,
- INSTR_CAT_I1LLX = 36,
- INSTR_CAT_NLLX = 37,
- INSTR_CAT_LLLLX = 38,
- INSTR_CAT_I1CWPX = 39,
- INSTR_CAT_I1I1WPX = 40
-} INSTR_InstrCategory;
-
-#define INSTR_NUM_INSTR_CATS 41
-
-#define INSTR_CALL_I1_LEN 7
-
-/**************************************************************************/
-/* Macros defines instruction lengths and distances between op code and */
-/* operands. */
-/* The assumption is that the op code occupies 1 byte. */
-/**************************************************************************/
-
-//INSTR_CAT_X
-#define INSTR_X_LEN 4
-//INSTR_CAT_RX
-#define INSTR_RX_LEN 4
-#define INSTR_RX_R 1
-//INSTR_CAT_EX
-#define INSTR_EX_LEN 4
-#define INSTR_EX_E 1
-//INSTR_CAT_I1X
-#define INSTR_I1X_LEN 4
-#define INSTR_I1X_I1 1
-//INSTR_CAT_CX
-#define INSTR_CX_LEN 4
-#define INSTR_CX_C 2
-//INSTR_CAT_KX
-#define INSTR_KX_LEN 4
-#define INSTR_KX_K 2
-//INSTR_CAT_IX
-#define INSTR_IX_LEN 8
-#define INSTR_IX_I 4
-//INSTR_CAT_FX
-#define INSTR_FX_LEN 8
-#define INSTR_FX_F 4
-//INSTR_CAT_SX
-#define INSTR_SX_LEN 8
-#define INSTR_SX_S 4
-//INSTR_CAT_MTX
-#define INSTR_MTX_LEN 8
-#define INSTR_MTX_MT 4
-//INSTR_CAT_LX
-#define INSTR_LX_LEN 8
-#define INSTR_LX_L 4
-//INSTR_CAT_RRX
-#define INSTR_RRX_LEN 4
-#define INSTR_RRX_R1 1
-#define INSTR_RRX_R2 2
-//INSTR_CAT_ERX
-#define INSTR_ERX_LEN 4
-#define INSTR_ERX_E 1
-#define INSTR_ERX_R 2
-//INSTR_CAT_RCX
-#define INSTR_RCX_LEN 4
-#define INSTR_RCX_R 1
-#define INSTR_RCX_C 2
-//INSTR_CAT_RIX
-#define INSTR_RIX_LEN 8
-#define INSTR_RIX_R 1
-#define INSTR_RIX_I 4
-//INSTR_CAT_RFX
-#define INSTR_RFX_LEN 8
-#define INSTR_RFX_R 1
-#define INSTR_RFX_F 4
-//INSTR_CAT_RSX
-#define INSTR_RSX_LEN 8
-#define INSTR_RSX_R 1
-#define INSTR_RSX_S 4
-//INSTR_CAT_RI1X
-#define INSTR_RI1X_LEN 4
-#define INSTR_RI1X_R 1
-#define INSTR_RI1X_I1 2
-//INSTR_CAT_RCEX
-#define INSTR_RCEX_LEN 4
-#define INSTR_RCEX_R 1
-#define INSTR_RCEX_CE 2
-//INSTR_CAT_ECEX
-#define INSTR_ECEX_LEN 4
-#define INSTR_ECEX_E 1
-#define INSTR_ECEX_CE 2
-//INSTR_CAT_CLX
-#define INSTR_CLX_LEN 8
-#define INSTR_CLX_C 2
-#define INSTR_CLX_L 4
-//INSTR_CAT_RKX
-#define INSTR_RKX_LEN 4
-#define INSTR_RKX_R 1
-#define INSTR_RKX_K 2
-//INSTR_CAT_ECX
-#define INSTR_ECX_LEN 4
-#define INSTR_ECX_E 1
-#define INSTR_ECX_C 2
-//INSTR_CAT_I1ITX
-#define INSTR_I1ITX_LEN 8
-#define INSTR_I1ITX_I1 1
-#define INSTR_I1ITX_IT 4
-//INSTR_CAT_I1LX
-#define INSTR_I1LX_LEN 8
-#define INSTR_I1LX_I1 1
-#define INSTR_I1LX_L 4
-//INSTR_CAT_SEGLX
-#define INSTR_SEGLX_LEN 8
-#define INSTR_SEGLX_SEG 1
-#define INSTR_SEGLX_L 4
-//INSTR_CAT_I1LWPX
-#define INSTR_I1LWPX_LEN 12
-#define INSTR_I1LWPX_I1 1
-#define INSTR_I1LWPX_L 4
-//INSTR_CAT_I1NX
-#define INSTR_I1NX_LEN 4
-#define INSTR_I1NX_I1 1
-#define INSTR_I1NX_N 2
-//INSTR_CAT_I1HTX
-#define INSTR_I1HTX_LEN 8
-#define INSTR_I1HTX_I1 1
-#define INSTR_I1HTX_HT 4
-//INSTR_CAT_I1BVTX
-#define INSTR_I1BVTX_LEN 8
-#define INSTR_I1BVTX_I1 1
-#define INSTR_I1BVTX_BVT 4
-//INSTR_CAT_CWPX
-#define INSTR_CWPX_LEN 8
-#define INSTR_CWPX_C 2
-//INSTR_CAT_I1WPX
-#define INSTR_I1WPX_LEN 8
-#define INSTR_I1WPX_I1 1
-//INSTR_CAT_RRI1X
-#define INSTR_RRI1X_LEN 4
-#define INSTR_RRI1X_R1 1
-#define INSTR_RRI1X_R2 2
-#define INSTR_RRI1X_I1 3
-//INSTR_CAT_RCLX
-#define INSTR_RCLX_LEN 8
-#define INSTR_RCLX_R 1
-#define INSTR_RCLX_C 2
-#define INSTR_RCLX_L 4
-//INSTR_CAT_RCI1X
-#define INSTR_RCI1X_LEN 8
-#define INSTR_RCI1X_R 1
-#define INSTR_RCI1X_C 2
-#define INSTR_RCI1X_I1 4
-//INSTR_CAT_SEGI1LX
-#define INSTR_SEGI1LX_LEN 8
-#define INSTR_SEGI1LX_SEG 1
-#define INSTR_SEGI1LX_I1 2
-#define INSTR_SEGI1LX_L 4
-//INSTR_CAT_I1LLX
-#define INSTR_I1LLX_LEN 12
-#define INSTR_I1LLX_I1 1
-#define INSTR_I1LLX_L1 4
-#define INSTR_I1LLX_L2 8
-//INSTR_CAT_NLLX
-#define INSTR_NLLX_LEN 12
-#define INSTR_NLLX_N 1
-#define INSTR_NLLX_L1 4
-#define INSTR_NLLX_L2 8
-//INSTR_CAT_LLLLX
-#define INSTR_LLLLX_LEN 20
-#define INSTR_LLLLX_L1 4
-#define INSTR_LLLLX_L2 8
-#define INSTR_LLLLX_L3 12
-#define INSTR_LLLLX_L4 16
-//INSTR_CAT_I1CWPX
-#define INSTR_I1CWPX_LEN 8
-#define INSTR_I1CWPX_I1 1
-#define INSTR_I1CWPX_C 2
-//INSTR_CAT_I1I1WPX
-#define INSTR_I1I1WPX_LEN 8
-#define INSTR_I1I1WPX_I11 1
-#define INSTR_I1I1WPX_I12 2
-
-/****************************************************************************/
-/* OPERAND TYPES TABLE */
-/****************************************************************************/
-
-//the operand types array in a given entry
-INSTR_OperandType* INSTR_operandTypes(INSTR_InstrCategory index);
-
-/***************************************************************************/
-/* OPCODES OF INSTRUCTIONS */
-/***************************************************************************/
-// Instructions for term unification and creation
-#define put_variable_t 0
-#define put_variable_p 1
-#define put_value_t 2
-#define put_value_p 3
-#define put_unsafe_value 4
-#define copy_value 5
-#define put_m_const 6
-#define put_p_const 7
-#define put_nil 8
-#define put_integer 9
-#define put_float 10
-#define put_string 11
-#define put_index 12
-#define put_app 13
-#define put_list 14
-#define put_lambda 15
-#define set_variable_t 16
-#define set_variable_te 17
-#define set_variable_p 18
-#define set_value_t 19
-#define set_value_p 20
-#define globalize_pt 21
-#define globalize_t 22
-#define set_m_const 23
-#define set_p_const 24
-#define set_nil 25
-#define set_integer 26
-#define set_float 27
-#define set_string 28
-#define set_index 29
-#define set_void 30
-#define deref 31
-#define set_lambda 32
-#define get_variable_t 33
-#define get_variable_p 34
-#define init_variable_t 35
-#define init_variable_p 36
-#define get_m_constant 37
-#define get_p_constant 38
-#define get_integer 39
-#define get_float 40
-#define get_string 41
-#define get_nil 42
-#define get_m_structure 43
-#define get_p_structure 44
-#define get_list 45
-#define unify_variable_t 46
-#define unify_variable_p 47
-#define unify_value_t 48
-#define unify_value_p 49
-#define unify_local_value_t 50
-#define unify_local_value_p 51
-#define unify_m_constant 52
-#define unify_p_constant 53
-#define unify_integer 54
-#define unify_float 55
-#define unify_string 56
-#define unify_nil 57
-#define unify_void 58
-// Instructions for type unification and creation
-#define put_type_variable_t 59
-#define put_type_variable_p 60
-#define put_type_value_t 61
-#define put_type_value_p 62
-#define put_type_unsafe_value 63
-#define put_type_const 64
-#define put_type_structure 65
-#define put_type_arrow 66
-#define set_type_variable_t 67
-#define set_type_variable_p 68
-#define set_type_value_t 69
-#define set_type_value_p 70
-#define set_type_local_value_t 71
-#define set_type_local_value_p 72
-#define set_type_constant 73
-#define get_type_variable_t 74
-#define get_type_variable_p 75
-#define init_type_variable_t 76
-#define init_type_variable_p 77
-#define get_type_value_t 78
-#define get_type_value_p 79
-#define get_type_constant 80
-#define get_type_structure 81
-#define get_type_arrow 82
-#define unify_type_variable_t 83
-#define unify_type_variable_p 84
-#define unify_type_value_t 85
-#define unify_type_value_p 86
-#define unify_envty_value_t 87
-#define unify_envty_value_p 88
-#define unify_type_local_value_t 89
-#define unify_type_local_value_p 90
-#define unify_envty_local_value_t 91
-#define unify_envty_local_value_p 92
-#define unify_type_constant 93
-// Instructions for handling higher-order aspects
-#define pattern_unify_t 94
-#define pattern_unify_p 95
-#define finish_unify 96
-#define head_normalize_t 97
-#define head_normalize_p 98
-// Instructions for handling logical aspects
-#define incr_universe 99
-#define decr_universe 100
-#define set_univ_tag 101
-#define tag_exists_t 102
-#define tag_exists_p 103
-#define tag_variable 104
-#define push_impl_point 105
-#define pop_impl_point 106
-#define add_imports 107
-#define remove_imports 108
-#define push_import 109
-#define pop_imports 110
-// Control Instructions
-#define allocate 111
-#define deallocate 112
-#define call 113
-#define call_name 114
-#define execute 115
-#define execute_name 116
-#define proceed 117
-// Choice Instructions
-#define try_me_else 118
-#define retry_me_else 119
-#define trust_me 120
-#define try 121
-#define retry 122
-#define trust 123
-#define trust_ext 124
-#define try_else 125
-#define retry_else 126
-#define branch 127
-// Indexing Instructions
-#define switch_on_term 128
-#define switch_on_constant 129
-#define switch_on_bvar 130
-#define switch_on_reg 131
-// Cut Instructions
-#define neck_cut 132
-#define get_level 133
-#define put_level 134
-#define cut 135
-// Miscellaneous Instructions
-#define call_builtin 136
-#define builtin 137
-#define stop 138
-#define halt 139
-#define fail 140
-// new added
-#define create_type_variable 141
-// resolved by the linker
-#define execute_link_only 142
-#define call_link_only 143
-#define put_variable_te 144
-
-
-#define INSTR_NUM_INSTRS 145
-
-/***************************************************************************/
-/* INSTRUCTION INFORMATION TABLE */
-/***************************************************************************/
-INSTR_InstrCategory INSTR_instrType(int index); //instr type in a given entry
-char* INSTR_instrName(int index); //instr name in a given entry
-int INSTR_instrSize(int index); //instr size in a given entry
-
-#endif //INSTRUCTIONS_H
-
diff --git a/src/runtime/c/teyjus/tables/pervasives.c b/src/runtime/c/teyjus/tables/pervasives.c
deleted file mode 100644
index 4c2b3ad4c..000000000
--- a/src/runtime/c/teyjus/tables/pervasives.c
+++ /dev/null
@@ -1,810 +0,0 @@
-/***************************************************************************/
-/* File pervasives.c. */
-/***************************************************************************/
-
-#ifndef PERVASIVES_C
-#define PERVASIVES_C
-
-#include <string.h>
-#include "pervasives.h"
-#include "../system/error.h" //to be changed
-#include "../system/operators.h" //to be changed
-
-
-/****************************************************************************/
-/* PERVASIVE KIND */
-/****************************************************************************/
-//pervasive kind data table (array)
-PERV_KindData PERV_kindDataTab[PERV_KIND_NUM] = {
- //name, arity
- // int
- {"int", 0},
- // real
- {"real", 0},
- // bool
- {"o", 0},
- // string
- {"string", 0},
- // list type constructor
- {"list", 1},
- // in_stream
- {"in_stream", 0},
- // out_stream
- {"out_stream", 0}
-};
-
-PERV_KindData PERV_getKindData(int index)
-{
- return PERV_kindDataTab[index];
-}
-
-void PERV_copyKindDataTab(PERV_KindData* dst)
-{
- //this way of copy relies on the assumption that the pervasive kind data
- //has the same structure as that of the run-time kind symbol table entries.
- memcpy((void*)dst, (void*)PERV_kindDataTab,
- sizeof(PERV_KindData) * PERV_KIND_NUM);
-}
-
-
-/***************************************************************************/
-/* TYPE SKELETIONS FOR PERVASIVE CONSTANTS */
-/****************************************************************************/
-
-//pervasive type skeleton table (array)
-PERV_TySkelData PERV_tySkelTab[PERV_TY_SKEL_NUM];
-
-//pervasive type skeletons and type skeleton table initialization
-//The type skeletons are created in the memory of the system through malloc,
-//and addresses are entered into the pervasive type skeleton table.
-void PERV_tySkelTabInit()
-{
- int tySkelInd = 0; //ts tab index
- MemPtr tySkelBase = (MemPtr)EM_malloc(WORD_SIZE * 336 ); //ts area
-
- // A
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkSkelVarType(tySkelBase, 0);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // (list A)
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkStrType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkStrFuncType(tySkelBase, PERV_LIST_INDEX, 1);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSkelVarType(tySkelBase, 0);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // A->(list A)->(list A)
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSkelVarType(tySkelBase, 0);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkStrType(tySkelBase, (DF_TypePtr)(tySkelBase + 2 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkStrType(tySkelBase, (DF_TypePtr)(tySkelBase + 3 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkStrFuncType(tySkelBase, PERV_LIST_INDEX, 1);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSkelVarType(tySkelBase, 0);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkStrFuncType(tySkelBase, PERV_LIST_INDEX, 1);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSkelVarType(tySkelBase, 0);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // int
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // real
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkSortType(tySkelBase, PERV_REAL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // string
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // o (type of proposition)
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // int -> int
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // int -> int -> int
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // int -> int -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // int -> real
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_REAL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // real -> int
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_REAL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // real -> real
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_REAL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_REAL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // real -> string
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_REAL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // real -> real -> real
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_REAL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_REAL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_REAL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // real -> real -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_REAL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_REAL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // string -> int
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // int -> string
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // string -> string -> string
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // string -> string -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // string -> int -> int -> string
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // o -> o -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // (A -> o) -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 2 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSkelVarType(tySkelBase, 0);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // A -> A -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSkelVarType(tySkelBase, 0);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSkelVarType(tySkelBase, 0);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // in_stream
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkSortType(tySkelBase, PERV_INSTREAM_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // out_stream
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkSortType(tySkelBase, PERV_OUTSTREAM_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // string -> in_stream -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INSTREAM_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // string -> out_stream -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_OUTSTREAM_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // in_stream -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INSTREAM_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // out_stream -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_OUTSTREAM_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // A -> string -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSkelVarType(tySkelBase, 0);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // string -> A -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSkelVarType(tySkelBase, 0);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // out_stream -> string -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_OUTSTREAM_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // in_stream -> int -> string -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INSTREAM_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // in_stream -> string -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INSTREAM_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // string -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // A -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSkelVarType(tySkelBase, 0);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // out_stream -> A -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_OUTSTREAM_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSkelVarType(tySkelBase, 0);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // in_stream -> A -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INSTREAM_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSkelVarType(tySkelBase, 0);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // o -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // string -> int -> in_stream -> out_stream -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INSTREAM_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_OUTSTREAM_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
- // string -> int -> o
- PERV_tySkelTab[tySkelInd] = (PERV_TySkelData)tySkelBase;
- tySkelInd++;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_STRING_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkArrowType(tySkelBase, (DF_TypePtr)(tySkelBase + 1 * DF_TY_ATOMIC_SIZE));
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_INT_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
- DF_mkSortType(tySkelBase, PERV_BOOL_INDEX);
- tySkelBase += DF_TY_ATOMIC_SIZE;
-
-}
-
-void PERV_copyTySkelTab(PERV_TySkelData* dst)
-{
- memcpy((void*)dst, (void*)PERV_tySkelTab,
- sizeof(PERV_TySkelData) * PERV_KIND_NUM);
-}
-
-
-/***************************************************************************/
-/* PERVASIVE CONSTANTS */
-/***************************************************************************/
-
-//pervasive constant data table (array)
-PERV_ConstData PERV_constDataTab[PERV_CONST_NUM] = {
- //name, tesize, tst, neededness, UC, prec, fixity
- // logical and
- {",", 0, 21, 0, 0, 110, OP_INFIXL},
- // logical or
- {";", 0, 21, 0, 0, 100, OP_INFIXL},
- // existential quantifier
- {"sigma", 1, 22, 1, 0, 0, OP_NONE},
- // universal quantifier
- {"pi", 1, 22, 1, 0, 0, OP_NONE},
- // true proposition
- {"true", 0, 6, 0, 0, 0, OP_NONE},
- // cut predicate
- {"!", 0, 6, 0, 0, 0, OP_NONE},
- // fail predicate
- {"fail", 0, 6, 0, 0, 0, OP_NONE},
- //nothing
- {NULL, 0, 0, 0, 0, OP_NONE },
- // another logical and
- {"&", 0, 21, 0, 0, 120, OP_INFIXR},
- // halt the system
- {"halt", 0, 6, 0, 0, 0, OP_NONE},
- // return to top level
- {"stop", 0, 6, 0, 0, 0, OP_NONE},
- // Prolog if; needed?
- {":-", 0, 21, 0, 0, 0, OP_INFIXL},
- // implication; needed?
- {"=>", 0, 21, 0, 0, 130, OP_INFIXR},
- //nothing
- {NULL, 0, 0, 0, 0, OP_NONE },
- //nothing
- {NULL, 0, 0, 0, 0, OP_NONE },
- // solve; used by code generator
- {"solve", 0, 39, 0, 0, 0, OP_NONE},
- // is
- {"is", 1, 23, 1, 0, 130, OP_INFIX},
- // not
- {"not", 0, 39, 0, 0, 0, OP_NONE},
- // equality (unify) predicate
- {"=", 1, 23, 1, 0, 130, OP_INFIX},
- // less than on integers
- {"<", 0, 9, 0, 0, 130, OP_INFIX},
- // greater than on integers
- {">", 0, 9, 0, 0, 130, OP_INFIX},
- // less than or eq on integers
- {"<=", 0, 9, 0, 0, 130, OP_INFIX},
- // greater than or eq on integers
- {">=", 0, 9, 0, 0, 130, OP_INFIX},
- // less than in reals
- {"<", 0, 15, 0, 0, 130, OP_INFIX},
- // greater than on reals
- {">", 0, 15, 0, 0, 130, OP_INFIX},
- // less than or eq on reals
- {"<=", 0, 15, 0, 0, 130, OP_INFIX},
- // greater than or eq on reals
- {">=", 0, 15, 0, 0, 130, OP_INFIX},
- // less than on strings
- {"<", 0, 19, 0, 0, 130, OP_INFIX},
- // greater than on strings
- {">", 0, 19, 0, 0, 130, OP_INFIX},
- // less than or eq on strings
- {"<=", 0, 19, 0, 0, 130, OP_INFIX},
- // greater than or eq on strings
- {">=", 0, 19, 0, 0, 130, OP_INFIX},
- // open_in
- {"open_in", 0, 26, 0, 0, 0, OP_NONE},
- // open_out
- {"open_out", 0, 27, 0, 0, 0, OP_NONE},
- // open_append
- {"open_append", 0, 27, 0, 0, 0, OP_NONE},
- // close_in
- {"close_in", 0, 28, 0, 0, 0, OP_NONE},
- // close_out
- {"close_out", 0, 29, 0, 0, 0, OP_NONE},
- // open_string
- {"open_string", 0, 26, 0, 0, 0, OP_NONE},
- // input
- {"input", 0, 33, 0, 0, 0, OP_NONE},
- // output
- {"output", 0, 32, 0, 0, 0, OP_NONE},
- // input_line
- {"input_line", 0, 34, 0, 0, 0, OP_NONE},
- // lookahead
- {"lookahead", 0, 34, 0, 0, 0, OP_NONE},
- // eof
- {"eof", 0, 28, 0, 0, 0, OP_NONE},
- // flush
- {"flush", 0, 29, 0, 0, 0, OP_NONE},
- // print
- {"print", 0, 35, 0, 0, 0, OP_NONE},
- // read
- {"read", 1, 36, 1, 0, 0, OP_NONE},
- // printterm
- {"printterm", 1, 37, 0, 0, 0, OP_NONE},
- // term_to_string
- {"term_to_string", 1, 30, 0, 0, 0, OP_NONE},
- // string_to_term
- {"string_to_term", 1, 31, 1, 0, 0, OP_NONE},
- // readterm
- {"readterm", 1, 38, 1, 0, 0, OP_NONE},
- // getenv predicate; needed?
- {"getenv", 0, 19, 0, 0, 0, OP_NONE},
- // open_socket predicate
- {"open_socket", 0, 40, 0, 0, 0, OP_NONE},
- // time predicate
- {"time", 0, 9, 0, 0, 0, OP_NONE},
- // system predicate
- {"system", 0, 41, 0, 0, 0, OP_NONE},
- //nothing
- {NULL, 0, 0, 0, 0, OP_NONE },
- //nothing
- {NULL, 0, 0, 0, 0, OP_NONE },
- //nothing
- {NULL, 0, 0, 0, 0, OP_NONE },
- // unary minus on integers
- {"-", 0, 7, 0, 0, 256, OP_PREFIX},
- // addition on integers
- {"+", 0, 8, 0, 0, 150, OP_INFIXL},
- // subtraction on integers
- {"-", 0, 8, 0, 0, 150, OP_INFIXL},
- // mutiplication on integers
- {"*", 0, 8, 0, 0, 160, OP_INFIXL},
- // integer division
- {"div", 0, 8, 0, 0, 160, OP_INFIXL},
- // modulus
- {"mod", 0, 7, 0, 0, 160, OP_INFIXL},
- // coercion to real
- {"int_to_real", 0, 10, 0, 0, 0, OP_NONE},
- // integer abs
- {"abs", 0, 7, 0, 0, 0, OP_NONE},
- // unary minus on real
- {"-", 0, 12, 0, 0, 256, OP_PREFIX},
- // addition on reals
- {"+", 0, 14, 0, 0, 150, OP_INFIXL},
- // subtraction on reals
- {"-", 0, 14, 0, 0, 150, OP_INFIXL},
- // multiplication on reals
- {"*", 0, 14, 0, 0, 160, OP_INFIXL},
- // division
- {"/", 0, 14, 0, 0, 160, OP_INFIXL},
- // square root
- {"sqrt", 0, 12, 0, 0, 0, OP_NONE},
- // sine
- {"sin", 0, 12, 0, 0, 0, OP_NONE},
- // cosine
- {"cos", 0, 12, 0, 0, 0, OP_NONE},
- // arc tan
- {"arctan", 0, 12, 0, 0, 0, OP_NONE},
- // natural log
- {"ln", 0, 12, 0, 0, 0, OP_NONE},
- // floor function
- {"floor", 0, 11, 0, 0, 0, OP_NONE},
- // ceiling function
- {"ceil", 0, 11, 0, 0, 0, OP_NONE},
- // truncation
- {"truncate", 0, 11, 0, 0, 0, OP_NONE},
- // real abs
- {"rabs", 0, 12, 0, 0, 0, OP_NONE},
- // string concatination
- {"^", 0, 18, 0, 0, 150, OP_INFIXL},
- // string length
- {"size", 0, 16, 0, 0, 0, OP_NONE},
- // chr function
- {"chr", 0, 17, 0, 0, 0, OP_NONE},
- // ord function
- {"string_to_int", 0, 16, 0, 0, 0, OP_NONE},
- // substring
- {"substring", 0, 20, 0, 0, 0, OP_NONE},
- // int to string
- {"int_to_string", 0, 17, 0, 0, 0, OP_NONE},
- // real to string
- {"real_to_string", 0, 13, 0, 0, 0, OP_NONE},
- // for unnamed universal constants (Note: tesize should be 0)
- {"<constant>", 0, 0, 0, 0, 0, OP_NONE},
- // std_in
- {"std_in", 0, 24, 0, 0, 0, OP_NONE},
- // std_out
- {"std_out", 0, 25, 0, 0, 0, OP_NONE},
- // std_err
- {"std_err", 0, 25, 0, 0, 0, OP_NONE},
- // nil
- {"nil", 0, 1, 0, 0, 0, OP_NONE},
- // integer constant
- {"<int_constant>", 0, 3, 0, 0, 0, OP_NONE},
- // real constant
- {"<real_constant>", 0, 4, 0, 0, 0, OP_NONE},
- // string constant
- {"<str_constant>", 0, 5, 0, 0, 0, OP_NONE},
- // cons
- {"::", 0, 2, 0, 0, 140, OP_INFIXR}
-};
-
-PERV_ConstData PERV_getConstData(int index)
-{
- return PERV_constDataTab[index];
-}
-
-void PERV_copyConstDataTab(PERV_ConstData* dst)
-{
- //this way of copy relies on the assumption that the pervasive kind data
- //has the same structure as that of the run-time kind symbol table entries.
- memcpy((void*)dst, (void*)PERV_constDataTab,
- sizeof(PERV_ConstData) * PERV_CONST_NUM);
-}
-
-Boolean PERV_isLogicSymb(int index)
-{
- return ((index >= PERV_LSSTART) && (index <= PERV_LSEND));
-}
-
-Boolean PERV_isPredSymb(int index)
-{
- return ((index >= PERV_PREDSTART) && (index <= PERV_PREDEND));
-}
-
-PERV_LogicSymbTypes PERV_logicSymb(int index)
-{
- return ((PERV_LogicSymbTypes)(index - PERV_LSSTART));
-}
-
-int PERV_predBuiltin(int index)
-{
- return (index - PERV_PREDSTART);
-}
-
-
-#endif //PERVASIVES_C
-
diff --git a/src/runtime/c/teyjus/tables/pervasives.h b/src/runtime/c/teyjus/tables/pervasives.h
deleted file mode 100644
index 48a96964c..000000000
--- a/src/runtime/c/teyjus/tables/pervasives.h
+++ /dev/null
@@ -1,326 +0,0 @@
-/****************************************************************************/
-/* File pervasives.h. */
-/****************************************************************************/
-
-#ifndef PERVASIVES_H
-#define PERVASIVES_H
-
-#include "../simulator/mctypes.h" //to be changed
-#include "../simulator/dataformats.h" //to be changed
-
-
-/****************************************************************************/
-/* PERVASIVE KIND */
-/****************************************************************************/
-//indices for predefined sorts and type constructors
-typedef enum PERV_KindIndexType
-{
- // int
- PERV_INT_INDEX = 0,
- // real
- PERV_REAL_INDEX = 1,
- // bool
- PERV_BOOL_INDEX = 2,
- // string
- PERV_STRING_INDEX = 3,
- // list type constructor
- PERV_LIST_INDEX = 4,
- // in_stream
- PERV_INSTREAM_INDEX = 5,
- // out_stream
- PERV_OUTSTREAM_INDEX = 6
-} PERV_KindIndexType;
-
-//total number of pervasive kinds
-#define PERV_KIND_NUM 7
-
-//pervasive kind data type
-typedef struct
-{
- char *name;
- TwoBytes arity;
-} PERV_KindData;
-
-//pervasive kind data table (array)
-extern PERV_KindData PERV_kindDataTab[PERV_KIND_NUM];
-
-//pervasive kind data access function
-PERV_KindData PERV_getKindData(int index);
-
-//pervasive kind table copy function (used in module space initialization)
-//this functiion relies on the assumption that the pervasive kind data
-//has the same structure as that of the run-time kind symbol table entries.
-void PERV_copyKindDataTab(PERV_KindData* dst);
-
-
-/***************************************************************************/
-/* TYPE SKELETIONS FOR PERVASIVE CONSTANTS */
-/****************************************************************************/
-
-//total number of type skeletons needed for pervasive constants
-#define PERV_TY_SKEL_NUM 42
-
-//pervasive type skel data type
-typedef DF_TypePtr PERV_TySkelData;
-
-//pervasive type skel table (array)
-extern PERV_TySkelData PERV_tySkelTab[PERV_TY_SKEL_NUM];
-
-//pervasive type skeletons and type skeleton table initialization
-//Note that type skeltons have to be dynamically allocated, and so does the
-//info recorded in each entry of the pervasive type skeleton table
-void PERV_tySkelTabInit();
-
-//pervasive tyskel table copy function
-void PERV_copyTySkelTab(PERV_TySkelData* dst);
-
-
-/***************************************************************************/
-/* PERVASIVE CONSTANTS */
-/***************************************************************************/
-
-//indices for predefined constants
-typedef enum PERV_ConstIndexType
-{
- // logical and
- PERV_AND_INDEX = 0,
- // logical or
- PERV_OR_INDEX = 1,
- // existential quantifier
- PERV_SOME_INDEX = 2,
- // universal quantifier
- PERV_ALL_INDEX = 3,
- // true proposition
- PERV_TRUE_INDEX = 4,
- // cut predicate
- PERV_CUT_INDEX = 5,
- // fail predicate
- PERV_FAIL_INDEX = 6,
- // empty
- // another logical and
- PERV_AMPAND_INDEX = 8,
- // halt the system
- PERV_HALT_INDEX = 9,
- // return to top level
- PERV_STOP_INDEX = 10,
- // Prolog if; needed?
- PERV_COLONDASH_INDEX = 11,
- // implication; needed?
- PERV_IMPL_INDEX = 12,
- // empty
- // empty
- // solve; used by code generator
- PERV_SOLVE_INDEX = 15,
- // is
- PERV_IS_INDEX = 16,
- // not
- PERV_NOT_INDEX = 17,
- // equality (unify) predicate
- PERV_EQ_INDEX = 18,
- // less than on integers
- PERV_INTLSS_INDEX = 19,
- // greater than on integers
- PERV_INTGRT_INDEX = 20,
- // less than or eq on integers
- PERV_INTLEQ_INDEX = 21,
- // greater than or eq on integers
- PERV_INTGEQ_INDEX = 22,
- // less than in reals
- PERV_REALLSS_INDEX = 23,
- // greater than on reals
- PERV_REALGRT_INDEX = 24,
- // less than or eq on reals
- PERV_REALLEQ_INDEX = 25,
- // greater than or eq on reals
- PERV_REALGEQ_INDEX = 26,
- // less than on strings
- PERV_STRLSS_INDEX = 27,
- // greater than on strings
- PERV_STRGRT_INDEX = 28,
- // less than or eq on strings
- PERV_STRLEQ_INDEX = 29,
- // greater than or eq on strings
- PERV_STRGEQ_INDEX = 30,
- // open_in
- PERV_OPENIN_INDEX = 31,
- // open_out
- PERV_OPENOUT_INDEX = 32,
- // open_append
- PERV_OPENAPP_INDEX = 33,
- // close_in
- PERV_CLOSEIN_INDEX = 34,
- // close_out
- PERV_CLOSEOUT_INDEX = 35,
- // open_string
- PERV_OPENSTR_INDEX = 36,
- // input
- PERV_INPUT_INDEX = 37,
- // output
- PERV_OUTPUT_INDEX = 38,
- // input_line
- PERV_INPUTLINE_INDEX = 39,
- // lookahead
- PERV_LOOKAHEAD_INDEX = 40,
- // eof
- PERV_EOF_INDEX = 41,
- // flush
- PERV_FLUSH_INDEX = 42,
- // print
- PERV_PRINT_INDEX = 43,
- // read
- PERV_READ_INDEX = 44,
- // printterm
- PERV_PRINTTERM_INDEX = 45,
- // term_to_string
- PERV_TERMTOSTR_INDEX = 46,
- // string_to_term
- PERV_STRTOTERM_INDEX = 47,
- // readterm
- PERV_READTERM_INDEX = 48,
- // getenv predicate; needed?
- PERV_GETENV_INDEX = 49,
- // open_socket predicate
- PERV_OPENSOCKET_INDEX = 50,
- // time predicate
- PERV_TIME_INDEX = 51,
- // system predicate
- PERV_SYSTEM_INDEX = 52,
- // empty
- // empty
- // empty
- // unary minus on integers
- PERV_INTUMINUS_INDEX = 56,
- // addition on integers
- PERV_INTPLUS_INDEX = 57,
- // subtraction on integers
- PERV_INTMINUS_INDEX = 58,
- // mutiplication on integers
- PERV_INTMULT_INDEX = 59,
- // integer division
- PERV_INTDIV_INDEX = 60,
- // modulus
- PERV_MOD_INDEX = 61,
- // coercion to real
- PERV_ITOR_INDEX = 62,
- // integer abs
- PERV_IABS_INDEX = 63,
- // unary minus on real
- PERV_REALUMINUS_INDEX = 64,
- // addition on reals
- PERV_REALPLUS_INDEX = 65,
- // subtraction on reals
- PERV_REALMINUS_INDEX = 66,
- // multiplication on reals
- PERV_REALMULT_INDEX = 67,
- // division
- PERV_REALDIV_INDEX = 68,
- // square root
- PERV_SQRT_INDEX = 69,
- // sine
- PERV_SIN_INDEX = 70,
- // cosine
- PERV_COS_INDEX = 71,
- // arc tan
- PERV_ARCTAN_INDEX = 72,
- // natural log
- PERV_LOG_INDEX = 73,
- // floor function
- PERV_FLOOR_INDEX = 74,
- // ceiling function
- PERV_CEIL_INDEX = 75,
- // truncation
- PERV_TRUNC_INDEX = 76,
- // real abs
- PERV_RABS_INDEX = 77,
- // string concatination
- PERV_SCAT_INDEX = 78,
- // string length
- PERV_SLEN_INDEX = 79,
- // chr function
- PERV_ITOCHR_INDEX = 80,
- // ord function
- PERV_STOI_INDEX = 81,
- // substring
- PERV_SUBSTR_INDEX = 82,
- // int to string
- PERV_ITOSTR_INDEX = 83,
- // real to string
- PERV_RTOS_INDEX = 84,
- // for unnamed universal constants (Note: tesize should be 0)
- PERV_UNIV_INDEX = 85,
- // std_in
- PERV_STDIN_INDEX = 86,
- // std_out
- PERV_STDOUT_INDEX = 87,
- // std_err
- PERV_STDERR_INDEX = 88,
- // nil
- PERV_NIL_INDEX = 89,
- // integer constant
- PERV_INTC_INDEX = 90,
- // real constant
- PERV_REALC_INDEX = 91,
- // string constant
- PERV_STRC_INDEX = 92,
- // cons
- PERV_CONS_INDEX = 93
-} PERV_ConstIndexType;
-
-//total number pervasive constants
-#define PERV_CONST_NUM 94
-
-//pervasive const data type
-typedef struct
-{
- char *name;
- TwoBytes typeEnvSize;
- TwoBytes tskTabIndex; //index to the type skeleton table
- TwoBytes neededness; //neededness (predicate constant)
- TwoBytes univCount;
- int precedence;
- int fixity;
-} PERV_ConstData;
-
-//pervasive const data table (array)
-extern PERV_ConstData PERV_constDataTab[PERV_CONST_NUM];
-
-//pervasive const data access function
-PERV_ConstData PERV_getConstData(int index);
-
-//pervasive const table copy function (used in module space initialization)
-//this functiion relies on the assumption that the pervasive kind data
-//has the same structure as that of the run-time kind symbol table entries.
-void PERV_copyConstDataTab(PERV_ConstData* dst);
-
-#define PERV_LSSTART PERV_AND_INDEX //begin of interpretable symbols
-#define PERV_LSEND PERV_STOP_INDEX //end of interpretable symbols
-
-#define PERV_PREDSTART PERV_SOLVE_INDEX //begin of predicate symbols
-#define PERV_PREDEND PERV_SYSTEM_INDEX //end of predicate symbols
-
-typedef enum PERV_LogicSymbTypes
-{
- PERV_AND = 0,
- PERV_OR = 1,
- PERV_SOME = 2,
- PERV_ALL = 3,
- PERV_L_TRUE = 4,
- PERV_CUT = 5,
- PERV_FAIL = 6,
- PERV_EQ = 7,
- PERV_AMPAND = 8,
- PERV_HALT = 9,
- PERV_STOP = 10,
-} PERV_LogicSymbTypes;
-
-//functions used by the simulator for interpreted goals
-Boolean PERV_isLogicSymb(int index);
-Boolean PERV_isPredSymb(int index);
-
-PERV_LogicSymbTypes PERV_logicSymb(int index);
-
-int PERV_predBuiltin(int index);
-
-
-#endif //PERVASIVES_H
-
diff --git a/src/runtime/c/teyjus/tables/pervinit.c b/src/runtime/c/teyjus/tables/pervinit.c
deleted file mode 100644
index 4e518572f..000000000
--- a/src/runtime/c/teyjus/tables/pervinit.c
+++ /dev/null
@@ -1,152 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//Copyright 2008
-// Andrew Gacek, Steven Holte, Gopalan Nadathur, Xiaochu Qi, Zach Snow
-//////////////////////////////////////////////////////////////////////////////
-// This file is part of Teyjus. //
-// //
-// Teyjus is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// Teyjus is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with Teyjus. If not, see <http://www.gnu.org/licenses/>. //
-//////////////////////////////////////////////////////////////////////////////
-
-/***************************************************************************/
-/* File pervinit.h{c}. */
-/* Functions for setting up the symbol tables of pervasive constants and */
-/* kinds are provided. */
-/***************************************************************************/
-#include <string.h>
-#include <stdio.h>
-
-#include "pervinit.h"
-#include "pervasives.h"
-#include "../system/memory.h"
-#include "../simulator/dataformats.h"
-#include "../simulator/mcstring.h"
-#include "../simulator/mctypes.h"
-
-DF_StrDataPtr PERVINIT_writeName(char* name)
-{
- int length = strlen(name);
- MemPtr rtPtr, mcStr;
-
- rtPtr = (MemPtr)MEM_memExtend(MCSTR_numWords(length) +
- DF_STRDATA_HEAD_SIZE);
- mcStr = rtPtr + DF_STRDATA_HEAD_SIZE;
-
- //create data head
- DF_mkStrDataHead((MemPtr)rtPtr);
- //create the string data
- MCSTR_toString((MCSTR_Str)mcStr, name, length);
- return (DF_StrDataPtr)rtPtr;
-}
-
-/***************************************************************************/
-/* PERVASIVE KINDS */
-/***************************************************************************/
-MEM_KstEnt PERVINIT_kindDataTab[PERV_KIND_NUM];
-
-/* Set up pervasive kind symbol table. */
-/* The kind names are supposed to be written in the current top of system */
-/* memory. */
-static void PERVINIT_kindTabInit()
-{
- int tabInd;
- for (tabInd = 0; tabInd < PERV_KIND_NUM; tabInd++) {
- if (PERV_kindDataTab[tabInd].name)
- PERVINIT_kindDataTab[tabInd].name=
- PERVINIT_writeName(PERV_kindDataTab[tabInd].name);
- else PERVINIT_kindDataTab[tabInd].name = NULL;
-
- PERVINIT_kindDataTab[tabInd].arity=PERV_kindDataTab[tabInd].arity;
- }
-}
-
-/* copy the pervasive kind table into given address */
-void PERVINIT_copyKindDataTab(MEM_KstPtr dst)
-{
- memcpy((void*)dst, (void*)PERVINIT_kindDataTab,
- MEM_KST_ENTRY_SIZE * WORD_SIZE * PERV_KIND_NUM);
-}
-
-/***************************************************************************/
-/* PERVASIVE TYPE SKELETONS */
-/***************************************************************************/
-MEM_TstPtr PERVINIT_tySkelTab;
-
-/* Set up pervasive type skeleton table. */
-static void PERVINIT_tySkelTabInit()
-{
- PERVINIT_tySkelTab = PERV_tySkelTab;
- PERV_tySkelTabInit();
-}
-
-/* copy the pervasive type skeleton table into given address */
-void PERVINIT_copyTySkelTab(PERV_TySkelData* dst)
-{
- memcpy((void*)dst, (void*)PERVINIT_tySkelTab,
- MEM_TST_ENTRY_SIZE * WORD_SIZE * PERV_TY_SKEL_NUM);
-}
-
-/***************************************************************************/
-/* PERVASIVE CONSTANTS */
-/***************************************************************************/
-MEM_CstEnt PERVINIT_constDataTab[PERV_CONST_NUM];
-
-/* Set up pervasive constant symbol table. */
-/* The constant names are supposed to be written in the current top of */
-/* system memory. */
-static void PERVINIT_constTabInit()
-{
- int tabInd;
-
- for (tabInd = 0; tabInd < PERV_CONST_NUM; tabInd++) {
- if (PERV_constDataTab[tabInd].name)
- PERVINIT_constDataTab[tabInd].name =
- PERVINIT_writeName(PERV_constDataTab[tabInd].name);
- else PERVINIT_constDataTab[tabInd].name = NULL;
-
- PERVINIT_constDataTab[tabInd].typeEnvSize =
- PERV_constDataTab[tabInd].typeEnvSize;
- PERVINIT_constDataTab[tabInd].tskTabIndex =
- PERV_constDataTab[tabInd].tskTabIndex;
- PERVINIT_constDataTab[tabInd].neededness =
- PERV_constDataTab[tabInd].neededness;
- PERVINIT_constDataTab[tabInd].univCount =
- PERV_constDataTab[tabInd].univCount;
- PERVINIT_constDataTab[tabInd].precedence =
- PERV_constDataTab[tabInd].precedence;
- PERVINIT_constDataTab[tabInd].fixity =
- PERV_constDataTab[tabInd].fixity;
- }
-}
-
-/* copy the pervsive constant table into given address */
-void PERVINIT_copyConstDataTab(MEM_CstPtr dst)
-{
- memcpy((void*)dst, (void*)PERVINIT_constDataTab,
- MEM_CST_ENTRY_SIZE * WORD_SIZE * PERV_CONST_NUM);
-
-}
-
-/***************************************************************************/
-/* PERVASIVE TABLES INITIALIZATION */
-/* Fill in the actual pervasive tables; create string data needed for names*/
-/* onto the current top of the system memory; create the type skeletons in */
-/* a malloced space. */
-/***************************************************************************/
-void PERVINIT_tableInit()
-{
- PERVINIT_kindTabInit();
- PERVINIT_tySkelTabInit();
- PERVINIT_constTabInit();
-}
-
diff --git a/src/runtime/c/teyjus/tables/pervinit.h b/src/runtime/c/teyjus/tables/pervinit.h
deleted file mode 100644
index 666b88776..000000000
--- a/src/runtime/c/teyjus/tables/pervinit.h
+++ /dev/null
@@ -1,73 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//Copyright 2008
-// Andrew Gacek, Steven Holte, Gopalan Nadathur, Xiaochu Qi, Zach Snow
-//////////////////////////////////////////////////////////////////////////////
-// This file is part of Teyjus. //
-// //
-// Teyjus is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// Teyjus is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with Teyjus. If not, see <http://www.gnu.org/licenses/>. //
-//////////////////////////////////////////////////////////////////////////////
-
-/***************************************************************************/
-/* File pervinit.h{c}. */
-/* Functions for setting up the symbol tables of pervasive constants and */
-/* kinds are provided. */
-/***************************************************************************/
-
-#ifndef PERVINIT_H
-#define PERVINIT_H
-
-#include "../simulator/dataformats.h" //to be modified
-#include "../system/memory.h" //to be modified
-#include "pervasives.h"
-#include "../simulator/mctypes.h"
-
-/***************************************************************************/
-/* PERVASIVE KINDS */
-/***************************************************************************/
-//the actual pervasive kind table get copied during loading
-extern MEM_KstEnt PERVINIT_kindDataTab[PERV_KIND_NUM];
-
-/* copy the pervasive kind table into given address */
-void PERVINIT_copyKindDataTab(MEM_KstPtr dst);
-
-
-/***************************************************************************/
-/* PERVASIVE TYPE SKELETONS */
-/***************************************************************************/
-//pervasive type skeleton table
-extern MEM_TstPtr PERVINIT_tySkelTab;
-
-/* copy the pervasive type skeleton table into given address */
-void PERVINIT_copyTySkelTab(MEM_TstPtr dst);
-
-
-/***************************************************************************/
-/* PERVASIVE CONSTANTS */
-/***************************************************************************/
-//the acutual pervasive constant table get copied during loading
-extern MEM_CstEnt PERVINIT_constDataTab[PERV_CONST_NUM];
-
-/* copy the pervasive constant table into given address */
-void PERVINIT_copyConstDataTab(MEM_CstPtr dst);
-
-
-/***************************************************************************/
-/* PERVASIVE TABLES INITIALIZATION */
-/* Fill in the actual pervasive tables; create string data needed for names*/
-/* onto the current top of the system memory; create the type skeletons in */
-/* a malloced space. */
-/***************************************************************************/
-void PERVINIT_tableInit();
-
-#endif //PERVINIT_H