/* #ident "@(#)yacc:dextern 1.6" */ #ident "$Header: /proj/irix6.5.7m/isms/eoe/cmd/yacc/RCS/dextern,v 1.15 1996/03/19 23:39:36 danc Exp $" # include # include # include # include # include # include # include # include # include # include # include # include # include # include /* MANIFEST CONSTANT DEFINITIONS */ #if u3b || u3b15 || u3b2 || vax || uts || mips # define WORD32 #endif /* base of nonterminal internal numbers */ # define NTBASE (10000000) /* internal codes for error and accept actions */ # define ERRCODE 8190 # define ACCEPTCODE 8191 /* sizes and limits */ # define ACTSIZE 24000 # define MEMSIZE 48000 # define PSTSIZE 4096 # define NSTATES 1500 # define NTERMS 600 # define NPROD 1200 # define NNONTERM 2000 # define TEMPSIZE 5200 # define CNAMSZ 6250 # define LSETSIZE 2400 # define WSETSIZE 2000 # define NAMESIZE 50 # define NTYPES 127 #ifdef WORD32 /* bit packing macros (may be machine dependent) */ # define BIT(a,i) ((a)[(i)>>5] & (1<<((i)&037))) # define SETBIT(a,i) ((a)[(i)>>5] |= (1<<((i)&037))) /* number of words needed to hold n+1 bits */ # define NWORDS(n) (((n)+32)/32) #else /* bit packing macros (may be machine dependent) */ # define BIT(a,i) ((a)[(i)>>4] & (1<<((i)&017))) # define SETBIT(a,i) ((a)[(i)>>4] |= (1<<((i)&017))) /* number of words needed to hold n+1 bits */ # define NWORDS(n) (((n)+16)/16) #endif /* relationships which must hold: TBITSET ints must hold NTERMS+1 bits... WSETSIZE >= NNONTERM LSETSIZE >= NNONTERM TEMPSIZE >= NTERMS + NNONTERMs + 1 TEMPSIZE >= NSTATES */ /* associativities */ # define NOASC 0 /* no assoc. */ # define LASC 1 /* left assoc. */ # define RASC 2 /* right assoc. */ # define BASC 3 /* binary assoc. */ /* flags for state generation */ # define DONE 0 # define MUSTDO 1 # define MUSTLOOKAHEAD 2 /* flags for a rule having an action, and being reduced */ # define ACTFLAG 04 /* output parser flags */ # define YYFLAG1 (-10000000) /* bit field descriptions of toklev and levprd entries */ typedef struct toklev_s { unsigned int :15; unsigned int type :7; /* must match bit size of NTYPES */ unsigned int plev :6; unsigned int red :1; unsigned int assoc :3; } TOKLEV; /* macros for getting associativity and precedence levels */ #define ASSOC(i) ((TOKLEV*)(&i))->assoc #define PLEVEL(i) ((TOKLEV*)(&i))->plev #define TYPE(i) ((TOKLEV*)(&i))->type #define REDBIT(i) ((TOKLEV*)(&i))->red /* macros for setting associativity and precedence levels */ #define SETASC(i,j) (((TOKLEV*)(&i))->assoc |= (j)) #define SETPLEV(i,j) (((TOKLEV*)(&i))->plev |= (j)) #define SETTYPE(i,j) (((TOKLEV*)(&i))->type |= (j)) #define SETRED(i,j) (((TOKLEV*)(&i))->red |= (j)) /* looping macros */ # define TLOOP(i) for(i=1;i<=ntokens;++i) # define NTLOOP(i) for(i=0;i<=nnonter;++i) # define PLOOP(s,i) for(i=s;i