/* Impure data needed by routines pulled from Y2.C */

#define y2imp YES
#include "dtxtrn.h"

/* communication variables between various I/O routines */

char *infile;   /* input file name */
int numbval;    /* value of an input number */
char tokname[NAMESIZE]; /* input token name */

/* storage of names */

char cnames[CNAMSZ];    /* place where token and nonterminal names are stored */
int cnamsz = CNAMSZ;    /* size of cnames */
char * cnamp = cnames;  /* place where next name is to be put in */
int ndefout = 3;  /* number of defined symbols output */

/* storage of types */
int ntypes;     /* number of types defined */
char * typeset[NTYPES]; /* pointers to type tags */

/* 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 */

/* assigned token type values */
int extval = 0;

/* input and output file descriptors */

FILE * finput = NULL;          /* yacc input file */
FILE * faction = NULL;         /* file for saving actions */
FILE * fdefine = NULL;         /* file for # defines */
FILE * ftable = NULL;          /* y.tab.c file */
FILE * ftemp = NULL;    /* tempfile to pass 2 */
FILE * foutput = NULL;         /* y.output file */

/* 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 */

/* Statics pulled from modules */

int peekline;           /* from gettok() */