[comp.sys.mac] Diffs to compile yacc under MPW C

neil@beowulf.UUCP (04/06/87)

What follows are diffs to get yacc (4.3BSD distribution) running under MPW C.
The changes are all due to the fact that MPW C only allows 64K of globals.
Most static arrays are now dynamically allocated.

*** dextern	Wed Apr  1 10:54:29 1987
--- yacc/dextern	Mon Apr  6 12:43:59 1987
***************
*** 159,166
  	/* token information */
  
  extern int ntokens ;	/* number of tokens */
! extern struct toksymb *tokset;
! extern int *toklev;	/* vector with the precedence of the terminals */
  
  	/* nonterminal information */
  

--- 159,166 -----
  	/* token information */
  
  extern int ntokens ;	/* number of tokens */
! extern struct toksymb tokset[];
! extern int toklev[];	/* vector with the precedence of the terminals */
  
  	/* nonterminal information */
  
***************
*** 170,177
  	/* 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 */
  

--- 170,177 -----
  	/* 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 */
  
***************
*** 176,187
  	/* 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 */
  

--- 176,187 -----
  	/* 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 */
  
***************
*** 185,191
  
  	/* lookahead set information */
  
! extern struct looksets *lkst;
  extern int nolook;  /* flag to turn off lookahead computations */
  
  	/* working set information */

--- 185,191 -----
  
  	/* lookahead set information */
  
! extern struct looksets lkst[];
  extern int nolook;  /* flag to turn off lookahead computations */
  
  	/* working set information */
***************
*** 190,196
  
  	/* working set information */
  
! extern struct wset *wsets;
  extern struct wset *cwp;
  extern int	*ggreed;
  extern int	*pgo;

--- 190,196 -----
  
  	/* working set information */
  
! extern struct wset wsets[];
  extern struct wset *cwp;
  
  	/* storage for productions */
***************
*** 192,200
  
  extern struct wset *wsets;
  extern struct wset *cwp;
- extern int	*ggreed;
- extern int	*pgo;
- extern int	*yypgo;
  
  	/* storage for productions */
  

--- 192,197 -----
  
  extern struct wset wsets[];
  extern struct wset *cwp;
  
  	/* storage for productions */
  
***************
*** 198,204
  
  	/* storage for productions */
  
! extern int *mem0;
  extern int *mem;
  
  	/* storage for action table */

--- 195,201 -----
  
  	/* storage for productions */
  
! extern int mem0[];
  extern int *mem;
  
  	/* storage for action table */
***************
*** 203,209
  
  	/* 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 */
  

--- 200,206 -----
  
  	/* 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 */
  
***************
*** 205,211
  
  extern int *amem;  /* action table storage */
  extern int *memp ;		/* next free action table position */
! extern int *indgo;		/* index to the stored goto table */
  
  
  extern int	*pmem;

--- 202,208 -----
  
  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 */
  
***************
*** 207,215
  extern int *memp ;		/* next free action table position */
  extern int *indgo;		/* index to the stored goto table */
  
- 
- extern int	*pmem;
- 
  	/* temporary vector, indexable by states, terms, or ntokens */
  
  extern int *temp1;

--- 204,209 -----
  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[];
***************
*** 212,218
  
  	/* temporary vector, indexable by states, terms, or ntokens */
  
! extern int *temp1;
  extern int lineno; /* current line number */
  
  	/* statistics collection variables */

--- 206,212 -----
  
  	/* temporary vector, indexable by states, terms, or ntokens */
  
! extern int temp1[];
  extern int lineno; /* current line number */
  
  	/* statistics collection variables */
*** y1.c	Wed Apr  1 10:23:07 1987
--- yacc/y1.c	Mon Apr  6 12:44:00 1987
***************
*** 9,15
  	/* lookahead computations */
  
  int tbitset;  /* size of lookahead sets */
! struct looksets *lkst;
  int nlset = 0; /* next lookahead set index */
  int nolook = 0; /* flag to suppress lookahead computations */
  struct looksets clset;  /* temporary storage for lookahead computations */

--- 9,15 -----
  	/* lookahead computations */
  
  int tbitset;  /* size of lookahead sets */
! struct looksets lkst [ LSETSIZE ];
  int nlset = 0; /* next lookahead set index */
  int nolook = 0; /* flag to suppress lookahead computations */
  struct looksets clset;  /* temporary storage for lookahead computations */
***************
*** 16,22
  
  	/* working set computations */
  
! struct wset *wsets;
  struct wset *cwp;
  
  	/* state information */

--- 16,22 -----
  
  	/* working set computations */
  
! struct wset wsets[ WSETSIZE ];
  struct wset *cwp;
  
  	/* state information */
***************
*** 22,33
  	/* state information */
  
  int nstate = 0;		/* number of states */
! struct item **pstate;	/* pointers to the descriptions of the states */
! int *tystate;	/* contains type information about the states */
! int *indgo;		/* index to the stored goto table */
! int *tstates; /* states generated by terminal gotos */
! int *ntstates; /* states generated by nonterminal gotos */
! int *mstates; /* chain of overflows of term/nonterm generation lists  */
  
  	/* storage for the actions in the parser */
  

--- 22,33 -----
  	/* state information */
  
  int nstate = 0;		/* number of states */
! struct item *pstate[NSTATES+2];	/* pointers to the descriptions of the states */
! int tystate[NSTATES];	/* contains type information about the states */
! int indgo[NSTATES];		/* index to the stored goto table */
! int tstates[ NTERMS ]; /* states generated by terminal gotos */
! int ntstates[ NNONTERM ]; /* states generated by nonterminal gotos */
! int mstates[ NSTATES ]; /* chain of overflows of term/nonterm generation lists  */
  
  	/* storage for the actions in the parser */
  
***************
*** 31,38
  
  	/* storage for the actions in the parser */
  
! int *amem;	/* action table storage */
! int *memp;	/* next free action table position */
  
  	/* other storage areas */
  

--- 31,38 -----
  
  	/* storage for the actions in the parser */
  
! int amem[ACTSIZE];	/* action table storage */
! int *memp = amem;	/* next free action table position */
  
  	/* other storage areas */
  
***************
*** 36,42
  
  	/* other storage areas */
  
! int *temp1; /* temporary storage, indexed by terms + ntokens or states */
  int lineno= 1; /* current input line number */
  int fatfl = 1;  	/* if on, error is fatal */
  int nerrors = 0;	/* number of errors */

--- 36,42 -----
  
  	/* other storage areas */
  
! int temp1[TEMPSIZE]; /* temporary storage, indexed by terms + ntokens or states */
  int lineno= 1; /* current input line number */
  int fatfl = 1;  	/* if on, error is fatal */
  int nerrors = 0;	/* number of errors */
***************
*** 43,51
  
  	/* storage for information about the nonterminals */
  
! int ***pres;  /* vector of pointers to productions yielding each nonterminal */
! struct looksets **pfirst;  /* vector of pointers to first sets for each nonterminal */
! int *pempty;  /* vector of nonterminals nontrivially deriving e */
  
  main(argc,argv) int argc; char *argv[]; {
  

--- 43,51 -----
  
  	/* storage for information about the nonterminals */
  
! int **pres[NNONTERM+2];  /* vector of pointers to productions yielding each nonterminal */
! struct looksets *pfirst[NNONTERM+2];  /* vector of pointers to first sets for each nonterminal */
! int pempty[NNONTERM+1];  /* vector of nonterminals nontrivially deriving e */
  
  main(argc,argv) int argc; char *argv[]; {
  
***************
*** 49,59
  
  main(argc,argv) int argc; char *argv[]; {
  
- 	/*XXX */
- 	void	make_arrays();
- 	
- 	make_arrays();
- 	/*XXX*/
  	setup(argc,argv); /* initialize and read productions */
  	tbitset = NWORDS(ntokens);
  	cpres(); /* make table of which productions yield a given nonterminal */

--- 49,54 -----
  
  main(argc,argv) int argc; char *argv[]; {
  
  	setup(argc,argv); /* initialize and read productions */
  	tbitset = NWORDS(ntokens);
  	cpres(); /* make table of which productions yield a given nonterminal */
***************
*** 157,163
  	return( cp );
  	}
  
! struct wset *zzcwp;
  int zzgoent = 0;
  int zzgobest = 0;
  int zzacent = 0;

--- 152,158 -----
  	return( cp );
  	}
  
! struct wset *zzcwp = wsets;
  int zzgoent = 0;
  int zzgobest = 0;
  int zzacent = 0;
***************
*** 164,170
  int zzexcp = 0;
  int zzclose = 0;
  int zzsrconf = 0;
! int * zzmemsz;
  int zzrrconf = 0;
  
  summary(){ /* output the summary on the tty */

--- 159,165 -----
  int zzexcp = 0;
  int zzclose = 0;
  int zzsrconf = 0;
! int * zzmemsz = mem0;
  int zzrrconf = 0;
  
  summary(){ /* output the summary on the tty */
***************
*** 660,699
  		}
  	return( q );
  	}
- 	
- void
- make_arrays()
- {
- 	lkst = (struct looksets *) malloc(sizeof(struct looksets)*LSETSIZE);
- 	wsets = (struct wset *) malloc(sizeof(struct wset)*WSETSIZE);
- 	zzcwp = wsets;
- 	pstate = (struct item **) malloc(sizeof(struct item *)*(NSTATES+2));
- 	tystate = (int *) malloc(sizeof(int)*NSTATES);
- 	indgo = (int *) malloc(sizeof(int)*NSTATES);
- 	tstates = (int *) malloc(sizeof(int)*NSTATES);
- 	ntstates = (int *) malloc(sizeof(int)*NNONTERM);
- 	mstates = (int *) malloc(sizeof(int)*NSTATES);
- 	amem = (int *) malloc(sizeof(int)*ACTSIZE);
- 	memp = amem;
- 	temp1 = (int *) malloc(sizeof(int)*TEMPSIZE);
- 	pres = (int ***) malloc(sizeof(int **)*(NNONTERM+2));
- 	pfirst = (struct looksets **)
- 	    malloc(sizeof(struct looksets *)*(NNONTERM+2));
- 	pempty = (int *) malloc(sizeof(int)*(NNONTERM+1));
- 	defact = (int *) malloc(sizeof(int)*NSTATES);
- 	mem0 = (int *) malloc(sizeof(int)*MEMSIZE);
- 	mem = mem0;
- 	pmem = mem;
- 	zzmemsz = mem0;
- 	prdptr = (int **) malloc(sizeof(int *)*NPROD);
- 	levprd = (int *) malloc(sizeof(int)*NPROD);
- 
- 	tokset = (struct toksymb *) malloc(sizeof(struct toksymb)*NTERMS);
- 	toklev = (int *) malloc(sizeof(int)*NTERMS);
- /*	nontrst = (struct ntsymb *) malloc(sizeof(struct ntymsb)*NNONTERM);
- */
- 	ggreed = lkst[0].lset;
- 	pgo = wsets[0].ws.lset;
- 	yypgo = &nontrst[0].tvalue;
- }
- 

--- 655,657 -----
  		}
  	return( q );
  	}
*** y2.c	Wed Apr  1 22:35:39 1987
--- yacc/y2.c	Mon Apr  6 12:44:02 1987
***************
*** 39,46
  	/* symbol tables for tokens and nonterminals */
  
  int ntokens = 0;
! struct toksymb *tokset;
! int *toklev;
  int nnonter = -1;
  struct ntsymb nontrst[NNONTERM];
  int start;	/* start symbol */

--- 39,46 -----
  	/* symbol tables for tokens and nonterminals */
  
  int ntokens = 0;
! struct toksymb tokset[NTERMS];
! int toklev[NTERMS];
  int nnonter = -1;
  struct ntsymb nontrst[NNONTERM];
  int start;	/* start symbol */
***************
*** 59,66
  
  	/* storage for grammar rules */
  
! int *mem0 ; /* production storage */
! int *mem;
  int nprod= 1;	/* number of productions */
  int **prdptr;	/* pointers to descriptions of productions */
  int *levprd ;	/* precedence levels for the productions */

--- 59,66 -----
  
  	/* storage for grammar rules */
  
! int mem0[MEMSIZE] ; /* production storage */
! int *mem = mem0;
  int nprod= 1;	/* number of productions */
  int *prdptr[NPROD];	/* pointers to descriptions of productions */
  int levprd[NPROD] ;	/* precedence levels for the productions */
***************
*** 62,69
  int *mem0 ; /* production storage */
  int *mem;
  int nprod= 1;	/* number of productions */
! int **prdptr;	/* pointers to descriptions of productions */
! int *levprd ;	/* precedence levels for the productions */
  
  
  setup(argc,argv) int argc; char *argv[];

--- 62,69 -----
  int mem0[MEMSIZE] ; /* production storage */
  int *mem = mem0;
  int nprod= 1;	/* number of productions */
! int *prdptr[NPROD];	/* pointers to descriptions of productions */
! int levprd[NPROD] ;	/* precedence levels for the productions */
  
  
  setup(argc,argv) int argc; char *argv[];
*** y3.c	Wed Apr  1 22:42:02 1987
--- yacc/y3.c	Mon Apr  6 12:44:02 1987
***************
*** 6,12
  
  	/* important local variables */
  int lastred;  /* the number of the last reduction of a state */
! int *defact;  /* the default actions of states */
  
  output(){ /* print the output for the states */
  

--- 6,12 -----
  
  	/* important local variables */
  int lastred;  /* the number of the last reduction of a state */
! int defact[NSTATES];  /* the default actions of states */
  
  output(){ /* print the output for the states */
  
***************
*** 405,407
  		levprd[i] = *prdptr[i] - NTBASE;
  		}
  	if( j ) fprintf( stdout, "%d rules never reduced\n", j );

--- 405,408 -----
  		levprd[i] = *prdptr[i] - NTBASE;
  		}
  	if( j ) fprintf( stdout, "%d rules never reduced\n", j );
+ 	}
*** y4.c	Wed Apr  1 22:47:23 1987
--- yacc/y4.c	Mon Apr  6 12:44:03 1987
***************
*** 10,18
  # define yypact temp1
  # define greed tystate
  
! int * ggreed;
! int * pgo;
! int *yypgo;
  
  int maxspr = 0;  /* maximum spread of any entry */
  int maxoff = 0;  /* maximum offset into a array */

--- 10,18 -----
  # define yypact temp1
  # define greed tystate
  
! int * ggreed = lkst[0].lset;
! int * pgo = wsets[0].ws.lset;
! int *yypgo = &nontrst[0].tvalue;
  
  int maxspr = 0;  /* maximum spread of any entry */
  int maxoff = 0;  /* maximum offset into a array */
***************
*** 16,22
  
  int maxspr = 0;  /* maximum spread of any entry */
  int maxoff = 0;  /* maximum offset into a array */
! int *pmem;
  int *maxa;
  # define NOMORE -1000
  

--- 16,22 -----
  
  int maxspr = 0;  /* maximum spread of any entry */
  int maxoff = 0;  /* maximum offset into a array */
! int *pmem = mem;
  int *maxa;
  # define NOMORE -1000
  
Neil Rhodes

UC San Diego
neil@ucsd

{ucbvax,decvax}!sdcsvax!neil

chuq@plaid.UUCP (04/07/87)

In article <2960@sdcsvax.UCSD.EDU> neil@beowulf.ucsd.edu (Neil Rhodes) writes:
>What follows are diffs to get yacc (4.3BSD distribution) running under MPW C.

I hate to rain on people's parades, but I thought I would remind folks that
yacc is proprietary to AT&T, and to take the 4.3 version of yacc and run it
legally on your Mac, you need to license your Mac for Berkeley Unix, which
implies getting a Unix Source License from AT&T.  Much as I'd love to have
Yacc on my mac, that's a rather expensive piece of software.

chuq
Chuq Von Rospach	chuq@sun.COM		[I don't read flames]

There is no statute of limitations on stupidity