/* manifest constant file for the lex/yacc interface */
/* special interfaces for yacc alone */
/* These serve as abbreviations of 2 or more ops:
/* reserved words, etc */
/* little symbols, etc. */
/* left over tree building operators */
/* some conversion operators */
/* special node operators, used for special contexts */
/* DSIZE is the size of the dope array */
/* type names, used in symbol table building */
# define TNULL PTR /* pointer to UNDEF */
/* type packing constants */
# define MODTYPE(x,y) x = (x&(~BTMASK))|y /* set basic type of x to y */
# define BTYPE(x) (x&BTMASK) /* basic type of x */
# define ISUNSIGNED(x) ((x)<=ULONG&&(x)>=UCHAR)
# define UNSIGNABLE(x) ((x)<=LONG&&(x)>=CHAR)
# define ENUNSIGN(x) ((x)+(UNSIGNED-INT))
# define DEUNSIGN(x) ((x)+(INT-UNSIGNED))
# define ISPTR(x) ((x&TMASK)==PTR)
# define ISFTN(x) ((x&TMASK)==FTN) /* is x a function type */
# define ISARY(x) ((x&TMASK)==ARY) /* is x an array type */
# define INCREF(x) (((x&~BTMASK)<<TSHIFT)|PTR|(x&BTMASK))
# define DECREF(x) (((x>>TSHIFT)&~BTMASK)|(x&BTMASK))
# define SETOFF(x,y) if( x%y != 0 ) x = ( (x/y + 1) * y)
/* advance x to a multiple of y */
# define NOFIT(x,y,z) ( (x%z + y) > z )
/* can y bits be added to x without overflowing z */
/* pack and unpack field descriptors (size and offset) */
# define PKFIELD(s,o) ((o<<6)|s)
# define UPKFSZ(v) (v&077)
# define UPKFOFF(v) (v>>6)
/* operator information */
#define optype(o) (dope[o]&TYFLG)
#define asgop(o) (dope[o]&ASGFLG)
#define logop(o) (dope[o]&LOGFLG)
#define callop(o) (dope[o]&CALLFLG)
# define BCSZ 200 /* size of the table to save break and continue labels */
# define SYMTSZ 1300 /* size of the symbol table(originally 450) */
# define DIMTABSZ 1500 /* size of the dimension/size table (was 750) */
# define PARAMSZ 200 /* size of the parameter stack */
# define TREESZ 700 /* space for building parse tree */
# define SWITSZ 500 /* size of switch table */
# define NCHNAM 8 /* number of characters in a name */
/* common defined variables */
extern int nerrors; /* number of errors seen so far */
typedef unsigned int TWORD;
extern NODE *NIL; /* a pointer which will always have 0 in it */
extern int dope[]; /* a vector containing operator information */
extern char *opst[]; /* a vector containing names for ops */
/* in one-pass operation, define the tree nodes */
int label; /* for use with branching */
int stsize; /* sizes of structure objects */
int stalign; /* alignment of structure objects */
/* this structure is used when a floating point constant