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