Annotation of 43BSD/ucb/pascal/eyacc/ey0.c, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.