diff options
| author | krasimir <krasimir@chalmers.se> | 2017-04-12 10:31:01 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2017-04-12 10:31:01 +0000 |
| commit | 456f0a5733a3b688ebd3f5b3db35f60400ca7abe (patch) | |
| tree | 7b6a931a099ffe31402bc59690263bf34374e4c3 /src/runtime/c/teyjus/tables/pervasives.c | |
| parent | a8eaa2f2e560547e63c7976960435e1ae23a22b1 (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.c | 810 |
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 - |
