xref: /original-bsd/usr.bin/pascal/eyacc/ey.h (revision c3e32dec)
1 /*-
2  * Copyright (c) 1979, 1993
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * %sccs.include.proprietary.c%
6  *
7  *	@(#)ey.h	8.1 (Berkeley) 06/06/93
8  */
9 
10 #include <stdio.h>
11 /*  MANIFEST CONSTANT DEFINITIONS */
12 
13 # define NTBASE 010000
14 
15   /* internal codes for error and accept actions */
16 
17 # define ERRCODE  8190
18 # define ACCEPTCODE 8191
19 
20 # define errfileno stderr      /* file number for erros and reduction message */
21 # define _tbitset 6  /* 16*_tbitset - 1 >= _nterms */
22 
23 extern int tbitset;  /* number of wds of lookahead vector */
24 extern int nolook;  /* flag to turn off lookahed computations */
25 struct looksets { int lset[ _tbitset ]; } ;
26 struct item { int *pitem; struct looksets *look; } ;
27 
28   /* output actions */
29 
30 # define ERRACT 4096
31 # define SHIFTACT 8192
32 # define REDUCACT 12288
33 # define ACCEPTACT 16384
34 
35 # define _REGISTER register
36 
37 extern int nstate ;		/* number of states */
38 extern struct item *pstate[];	/* pointers to the descriptions of the states */
39 extern int apstate[];		/* index to actions in amem by state */
40 extern int actsiz;  	/* size of the action table array */
41 extern int tystate[];	/* contains type information about the states */
42   /* 0 = simple state, completely generated
43      1 = state awaiting generation
44      2 = state with an empty production in closure
45      */
46 extern int stsize ;	/* maximum number of states, at present */
47 extern int memsiz ;	/* maximum size for productions and states */
48 extern int mem0[] ; /* added production */
49 extern int *mem ;
50 extern int amem[];  /* action table storage */
51 extern int actsiz;  /* action table size */
52 extern int memact ;		/* next free action table position */
53 extern int nprod ;	/* number of productions */
54 extern int *prdptr[];	/* pointers to descriptions of productions */
55 extern int prdlim; /* the number of productions allowed */
56 extern int levprd[] ;	/* contains production levels to break conflicts */
57   /* last two bits code associativity:
58        0 = no definition
59        1 = left associative
60        2 = binary
61        3 = right associative
62      bit 04 is 1 if the production has an action
63      the high 13 bits have the production level
64      */
65 extern int nterms ;	/* number of terminals */
66 extern int nerrors;	/* number of errors */
67 extern int fatfl;  	/* if on, error is fatal */
68   /*	the ascii representations of the terminals	*/
69 extern int extval;  /* start of output values */
70 extern struct sxxx1 {char *name; int value;} trmset[];
71 extern char cnames[];
72 extern int cnamsz;
73 extern char *cnamp;
74 extern int maxtmp ;	/* the size of the temp arrays */
75  /* temporary vectors, indexable by states, terms, or nterms */
76 extern int temp1[];
77 extern int temp2[];
78 extern int trmlev[];	/* vector with the precedence of the terminals */
79   /* The levels are the same as for levprd, but bit 04 is always 0 */
80   /* the ascii representations of the nonterminals */
81 extern struct sxxx2 { char *name; } nontrst[];
82 extern int indgo[];		/* index to the stored goto table */
83 extern int ***pres; /* vector of pointers to the productions yielding each nonterminal */
84 extern struct looksets **pfirst; /* vector of pointers to first sets for each nonterminal */
85 extern char *pempty; /* table of nonterminals nontrivially deriving e */
86 extern char stateflags[]; /* flags defining properties of a state (see below) */
87 #define GENLAMBDA   1	/* the state can nontrivially derive lambda */
88 #define SINGLE_NT   2	/* the state has a single nonterminal before its dot */
89 #define NEEDSREDUCE 4	/* the state needs a full reduce state generated */
90 extern struct looksets lastate[]; /* saved lookahead sets */
91 extern unsigned char lookstate[]; /* index mapping states to saved lookaheads */
92 extern int savedlook; /* number of saved lookahead sets used */
93 extern int maxlastate; /* maximum number of saved lookahead sets */
94 extern int nnonter ;	/* the number of nonterminals */
95 extern int lastred ;	/* the number of the last reduction of a state */
96 extern FILE *ftable;		/* y.tab.c file */
97 extern FILE *foutput;		/* y.output file */
98 extern FILE *cin;		/* current input file */
99 extern FILE *cout;		/* current output file */
100 extern int arrndx;
101 extern int zzcwset;
102 extern int zzpairs ;
103 extern int zzgoent ;
104 extern int zzgobest ;
105 extern int zzacent ;
106 extern int zzacsave ;
107 extern int zznsave ;
108 extern int zzclose ;
109 extern int zzrrconf ;
110 extern int zzsrconf ;
111 extern char *ctokn;
112 struct {int **ppi;} ;
113 extern int ntlim ;	/* maximum number of nonterminals */
114 extern int tlim ;	/* maximum number of terminals */
115 extern int lineno; /* current line number */
116 extern int peekc; /* look-ahead character */
117 extern int tstates[];
118 extern int ntstates[];
119 extern int mstates[];
120 
121 extern struct looksets clset;
122 extern struct looksets lkst[];
123 extern int nlset;  /* next lookahead set index */
124 extern int lsetsz; /* number of lookahead sets */
125 
126 extern struct wset { int *pitem, flag, ws[ _tbitset ]; } wsets[];
127 extern int cwset;
128 extern int wssize;
129 extern int lambdarule; /* index to rule that derives lambda */
130 
131 extern int numbval;  /* the value of an input number */
132 extern int rflag;  /* ratfor flag */
133 extern int oflag;  /* optimization flag */
134 extern int ndefout;  /* number of defined symbols output */
135 
136 struct looksets *flset();
137