⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dextern

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻
字号:
/* * @(#)dextern	4.2	(Berkeley)	3/21/86 */# include <stdio.h># include <ctype.h># include "files"	/*  MANIFEST CONSTANT DEFINITIONS */	/* base of nonterminal internal numbers */# define NTBASE 010000	/* internal codes for error and accept actions */# define ERRCODE  8190# define ACCEPTCODE 8191	/* sizes and limits */# ifdef HUGE# define ACTSIZE 12000# define MEMSIZE 24000# define NSTATES 1000# define NTERMS 300# define NPROD 600# define NNONTERM 300# define TEMPSIZE 1200# define CNAMSZ 5000# define LSETSIZE 600# define WSETSIZE 350# endif# ifdef MEDIUM# define ACTSIZE 4000# define MEMSIZE 5200# define NSTATES 600# define NTERMS 127# define NPROD 400# define NNONTERM 200# define TEMPSIZE 800# define CNAMSZ 4000# define LSETSIZE 450# define WSETSIZE 250# endif# define NAMESIZE 50# define NTYPES 63# ifdef WORD32# define TBITSET ((32+NTERMS)/32)	/* 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# define TBITSET ((16+NTERMS)/16)	/* 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# define REDFLAG 010	/* output parser flags */# define YYFLAG1 (-1000)	/* macros for getting associativity and precedence levels */# define ASSOC(i) ((i)&03)# define PLEVEL(i) (((i)>>4)&077)# define TYPE(i)  ((i>>10)&077)	/* macros for setting associativity and precedence levels */# define SETASC(i,j) i|=j# define SETPLEV(i,j) i |= (j<<4)# define SETTYPE(i,j) i |= (j<<10)	/* 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<nprod;++i)# define SLOOP(i) for(i=0;i<nstate;++i)# define WSBUMP(x) ++x# define WSLOOP(s,j) for(j=s;j<cwp;++j)# define ITMLOOP(i,p,q) q=pstate[i+1];for(p=pstate[i];p<q;++p)# define SETLOOP(i) for(i=0;i<tbitset;++i)	/* I/O descriptors */extern FILE * finput;		/* input file */extern FILE * faction;		/* file for saving actions */extern FILE *fdefine;		/* file for # defines */extern FILE * ftable;		/* y.tab.c file */extern FILE * ftemp;		/* tempfile to pass 2 */extern FILE * foutput;		/* y.output file */	/* structure declarations */struct looksets {	int lset[TBITSET];	};struct item {	int *pitem;	struct looksets *look;	};struct toksymb {	char *name;	int value;	};struct ntsymb {	char *name;	int tvalue;	};struct wset {	int *pitem;	int flag;	struct looksets ws;	};	/* token information */extern int ntokens ;	/* number of tokens */extern struct toksymb tokset[];extern int toklev[];	/* vector with the precedence of the terminals */	/* nonterminal information */extern int nnonter ;	/* the number of nonterminals */extern struct ntsymb nontrst[];	/* grammar rule information */extern int nprod ;	/* number of productions */extern int *prdptr[];	/* pointers to descriptions of productions */extern int levprd[] ;	/* contains production levels to break conflicts */	/* state information */extern int nstate ;		/* number of states */extern struct item *pstate[];	/* pointers to the descriptions of the states */extern int tystate[];	/* contains type information about the states */extern int defact[];	/* the default action of the state */extern int tstates[];	/* the states deriving each token */extern int ntstates[];	/* the states deriving each nonterminal */extern int mstates[];	/* the continuation of the chains begun in tstates and ntstates */	/* lookahead set information */extern struct looksets lkst[];extern int nolook;  /* flag to turn off lookahead computations */	/* working set information */extern struct wset wsets[];extern struct wset *cwp;	/* storage for productions */extern int mem0[];extern int *mem;	/* storage for action table */extern int amem[];  /* action table storage */extern int *memp ;		/* next free action table position */extern int indgo[];		/* index to the stored goto table */	/* temporary vector, indexable by states, terms, or ntokens */extern int temp1[];extern int lineno; /* current line number */	/* statistics collection variables */extern int zzgoent ;extern int zzgobest ;extern int zzacent ;extern int zzexcp ;extern int zzclose ;extern int zzrrconf ;extern int zzsrconf ;	/* define functions with strange types... */extern char *cstash();extern struct looksets *flset();extern char *symnam();extern char *writem();	/* default settings for a number of macros */	/* name of yacc tempfiles */# ifndef TEMPNAME# define TEMPNAME "yacc.tmp"# endif# ifndef ACTNAME# define ACTNAME "yacc.acts"# endif	/* output file name */# ifndef OFILE# define OFILE "y.tab.c"# endif	/* user output file name */# ifndef FILEU# define FILEU "y.output"# endif	/* output file for # defines */# ifndef FILED# define FILED "y.tab.h"# endif	/* command to clobber tempfiles after use */# ifndef ZAPFILE# define ZAPFILE(x) unlink(x)# endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -