|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1979 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: */ ! 6: ! 7: #ifndef lint ! 8: char copyright[] = ! 9: "@(#) Copyright (c) 1980 Regents of the University of California.\n\ ! 10: All rights reserved.\n"; ! 11: #endif not lint ! 12: ! 13: #ifndef lint ! 14: static char sccsid[] = "@(#)ey0.c 5.1 (Berkeley) 4/29/85"; ! 15: #endif not lint ! 16: ! 17: #include <stdio.h> ! 18: # define _actsize 2500 ! 19: # define _memsize 3000 ! 20: # define _nstates 700 ! 21: # define _nterms 95 ! 22: # define _nprod 300 ! 23: # define _nnonterm 150 ! 24: # define _tempsize 700 ! 25: # define _cnamsz 3500 ! 26: # define _lsetsize 600 ! 27: # define _wsetsize 400 ! 28: # define _maxlastate 100 ! 29: ! 30: # define _tbitset 6 ! 31: ! 32: int tbitset; /* size of lookahed sets */ ! 33: int nolook = 0; /* flag to suppress lookahead computations */ ! 34: struct looksets { int lset[ _tbitset ]; } ; ! 35: struct item { int *pitem; } ; ! 36: ! 37: /* this file contains the definitions for most externally known data */ ! 38: ! 39: int nstate = 0; /* number of states */ ! 40: struct item *pstate[_nstates]; /* pointers to the descriptions of the states */ ! 41: int apstate[_nstates]; /* index to the actions for the states */ ! 42: int tystate[_nstates]; /* contains type information about the states */ ! 43: int stsize = _nstates; /* maximum number of states, at present */ ! 44: int memsiz = _memsize; /* maximum size for productions and states */ ! 45: int mem0[_memsize] ; /* production storage */ ! 46: int *mem = mem0; ! 47: int amem[_actsize]; /* action table storage */ ! 48: int actsiz = _actsize; /* action table size */ ! 49: int memact = 0; /* next free action table position */ ! 50: int nprod = 1; /* number of productions */ ! 51: int *prdptr[_nprod]; /* pointers to descriptions of productions */ ! 52: int prdlim = _nprod ; /* the maximum number of productions */ ! 53: /* levprd - productions levels to break conflicts */ ! 54: int levprd[_nprod] = {0,0}; ! 55: /* last two bits code associativity: ! 56: 0 = no definition ! 57: 1 = left associative ! 58: 2 = binary ! 59: 3 = right associative ! 60: bit 04 is 1 if the production has an action ! 61: the high 13 bits have the production level ! 62: */ ! 63: int nterms = 0; /* number of terminals */ ! 64: int tlim = _nterms ; /* the maximum number of terminals */ ! 65: /* the ascii representations of the terminals */ ! 66: int extval = 0; /* start of output values */ ! 67: struct sxxx1 {char *name; int value;} trmset[_nterms]; ! 68: char cnames[_cnamsz]; ! 69: int cnamsz = _cnamsz; ! 70: char *cnamp; ! 71: int maxtmp = _tempsize; /* the size of the temp1 array */ ! 72: int temp1[_tempsize]; /* temporary storage, indexed by terms + nterms or states */ ! 73: int temp2[_nnonterm]; /* temporary storage indexed by nonterminals */ ! 74: int trmlev[_nterms]; /* vector with the precedence of the terminals */ ! 75: /* The levels are the same as for levprd, but bit 04 is always 0 */ ! 76: /* the ascii representations of the nonterminals */ ! 77: struct sxxx2 { char *name; } nontrst[_nnonterm]; ! 78: int ntlim = _nnonterm ; /* limit to the number of nonterminals */ ! 79: int indgo[_nstates]; /* index to the stored goto table */ ! 80: int ***pres; /* vector of pointers to the productions yielding each nonterminal */ ! 81: struct looksets **pfirst; /* vector of pointers to first sets for each nonterminal */ ! 82: int *pempty = 0 ; /* table of nonterminals nontrivially deriving e */ ! 83: int nnonter = -1; /* the number of nonterminals */ ! 84: int lastred = 0; /* the number of the last reduction of a state */ ! 85: FILE *ftable; /* y.tab.c file */ ! 86: FILE *foutput; /* y.output file */ ! 87: FILE *cout = stdout; ! 88: int arrndx; /* used in the output of arrays on y.tab.c */ ! 89: int zzcwset = 0; ! 90: int zzpairs = 0; ! 91: int zzgoent = 0; ! 92: int zzgobest = 0; ! 93: int zzacent = 0; ! 94: int zzacsave = 0; ! 95: int zznsave = 0; ! 96: int zzclose = 0; ! 97: int zzsrconf = 0; ! 98: int zzrrconf = 0; ! 99: char *ctokn; ! 100: int lineno = 1; /* current input line number */ ! 101: int peekc = -1; /* look-ahead character */ ! 102: int tstates[ _nterms ]; /* states generated by terminal gotos */ ! 103: int ntstates[ _nnonterm ]; /* states generated by nonterminal gotos */ ! 104: int mstates[ _nstates ]; /* chain of overflows of term/nonterm generation lists */ ! 105: ! 106: struct looksets clset; ! 107: struct looksets lkst [ _lsetsize ]; ! 108: int nlset = 0; /* next lookahead set index */ ! 109: int lsetsz = _lsetsize; /* number of lookahead sets */ ! 110: ! 111: struct wset { int *pitem, flag, ws[_tbitset]; } wsets[ _wsetsize ]; ! 112: int cwset; ! 113: int wssize = _wsetsize; ! 114: int lambdarule = 0; ! 115: ! 116: char stateflags[ _nstates ]; ! 117: unsigned char lookstate[ _nstates ]; ! 118: struct looksets lastate[ _maxlastate ]; ! 119: int maxlastate = _maxlastate; ! 120: int savedlook = 1; ! 121: ! 122: int numbval; /* the value of an input number */ ! 123: int rflag = 0; /* ratfor flag */ ! 124: int oflag = 0; /* optimization flag */ ! 125: ! 126: int ndefout = 3; /* number of defined symbols output */ ! 127: int nerrors = 0; /* number of errors */ ! 128: int fatfl = 1; /* if on, error is fatal */ ! 129: int machine; /* has a number describing the machine */ ! 130:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.