summaryrefslogtreecommitdiff
path: root/src/runtime/c/teyjus/tables/pervasives.c
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/pervasives.c
parenta8eaa2f2e560547e63c7976960435e1ae23a22b1 (diff)
remove the teyjus and utils folders
Diffstat (limited to 'src/runtime/c/teyjus/tables/pervasives.c')
-rw-r--r--src/runtime/c/teyjus/tables/pervasives.c810
1 files changed, 0 insertions, 810 deletions
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
-