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 >
Wrap
Text File
|
2000-06-30
|
4KB
|
151 lines
/*
** Small-C Compiler Version 2.1
**
** Copyright 1982,1983 J. E. Hendrix
**
** Upgraded from a modified 2.0 by Earl Boebert
**
** Part 1
*/
#include stdio.h
#include cc.def
/*
** miscellaneous storage
*/
char
#ifdef OPTIMIZE
optimize, /* optimize output of staging buffer */
#endif /* OPTIMIZE */
alarm, /* audible alarm on errors? */
monitor, /* monitor function headers? */
pause, /* pause for operator on errors? */
#ifdef DYNAMIC
*stage, /* output staging buffer */
*symtab, /* symbol table */
*litq, /* literal pool */
*macn, /* macro name buffer */
*macq, /* macro string buffer */
*pline, /* parsing buffer */
*mline, /* macro buffer */
#else /* DYNAMIC */
stage[STAGESIZE],
symtab[SYMTBSZ],
litq[LITABSZ],
macn[MACNSIZE],
macq[MACQSIZE],
pline[LINESIZE],
mline[LINESIZE],
swq[SWTABSZ],
#endif /* DYNAMIC */
*line, /* points to pline or mline */
*lptr, /* ptr to either */
*glbptr, /* ptrs to next entries */
*locptr, /* ptr to next local symbol */
*stagenext,/* next addr in stage */
*stagelast,/* last addr in stage */
quote[2], /* literal string for '"' */
*cptr, /* work ptrs to any char buffer */
*cptr2,
*cptr3,
msname[NAMESIZE], /* macro symbol name array */
ssname[NAMESIZE]; /* static symbol name array */
int
#ifdef STGOTO
nogo, /* > 0 disables goto statements */
noloc, /* > 0 disables block locals */
#endif /* STGOTO */
/*
** the following two definitions are arrays of pointers to functions
** and should look like this:
** (*op)()[16],
** (*op2)()[16],
** but small-c cheats and declares an array of ints
*/
op[16], /* function addresses of binary operators */
op2[16], /* same for unsigned operators */
opindex, /* index to matched operator */
opsize, /* size of operator in bytes */
swactive, /* true inside a switch */
swdefault,/* default label #, else 0 */
*swnext, /* address of next entry */
*swend, /* address of last table entry */
#ifdef DYNAMIC
*wq, /* while queue */
#else /* DYNAMIC */
wq[WQTABSZ],
#endif /* DYNAMIC */
argcs, /* static argc */
*argvs, /* static argv (original version) */
*wqptr, /* ptr to next entry */
litptr, /* ptr to next entry */
macptr, /* macro buffer index */
pptr, /* ptr to parsing buffer */
oper, /* address of binary operator function */
ch, /* current character of line being scanned */
nch, /* next character of line being scanned */
declared, /* # of local bytes declared, else -1 when done */
iflevel, /* #if... nest level */
skiplevel,/* level at which #if... skipping started */
func1, /* true for first function */
nxtlab, /* next avail label # */
litlab, /* label # assigned to literal pool */
beglab, /* beginning label -- first function */
csp, /* compiler relative stk ptr */
argstk, /* function arg sp */
argtop,
ncmp, /* # open compound statements */
errflag, /* non-zero after 1st error in statement */
eof, /* set non-zero on final input eof */
input, /* fd # for input file */
input2, /* fd # for "include" file */
output, /* fd # for output file */
files, /* non-zero if file list specified on cmd line */
filearg, /* cur file arg index */
glbflag, /* non-zero if internal globals */
ctext, /* non-zero to intermix c-source */
ccode, /* non-zero while parsing c-code */
/* zero when passing assembly code */
listfp, /* file pointer to list device */
lastst, /* last executed statement type */
*iptr; /* work ptr to any int buffer */
#include cc11.c
#include cc12.c
#include cc13.c
#ifndef SEPARATE
#include cc21.c
#include cc22.c
#include cc31.c
#include cc32.c
#include cc33.c
#include cc41.c
#include cc42.c
#endif /* SEPARATE */