home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / program / language / gofer / Sources / c / cbuiltin < prev    next >
Encoding:
Text File  |  1993-02-12  |  2.3 KB  |  69 lines

  1. /* --------------------------------------------------------------------------
  2.  * cbuiltin.c:  Copyright (c) Mark P Jones 1991-1993.   All rights reserved.
  3.  *              See goferite.h for details and conditions of use etc...
  4.  *              Gofer version 2.28 January 1993
  5.  *
  6.  * Stub module for compiler
  7.  * ------------------------------------------------------------------------*/
  8.  
  9. #define  NEED_MATH
  10. #include "prelude.h"
  11. #include "storage.h"
  12. #include "connect.h"
  13. #include "errors.h"
  14.  
  15. Name nameFatbar, nameFail;        /* primitives reqd for translation */
  16. Name nameIf,     nameSel;
  17. Name nameMinus,  nameDivide;
  18.  
  19. Name nameUndefMem;            /* undefined member primitive       */
  20. Name nameError;                /* error primitive function       */
  21. Name nameBlackHole;            /* for GC-detected black hole       */
  22.  
  23. Name nameAnd,    nameOr;        /* built-in logical connectives       */
  24. Name nameOtherwise;
  25.  
  26. /* --------------------------------------------------------------------------
  27.  * Built-in primitives:
  28.  * ------------------------------------------------------------------------*/
  29.  
  30. #define PRIMITIVES_CODE 0        /* don't need prims code       */
  31. #include "prims.c"
  32.  
  33. /* --------------------------------------------------------------------------
  34.  * Built-in control:
  35.  * ------------------------------------------------------------------------*/
  36.  
  37. Void builtIn(what)
  38. Int what; {
  39.     Int i;
  40.  
  41.     switch (what) {
  42.     case MARK    : for (i=0; i<NUM_CHARS; ++i)
  43.                mark(consCharArray[i]);
  44.                break;
  45.  
  46.     case INSTALL : for (i=0; i<NUM_CHARS; ++i)
  47.                consCharArray[i] = ap(nameCons,mkChar(i));
  48.  
  49. #define pFun(n,s,t)    addPrim(0,n=newName(findText(s)),t,NIL)
  50.                pFun(nameFatbar,       "_FATBAR", "primFatbar");
  51.                pFun(nameFail,       "_FAIL",   "primFail");
  52.                pFun(nameIf,       "_IF",     "primIf");
  53.                pFun(nameSel,       "_SEL",    "primSel");
  54.                pFun(nameMinus,     "_minus",  "primMinusInt");
  55.                pFun(nameDivide,       "_divide", "primDivInt");
  56.                pFun(nameUndefMem,  "_undefined_member", "primUndefMem");
  57. #undef pFun
  58. #define predef(nm,str) nm=newName(findText(str)); name(nm).defn=PREDEFINED
  59.                predef(nameAnd,        "&&");
  60.                predef(nameOr,        "||");
  61.                predef(nameOtherwise,    "otherwise");
  62.                predef(nameError,    "error");
  63. #undef  predef
  64.                break;
  65.     }
  66. }
  67.  
  68. /*-------------------------------------------------------------------------*/
  69.