int tbitset
; /* size of lookahed sets */
int nolook
0; /* flag to suppress lookahead computations */
struct looksets
{ int lset
[ _tbitset
]; } ;
struct item
{ int *pitem
; } ;
/* this file contains the definitions for most externally known data */
int nstate
0; /* number of states */
struct item
*pstate
[_nstates
]; /* pointers to the descriptions of the states */
int apstate
[_nstates
]; /* index to the actions for the states */
int tystate
[_nstates
]; /* contains type information about the states */
int stsize _nstates
; /* maximum number of states, at present */
int memsiz _memsize
; /* maximum size for productions and states */
int mem0
[_memsize
] ; /* production storage */
int amem
[_actsize
]; /* action table storage */
int actsiz _actsize
; /* action table size */
int memact
0; /* next free action table position */
int nprod
1; /* number of productions */
int *prdptr
[_nprod
]; /* pointers to descriptions of productions */
int prdlim _nprod
; /* the maximum number of productions */
/* levprd - productions levels to break conflicts */
int levprd
[_nprod
] {0,0};
/* last two bits code associativity:
bit 04 is 1 if the production has an action
the high 13 bits have the production level
int nterms
0; /* number of terminals */
int tlim _nterms
; /* the maximum number of terminals */
/* the ascii representations of the terminals */
int extval
0; /* start of output values */
struct sxxx1
{char *name
; int value
;} trmset
[_nterms
];
int maxtmp _tempsize
; /* the size of the temp1 array */
int temp1
[_tempsize
]; /* temporary storage, indexed by terms + nterms or states */
int temp2
[_nnonterm
]; /* temporary storage indexed by nonterminals */
int trmlev
[_nterms
]; /* vector with the precedence of the terminals */
/* The levels are the same as for levprd, but bit 04 is always 0 */
/* the ascii representations of the nonterminals */
struct sxxx2
{ char *name
; } nontrst
[_nnonterm
];
int ntlim _nnonterm
; /* limit to the number of nonterminals */
int indgo
[_nstates
]; /* index to the stored goto table */
int ***pres
; /* vector of pointers to the productions yielding each nonterminal */
struct looksets
**pfirst
; /* vector of pointers to first sets for each nonterminal */
int *pempty
0 ; /* table of nonterminals nontrivially deriving e */
int nnonter
-1; /* the number of nonterminals */
int lastred
0; /* the number of the last reduction of a state */
int ftable
; /* y.tab.c file */
int foutput
; /* y.output file */
int arrndx
; /* used in the output of arrays on y.tab.c */
int lineno
1; /* current input line number */
int peekc
-1; /* look-ahead character */
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 */
struct looksets lkst
[ _lsetsize
];
int nlset
0; /* next lookahead set index */
int lsetsz _lsetsize
; /* number of lookahead sets */
struct wset
{ int *pitem
, flag
, ws
[_tbitset
]; } wsets
[ _wsetsize
];
int numbval
; /* the value of an input number */
int rflag
0; /* ratfor flag */
int oflag
0; /* optimization flag */
int ndefout
3; /* number of defined symbols output */
int nerrors
0; /* number of errors */
int fatfl
1; /* if on, error is fatal */
int machine
; /* has a number describing the machine */