home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ENTERPRS / CPM / UTILS / S / SMC21SRC.LZH / CC1.C < prev    next >
Text File  |  2000-06-30  |  4KB  |  151 lines

  1.  
  2. /*
  3. ** Small-C Compiler Version 2.1
  4. **
  5. ** Copyright 1982,1983 J. E. Hendrix
  6. **
  7. ** Upgraded from a modified 2.0 by Earl Boebert
  8. **
  9. ** Part 1
  10. */
  11.  
  12. #include stdio.h
  13. #include cc.def
  14.  
  15. /*
  16. ** miscellaneous storage
  17. */
  18. char
  19.  
  20. #ifdef OPTIMIZE
  21.  
  22.   optimize, /* optimize output of staging buffer */
  23.  
  24. #endif /* OPTIMIZE */
  25.  
  26.   alarm,    /* audible alarm on errors? */
  27.   monitor,  /* monitor function headers? */
  28.   pause,    /* pause for operator on errors? */
  29.  
  30. #ifdef DYNAMIC
  31.  
  32.  *stage,    /* output staging buffer */
  33.  *symtab,   /* symbol table */
  34.  *litq,     /* literal pool */
  35.  *macn,     /* macro name buffer */
  36.  *macq,     /* macro string buffer */
  37.  *pline,    /* parsing buffer */
  38.  *mline,    /* macro buffer */
  39.  
  40. #else /* DYNAMIC */
  41.  
  42.   stage[STAGESIZE],
  43.   symtab[SYMTBSZ],
  44.   litq[LITABSZ],
  45.   macn[MACNSIZE],
  46.   macq[MACQSIZE],
  47.   pline[LINESIZE],
  48.   mline[LINESIZE],
  49.   swq[SWTABSZ],
  50.  
  51. #endif /* DYNAMIC */
  52.  
  53.  *line,     /* points to pline or mline */
  54.  *lptr,     /* ptr to either */
  55.  *glbptr,   /* ptrs to next entries */
  56.  *locptr,   /* ptr to next local symbol */
  57.  *stagenext,/* next addr in stage */
  58.  *stagelast,/* last addr in stage */
  59.   quote[2], /* literal string for '"' */
  60.  *cptr,     /* work ptrs to any char buffer */
  61.  *cptr2,
  62.  *cptr3,
  63.   msname[NAMESIZE], /* macro symbol name array */
  64.   ssname[NAMESIZE]; /* static symbol name array */
  65.  
  66. int
  67.  
  68. #ifdef STGOTO
  69.  
  70.   nogo,     /* > 0 disables goto statements */
  71.   noloc,    /* > 0 disables block locals */
  72.  
  73. #endif /* STGOTO */
  74.  
  75. /*
  76. ** the following two definitions are arrays of pointers to functions
  77. ** and should look like this:
  78. **      (*op)()[16],
  79. **      (*op2)()[16],
  80. ** but small-c cheats and declares an array of ints
  81. */
  82.   op[16],   /* function addresses of binary operators */
  83.   op2[16],  /* same for unsigned operators */
  84.   opindex,  /* index to matched operator */
  85.   opsize,   /* size of operator in bytes */
  86.   swactive, /* true inside a switch */
  87.   swdefault,/* default label #, else 0 */
  88.  *swnext,   /* address of next entry */
  89.  *swend,    /* address of last table entry */
  90.  
  91. #ifdef DYNAMIC
  92.  
  93.  *wq,       /* while queue */
  94.  
  95. #else /* DYNAMIC */
  96.  
  97.   wq[WQTABSZ],
  98.  
  99. #endif /* DYNAMIC */
  100.  
  101.   argcs,    /* static argc */
  102.  *argvs,    /* static argv (original version) */
  103.  *wqptr,    /* ptr to next entry */
  104.   litptr,   /* ptr to next entry */
  105.   macptr,   /* macro buffer index */
  106.   pptr,     /* ptr to parsing buffer */
  107.   oper,     /* address of binary operator function */
  108.   ch,       /* current character of line being scanned */
  109.   nch,      /* next character of line being scanned */
  110.   declared, /* # of local bytes declared, else -1 when done */
  111.   iflevel,  /* #if... nest level */
  112.   skiplevel,/* level at which #if... skipping started */
  113.   func1,    /* true for first function */
  114.   nxtlab,   /* next avail label # */
  115.   litlab,   /* label # assigned to literal pool */
  116.   beglab,   /* beginning label -- first function */
  117.   csp,      /* compiler relative stk ptr */
  118.   argstk,   /* function arg sp */
  119.   argtop,
  120.   ncmp,     /* # open compound statements */
  121.   errflag,  /* non-zero after 1st error in statement */
  122.   eof,      /* set non-zero on final input eof */
  123.   input,    /* fd # for input file */
  124.   input2,   /* fd # for "include" file */
  125.   output,   /* fd # for output file */
  126.   files,    /* non-zero if file list specified on cmd line */
  127.   filearg,  /* cur file arg index */
  128.   glbflag,  /* non-zero if internal globals */
  129.   ctext,    /* non-zero to intermix c-source */
  130.   ccode,    /* non-zero while parsing c-code */
  131.             /* zero when passing assembly code */
  132.   listfp,   /* file pointer to list device */
  133.   lastst,   /* last executed statement type */
  134.  *iptr;     /* work ptr to any int buffer */
  135.  
  136. #include cc11.c
  137. #include cc12.c
  138. #include cc13.c
  139.  
  140. #ifndef SEPARATE
  141.  
  142. #include cc21.c
  143. #include cc22.c
  144. #include cc31.c
  145. #include cc32.c
  146. #include cc33.c
  147. #include cc41.c
  148. #include cc42.c
  149.  
  150. #endif /* SEPARATE */
  151.