groff before CVS: release 1.10
[s-roff.git] / eqn / eqn.cc
blob1fdda611201a097e4c6452556469eb216f7bd047
1 #if defined(__STDC__) || defined(__cplusplus)
2 #define YYCONST const
3 #define YYPARAMS(x) x
4 #define YYDEFUN(name, arglist, args) name(args)
5 #define YYAND ,
6 #define YYPTR void *
7 #else
8 #define YYCONST
9 #define YYPARAMS(x) ()
10 #define YYDEFUN(name, arglist, args) name arglist args;
11 #define YYAND ;
12 #define YYPTR char *
13 #endif
14 #ifndef lint
15 YYCONST static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley +Cygnus.28) 01/20/91";
16 #endif
17 #define YYBYACC 1
18 #ifndef YYDONT_INCLUDE_STDIO
19 #include <stdio.h>
20 #endif
21 #ifdef __cplusplus
22 #include <stdlib.h> /* for malloc/realloc/free */
23 #endif
24 #line 20 "eqn.y"
25 #include <stdio.h>
26 #include <string.h>
27 #include <stdlib.h>
29 #include "lib.h"
30 #include "box.h"
31 extern int non_empty_flag;
32 char *strsave(const char *);
33 int yylex();
34 void yyerror(const char *);
35 #line 32 "eqn.y"
36 typedef union {
37 char *str;
38 box *b;
39 pile_box *pb;
40 matrix_box *mb;
41 int n;
42 column *col;
43 } YYSTYPE;
44 #line 45 "y.tab.c"
45 #define OVER 257
46 #define SMALLOVER 258
47 #define SQRT 259
48 #define SUB 260
49 #define SUP 261
50 #define LPILE 262
51 #define RPILE 263
52 #define CPILE 264
53 #define PILE 265
54 #define LEFT 266
55 #define RIGHT 267
56 #define TO 268
57 #define FROM 269
58 #define SIZE 270
59 #define FONT 271
60 #define ROMAN 272
61 #define BOLD 273
62 #define ITALIC 274
63 #define FAT 275
64 #define ACCENT 276
65 #define BAR 277
66 #define UNDER 278
67 #define ABOVE 279
68 #define TEXT 280
69 #define QUOTED_TEXT 281
70 #define FWD 282
71 #define BACK 283
72 #define DOWN 284
73 #define UP 285
74 #define MATRIX 286
75 #define COL 287
76 #define LCOL 288
77 #define RCOL 289
78 #define CCOL 290
79 #define MARK 291
80 #define LINEUP 292
81 #define TYPE 293
82 #define VCENTER 294
83 #define PRIME 295
84 #define SPLIT 296
85 #define NOSPLIT 297
86 #define UACCENT 298
87 #define SPECIAL 299
88 #define SPACE 300
89 #define GFONT 301
90 #define GSIZE 302
91 #define DEFINE 303
92 #define NDEFINE 304
93 #define TDEFINE 305
94 #define SDEFINE 306
95 #define UNDEF 307
96 #define IFDEF 308
97 #define INCLUDE 309
98 #define DELIM 310
99 #define CHARTYPE 311
100 #define SET 312
101 #define GRFONT 313
102 #define GBFONT 314
103 #define YYERRCODE 256
104 static YYCONST short yylhs[] = { -1,
105 0, 0, 6, 6, 1, 1, 1, 2, 2, 2,
106 2, 2, 3, 3, 3, 3, 4, 4, 7, 7,
107 7, 5, 5, 5, 5, 5, 5, 5, 5, 5,
108 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
109 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
110 5, 5, 5, 5, 8, 11, 11, 12, 12, 13,
111 13, 16, 16, 15, 15, 14, 14, 14, 14, 9,
112 9, 10, 10, 10,
114 static YYCONST short yylen[] = { 2,
115 0, 1, 1, 2, 1, 2, 2, 1, 3, 3,
116 5, 5, 1, 2, 3, 3, 1, 3, 1, 3,
117 5, 1, 1, 2, 2, 1, 1, 1, 3, 2,
118 2, 2, 2, 4, 5, 3, 2, 2, 2, 3,
119 3, 2, 2, 2, 2, 3, 3, 3, 3, 3,
120 3, 3, 2, 3, 1, 1, 3, 3, 4, 1,
121 2, 1, 3, 3, 4, 2, 2, 2, 2, 1,
122 1, 1, 1, 1,
124 static YYCONST short yydefred[] = { 0,
125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
126 0, 0, 22, 23, 0, 0, 0, 0, 0, 0,
127 0, 0, 0, 0, 0, 0, 26, 27, 28, 0,
128 0, 3, 5, 0, 13, 0, 0, 17, 14, 70,
129 71, 0, 0, 55, 31, 32, 33, 30, 73, 74,
130 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
131 0, 0, 0, 6, 7, 0, 0, 24, 25, 0,
132 0, 0, 0, 0, 0, 0, 0, 0, 37, 38,
133 39, 0, 4, 0, 0, 0, 0, 0, 0, 0,
134 0, 0, 0, 0, 0, 0, 0, 0, 60, 0,
135 0, 29, 15, 16, 9, 0, 0, 20, 18, 40,
136 41, 0, 58, 0, 0, 0, 0, 66, 67, 68,
137 69, 34, 61, 0, 0, 0, 0, 59, 35, 0,
138 0, 0, 11, 12, 21, 0, 64, 0, 0, 65,
140 static YYCONST short yydgoto[] = { 31,
141 32, 33, 34, 35, 36, 84, 38, 43, 44, 52,
142 85, 45, 98, 99, 118, 131,
144 static YYCONST short yysindex[] = { 1488,
145 1527, -120, -120, -120, -120, -123, -249, -249, 1566, 1566,
146 1566, 1566, 0, 0, -249, -249, -249, -249, -115, 1488,
147 1488, -249, 1566, -256, -251, -249, 0, 0, 0, 1488,
148 0, 0, 0, -221, 0, -233, 1488, 0, 0, 0,
149 0, 1488, -85, 0, 0, 0, 0, 0, 0, 0,
150 0, 1488, 1566, 1566, -195, -195, -195, -195, 1566, 1566,
151 1566, 1566, -272, 0, 0, 1566, -195, 0, 0, 1566,
152 1402, 1527, 1527, 1527, 1527, 1566, 1566, 1566, 0, 0,
153 0, 1566, 0, 1488, -113, 1488, 1444, -195, -195, -195,
154 -195, -195, -195, -117, -117, -117, -117, -118, 0, -195,
155 -195, 0, 0, 0, 0, -167, -189, 0, 0, 0,
156 0, 1488, 0, -106, -123, 1488, -83, 0, 0, 0,
157 0, 0, 0, 1527, 1527, 1566, 1488, 0, 0, 1488,
158 -105, 1488, 0, 0, 0, 1488, 0, -104, 1488, 0,
160 static YYCONST short yyrindex[] = { 41,
161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
162 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
163 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
164 0, 0, 0, 1, 0, 1220, 46, 0, 0, 0,
165 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
166 0, 0, 0, 0, 85, 128, 363, 406, 0, 0,
167 0, 0, 0, 0, 0, 0, 449, 0, 0, 0,
168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
169 0, 0, 0, -103, 0, 0, 185, 492, 727, 770,
170 813, 856, 1091, 0, 0, 0, 0, 0, 0, 1134,
171 1177, 0, 0, 0, 0, 42, 1220, 0, 0, 0,
172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
173 0, 0, 0, 0, 0, 0, -102, 0, 0, -101,
174 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
176 static YYCONST short yygindex[] = { 0,
177 -7, -69, 3, -66, 458, 9, -26, 52, 27, -63,
178 -32, 54, 0, -35, 2, -59,
180 #define YYTABLESIZE 1865
181 static YYCONST short yytable[] = { 49,
182 8, 50, 42, 39, 105, 116, 122, 63, 37, 8,
183 109, 113, 64, 65, 94, 95, 96, 97, 128, 137,
184 140, 56, 57, 62, 68, 63, 76, 77, 69, 83,
185 40, 41, 51, 53, 54, 72, 73, 86, 71, 132,
186 1, 10, 78, 79, 80, 2, 74, 75, 66, 108,
187 10, 129, 70, 114, 133, 134, 46, 47, 48, 135,
188 87, 81, 123, 83, 82, 0, 59, 60, 61, 62,
189 76, 126, 138, 0, 103, 104, 83, 106, 0, 83,
190 78, 79, 80, 0, 42, 0, 78, 79, 80, 72,
191 73, 0, 0, 42, 8, 0, 119, 120, 121, 81,
192 124, 125, 82, 0, 0, 81, 0, 0, 82, 0,
193 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,
194 127, 0, 83, 8, 130, 8, 8, 43, 0, 0,
195 0, 83, 0, 0, 0, 10, 43, 0, 0, 0,
196 130, 51, 0, 0, 139, 117, 117, 117, 117, 0,
197 0, 0, 0, 0, 0, 0, 40, 41, 0, 40,
198 41, 0, 40, 41, 10, 112, 10, 10, 94, 95,
199 96, 97, 112, 136, 136, 56, 57, 62, 42, 63,
200 0, 0, 0, 0, 36, 0, 0, 0, 0, 0,
201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
202 0, 0, 0, 0, 0, 0, 0, 42, 0, 42,
203 42, 0, 0, 0, 0, 0, 0, 0, 0, 0,
204 0, 43, 0, 0, 0, 0, 0, 0, 0, 0,
205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207 43, 0, 43, 43, 0, 0, 0, 0, 0, 8,
208 8, 8, 8, 8, 8, 8, 8, 8, 0, 0,
209 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
210 8, 8, 8, 8, 8, 8, 8, 0, 0, 0,
211 0, 8, 8, 8, 8, 8, 8, 8, 8, 8,
212 10, 10, 10, 10, 10, 10, 10, 10, 10, 36,
213 0, 10, 10, 10, 10, 10, 10, 10, 10, 10,
214 10, 10, 10, 10, 10, 10, 10, 10, 0, 0,
215 0, 0, 10, 10, 10, 10, 10, 10, 10, 10,
216 10, 42, 42, 42, 42, 42, 42, 42, 42, 42,
217 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
218 0, 0, 44, 42, 42, 42, 42, 42, 42, 42,
219 42, 44, 0, 0, 0, 42, 42, 42, 42, 0,
220 42, 42, 0, 42, 43, 43, 43, 43, 43, 43,
221 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
222 43, 43, 43, 0, 0, 45, 43, 43, 43, 43,
223 43, 43, 43, 43, 45, 0, 0, 0, 43, 43,
224 43, 43, 0, 43, 43, 0, 43, 0, 0, 0,
225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
226 0, 36, 36, 0, 36, 36, 0, 0, 53, 0,
227 0, 0, 36, 36, 0, 0, 44, 53, 0, 0,
228 36, 36, 36, 36, 0, 0, 55, 56, 57, 58,
229 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,
230 67, 0, 36, 0, 0, 44, 0, 44, 44, 0,
231 0, 47, 0, 0, 0, 0, 0, 0, 0, 45,
232 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
233 88, 89, 0, 0, 0, 0, 90, 91, 92, 93,
234 0, 0, 0, 100, 0, 0, 0, 101, 45, 0,
235 45, 45, 0, 107, 0, 110, 0, 0, 0, 111,
236 0, 0, 53, 0, 0, 0, 0, 0, 0, 0,
237 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
238 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
239 0, 53, 0, 53, 53, 0, 0, 0, 0, 0,
240 0, 0, 0, 0, 0, 47, 0, 0, 0, 0,
241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
243 0, 0, 0, 0, 47, 0, 47, 47, 0, 44,
244 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
245 44, 44, 44, 44, 44, 44, 44, 44, 0, 0,
246 0, 44, 44, 44, 44, 44, 44, 44, 44, 0,
247 0, 0, 0, 44, 44, 44, 44, 0, 44, 44,
248 0, 44, 45, 45, 45, 45, 45, 45, 45, 45,
249 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
250 45, 0, 0, 0, 45, 45, 45, 45, 45, 45,
251 45, 45, 0, 0, 0, 0, 45, 45, 45, 45,
252 0, 45, 45, 0, 45, 53, 53, 53, 53, 53,
253 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
254 53, 53, 53, 53, 0, 0, 46, 53, 53, 53,
255 53, 53, 53, 53, 53, 46, 0, 0, 0, 53,
256 53, 53, 53, 0, 53, 53, 0, 53, 47, 47,
257 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
258 47, 47, 47, 47, 47, 47, 47, 0, 0, 48,
259 47, 47, 47, 47, 47, 47, 47, 47, 48, 0,
260 0, 0, 47, 47, 47, 47, 0, 47, 47, 0,
261 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
263 0, 0, 49, 0, 0, 0, 0, 0, 0, 0,
264 46, 49, 0, 0, 0, 0, 0, 0, 0, 0,
265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
266 0, 0, 0, 0, 0, 0, 0, 0, 0, 46,
267 0, 46, 46, 0, 0, 51, 0, 0, 0, 0,
268 0, 0, 0, 48, 51, 0, 0, 0, 0, 0,
269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
271 0, 0, 48, 0, 48, 48, 0, 0, 0, 0,
272 0, 0, 0, 0, 0, 0, 49, 0, 0, 0,
273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
275 0, 0, 0, 0, 0, 49, 0, 49, 49, 0,
276 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,
277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
279 0, 0, 0, 0, 0, 0, 0, 0, 51, 0,
280 51, 51, 0, 46, 46, 46, 46, 46, 46, 46,
281 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
282 46, 46, 0, 0, 0, 46, 46, 46, 46, 46,
283 46, 46, 46, 0, 0, 0, 0, 46, 46, 46,
284 46, 0, 46, 46, 0, 46, 48, 48, 48, 48,
285 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
286 48, 48, 48, 48, 48, 0, 0, 0, 48, 48,
287 48, 48, 48, 48, 48, 48, 0, 0, 0, 0,
288 48, 48, 48, 48, 0, 48, 48, 0, 48, 49,
289 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
290 49, 49, 49, 49, 49, 49, 49, 49, 0, 0,
291 50, 49, 49, 49, 49, 49, 49, 49, 49, 50,
292 0, 0, 0, 49, 49, 49, 49, 0, 49, 49,
293 0, 49, 51, 51, 51, 51, 51, 51, 51, 51,
294 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
295 51, 0, 0, 52, 51, 51, 51, 51, 51, 51,
296 51, 51, 52, 0, 0, 0, 51, 51, 51, 51,
297 0, 51, 51, 0, 51, 0, 0, 0, 0, 0,
298 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
299 0, 0, 0, 0, 0, 0, 54, 0, 0, 0,
300 0, 0, 0, 0, 50, 54, 0, 0, 0, 0,
301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
303 0, 0, 0, 50, 0, 50, 50, 0, 0, 19,
304 0, 0, 0, 0, 0, 0, 0, 52, 19, 0,
305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
306 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
307 0, 0, 0, 0, 0, 0, 52, 0, 52, 52,
308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
309 54, 0, 0, 0, 0, 0, 0, 0, 0, 0,
310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
311 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,
312 0, 54, 54, 0, 0, 0, 0, 0, 0, 0,
313 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
316 0, 0, 19, 0, 19, 19, 0, 50, 50, 50,
317 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
318 50, 50, 50, 50, 50, 50, 0, 0, 0, 50,
319 50, 50, 50, 50, 50, 50, 50, 0, 0, 0,
320 0, 50, 50, 50, 50, 0, 50, 50, 0, 50,
321 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
322 52, 52, 52, 52, 52, 52, 52, 52, 52, 0,
323 29, 0, 52, 52, 52, 52, 52, 52, 52, 52,
324 0, 0, 0, 0, 52, 52, 52, 52, 0, 52,
325 52, 0, 52, 54, 54, 54, 54, 54, 54, 54,
326 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
327 54, 54, 29, 0, 0, 54, 54, 54, 54, 54,
328 54, 54, 54, 0, 0, 0, 0, 54, 54, 54,
329 54, 0, 54, 54, 0, 54, 19, 19, 19, 0,
330 0, 19, 19, 19, 19, 19, 19, 19, 19, 19,
331 19, 19, 19, 19, 19, 27, 29, 0, 19, 19,
332 19, 19, 19, 19, 19, 19, 0, 0, 0, 0,
333 19, 19, 19, 19, 0, 19, 19, 0, 19, 0,
334 0, 0, 0, 0, 30, 0, 102, 28, 0, 0,
335 0, 0, 0, 0, 0, 29, 0, 27, 0, 0,
336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
338 0, 0, 0, 0, 0, 0, 30, 0, 0, 28,
339 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
340 0, 27, 0, 0, 0, 0, 0, 0, 0, 0,
341 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
343 30, 0, 0, 28, 0, 0, 0, 0, 0, 0,
344 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
346 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,
347 0, 0, 28, 0, 0, 0, 0, 0, 0, 27,
348 1, 0, 0, 2, 3, 4, 5, 6, 0, 0,
349 0, 7, 8, 9, 10, 11, 12, 0, 0, 0,
350 0, 13, 14, 15, 16, 17, 18, 19, 30, 0,
351 0, 28, 20, 21, 22, 23, 0, 24, 25, 0,
352 26, 0, 1, 0, 0, 2, 3, 4, 5, 6,
353 115, 0, 0, 7, 8, 9, 10, 11, 12, 0,
354 0, 0, 0, 13, 14, 15, 16, 17, 18, 19,
355 0, 0, 0, 0, 20, 21, 22, 23, 0, 24,
356 25, 0, 26, 0, 0, 0, 1, 0, 0, 2,
357 3, 4, 5, 6, 0, 0, 0, 7, 8, 9,
358 10, 11, 12, 0, 0, 0, 0, 13, 14, 15,
359 16, 17, 18, 19, 0, 0, 0, 0, 20, 21,
360 22, 23, 0, 24, 25, 1, 26, 0, 2, 3,
361 4, 5, 6, 0, 0, 0, 7, 8, 9, 10,
362 11, 12, 0, 0, 0, 0, 13, 14, 15, 16,
363 17, 18, 19, 0, 0, 0, 0, 0, 0, 22,
364 23, 0, 24, 25, 0, 26, 0, 2, 3, 4,
365 5, 6, 0, 0, 0, 7, 8, 9, 10, 11,
366 12, 0, 0, 0, 0, 13, 14, 15, 16, 17,
367 18, 19, 0, 0, 0, 0, 0, 0, 22, 23,
368 0, 24, 25, 0, 26,
370 static YYCONST short yycheck[] = { 123,
371 0, 125, 123, 1, 74, 123, 125, 123, 0, 9,
372 77, 125, 20, 21, 287, 288, 289, 290, 125, 125,
373 125, 125, 125, 125, 281, 125, 260, 261, 280, 37,
374 280, 281, 6, 7, 8, 257, 258, 123, 30, 123,
375 0, 0, 276, 277, 278, 0, 268, 269, 22, 76,
376 9, 115, 26, 86, 124, 125, 3, 4, 5, 126,
377 52, 295, 98, 71, 298, -1, 15, 16, 17, 18,
378 260, 261, 132, -1, 72, 73, 84, 75, -1, 87,
379 276, 277, 278, -1, 0, -1, 276, 277, 278, 257,
380 258, -1, -1, 9, 94, -1, 95, 96, 97, 295,
381 268, 269, 298, -1, -1, 295, -1, -1, 298, -1,
382 -1, -1, -1, -1, -1, -1, -1, -1, -1, 127,
383 112, -1, 130, 123, 116, 125, 126, 0, -1, -1,
384 -1, 139, -1, -1, -1, 94, 9, -1, -1, -1,
385 132, 115, -1, -1, 136, 94, 95, 96, 97, -1,
386 -1, -1, -1, -1, -1, -1, 280, 281, -1, 280,
387 281, -1, 280, 281, 123, 279, 125, 126, 287, 288,
388 289, 290, 279, 279, 279, 279, 279, 279, 94, 279,
389 -1, -1, -1, -1, 0, -1, -1, -1, -1, -1,
390 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
391 -1, -1, -1, -1, -1, -1, -1, 123, -1, 125,
392 126, -1, -1, -1, -1, -1, -1, -1, -1, -1,
393 -1, 94, -1, -1, -1, -1, -1, -1, -1, -1,
394 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
395 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
396 123, -1, 125, 126, -1, -1, -1, -1, -1, 259,
397 260, 261, 262, 263, 264, 265, 266, 267, -1, -1,
398 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
399 280, 281, 282, 283, 284, 285, 286, -1, -1, -1,
400 -1, 291, 292, 293, 294, 295, 296, 297, 298, 299,
401 259, 260, 261, 262, 263, 264, 265, 266, 267, 125,
402 -1, 270, 271, 272, 273, 274, 275, 276, 277, 278,
403 279, 280, 281, 282, 283, 284, 285, 286, -1, -1,
404 -1, -1, 291, 292, 293, 294, 295, 296, 297, 298,
405 299, 257, 258, 259, 260, 261, 262, 263, 264, 265,
406 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
407 -1, -1, 0, 279, 280, 281, 282, 283, 284, 285,
408 286, 9, -1, -1, -1, 291, 292, 293, 294, -1,
409 296, 297, -1, 299, 257, 258, 259, 260, 261, 262,
410 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
411 273, 274, 275, -1, -1, 0, 279, 280, 281, 282,
412 283, 284, 285, 286, 9, -1, -1, -1, 291, 292,
413 293, 294, -1, 296, 297, -1, 299, -1, -1, -1,
414 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
415 -1, 257, 258, -1, 260, 261, -1, -1, 0, -1,
416 -1, -1, 268, 269, -1, -1, 94, 9, -1, -1,
417 276, 277, 278, 279, -1, -1, 9, 10, 11, 12,
418 -1, -1, -1, -1, -1, -1, -1, -1, -1, 295,
419 23, -1, 298, -1, -1, 123, -1, 125, 126, -1,
420 -1, 0, -1, -1, -1, -1, -1, -1, -1, 94,
421 9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
422 53, 54, -1, -1, -1, -1, 59, 60, 61, 62,
423 -1, -1, -1, 66, -1, -1, -1, 70, 123, -1,
424 125, 126, -1, 76, -1, 78, -1, -1, -1, 82,
425 -1, -1, 94, -1, -1, -1, -1, -1, -1, -1,
426 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
427 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
428 -1, 123, -1, 125, 126, -1, -1, -1, -1, -1,
429 -1, -1, -1, -1, -1, 94, -1, -1, -1, -1,
430 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
431 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
432 -1, -1, -1, -1, 123, -1, 125, 126, -1, 257,
433 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
434 268, 269, 270, 271, 272, 273, 274, 275, -1, -1,
435 -1, 279, 280, 281, 282, 283, 284, 285, 286, -1,
436 -1, -1, -1, 291, 292, 293, 294, -1, 296, 297,
437 -1, 299, 257, 258, 259, 260, 261, 262, 263, 264,
438 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
439 275, -1, -1, -1, 279, 280, 281, 282, 283, 284,
440 285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
441 -1, 296, 297, -1, 299, 257, 258, 259, 260, 261,
442 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
443 272, 273, 274, 275, -1, -1, 0, 279, 280, 281,
444 282, 283, 284, 285, 286, 9, -1, -1, -1, 291,
445 292, 293, 294, -1, 296, 297, -1, 299, 257, 258,
446 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
447 269, 270, 271, 272, 273, 274, 275, -1, -1, 0,
448 279, 280, 281, 282, 283, 284, 285, 286, 9, -1,
449 -1, -1, 291, 292, 293, 294, -1, 296, 297, -1,
450 299, -1, -1, -1, -1, -1, -1, -1, -1, -1,
451 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
452 -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
453 94, 9, -1, -1, -1, -1, -1, -1, -1, -1,
454 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
455 -1, -1, -1, -1, -1, -1, -1, -1, -1, 123,
456 -1, 125, 126, -1, -1, 0, -1, -1, -1, -1,
457 -1, -1, -1, 94, 9, -1, -1, -1, -1, -1,
458 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
459 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
460 -1, -1, 123, -1, 125, 126, -1, -1, -1, -1,
461 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1,
462 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
463 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
464 -1, -1, -1, -1, -1, 123, -1, 125, 126, -1,
465 -1, -1, -1, -1, -1, -1, -1, -1, -1, 94,
466 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
467 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
468 -1, -1, -1, -1, -1, -1, -1, -1, 123, -1,
469 125, 126, -1, 257, 258, 259, 260, 261, 262, 263,
470 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
471 274, 275, -1, -1, -1, 279, 280, 281, 282, 283,
472 284, 285, 286, -1, -1, -1, -1, 291, 292, 293,
473 294, -1, 296, 297, -1, 299, 257, 258, 259, 260,
474 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
475 271, 272, 273, 274, 275, -1, -1, -1, 279, 280,
476 281, 282, 283, 284, 285, 286, -1, -1, -1, -1,
477 291, 292, 293, 294, -1, 296, 297, -1, 299, 257,
478 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
479 268, 269, 270, 271, 272, 273, 274, 275, -1, -1,
480 0, 279, 280, 281, 282, 283, 284, 285, 286, 9,
481 -1, -1, -1, 291, 292, 293, 294, -1, 296, 297,
482 -1, 299, 257, 258, 259, 260, 261, 262, 263, 264,
483 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
484 275, -1, -1, 0, 279, 280, 281, 282, 283, 284,
485 285, 286, 9, -1, -1, -1, 291, 292, 293, 294,
486 -1, 296, 297, -1, 299, -1, -1, -1, -1, -1,
487 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
488 -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
489 -1, -1, -1, -1, 94, 9, -1, -1, -1, -1,
490 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
491 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
492 -1, -1, -1, 123, -1, 125, 126, -1, -1, 0,
493 -1, -1, -1, -1, -1, -1, -1, 94, 9, -1,
494 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
495 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
496 -1, -1, -1, -1, -1, -1, 123, -1, 125, 126,
497 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
498 94, -1, -1, -1, -1, -1, -1, -1, -1, -1,
499 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
500 -1, -1, -1, -1, -1, -1, -1, -1, -1, 123,
501 -1, 125, 126, -1, -1, -1, -1, -1, -1, -1,
502 -1, -1, -1, 94, -1, -1, -1, -1, -1, -1,
503 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
504 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
505 -1, -1, 123, -1, 125, 126, -1, 257, 258, 259,
506 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
507 270, 271, 272, 273, 274, 275, -1, -1, -1, 279,
508 280, 281, 282, 283, 284, 285, 286, -1, -1, -1,
509 -1, 291, 292, 293, 294, -1, 296, 297, -1, 299,
510 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
511 267, 268, 269, 270, 271, 272, 273, 274, 275, -1,
512 9, -1, 279, 280, 281, 282, 283, 284, 285, 286,
513 -1, -1, -1, -1, 291, 292, 293, 294, -1, 296,
514 297, -1, 299, 257, 258, 259, 260, 261, 262, 263,
515 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
516 274, 275, 9, -1, -1, 279, 280, 281, 282, 283,
517 284, 285, 286, -1, -1, -1, -1, 291, 292, 293,
518 294, -1, 296, 297, -1, 299, 257, 258, 259, -1,
519 -1, 262, 263, 264, 265, 266, 267, 268, 269, 270,
520 271, 272, 273, 274, 275, 94, 9, -1, 279, 280,
521 281, 282, 283, 284, 285, 286, -1, -1, -1, -1,
522 291, 292, 293, 294, -1, 296, 297, -1, 299, -1,
523 -1, -1, -1, -1, 123, -1, 125, 126, -1, -1,
524 -1, -1, -1, -1, -1, 9, -1, 94, -1, -1,
525 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
526 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
527 -1, -1, -1, -1, -1, -1, 123, -1, -1, 126,
528 -1, -1, -1, -1, 9, -1, -1, -1, -1, -1,
529 -1, 94, -1, -1, -1, -1, -1, -1, -1, -1,
530 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
531 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
532 123, -1, -1, 126, -1, -1, -1, -1, -1, -1,
533 94, -1, -1, -1, -1, -1, -1, -1, -1, -1,
534 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
535 -1, -1, -1, -1, -1, -1, -1, -1, -1, 123,
536 -1, -1, 126, -1, -1, -1, -1, -1, -1, 94,
537 259, -1, -1, 262, 263, 264, 265, 266, -1, -1,
538 -1, 270, 271, 272, 273, 274, 275, -1, -1, -1,
539 -1, 280, 281, 282, 283, 284, 285, 286, 123, -1,
540 -1, 126, 291, 292, 293, 294, -1, 296, 297, -1,
541 299, -1, 259, -1, -1, 262, 263, 264, 265, 266,
542 267, -1, -1, 270, 271, 272, 273, 274, 275, -1,
543 -1, -1, -1, 280, 281, 282, 283, 284, 285, 286,
544 -1, -1, -1, -1, 291, 292, 293, 294, -1, 296,
545 297, -1, 299, -1, -1, -1, 259, -1, -1, 262,
546 263, 264, 265, 266, -1, -1, -1, 270, 271, 272,
547 273, 274, 275, -1, -1, -1, -1, 280, 281, 282,
548 283, 284, 285, 286, -1, -1, -1, -1, 291, 292,
549 293, 294, -1, 296, 297, 259, 299, -1, 262, 263,
550 264, 265, 266, -1, -1, -1, 270, 271, 272, 273,
551 274, 275, -1, -1, -1, -1, 280, 281, 282, 283,
552 284, 285, 286, -1, -1, -1, -1, -1, -1, 293,
553 294, -1, 296, 297, -1, 299, -1, 262, 263, 264,
554 265, 266, -1, -1, -1, 270, 271, 272, 273, 274,
555 275, -1, -1, -1, -1, 280, 281, 282, 283, 284,
556 285, 286, -1, -1, -1, -1, -1, -1, 293, 294,
557 -1, 296, 297, -1, 299,
559 #define YYFINAL 31
560 #ifndef YYDEBUG
561 #define YYDEBUG 0
562 #endif
563 #define YYMAXTOKEN 314
564 #if YYDEBUG
565 static YYCONST char *YYCONST yyname[] = {
566 "end-of-file",0,0,0,0,0,0,0,0,"'\\t'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
567 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
568 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,
569 0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",0,"'}'","'~'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
570 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
571 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
572 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"OVER",
573 "SMALLOVER","SQRT","SUB","SUP","LPILE","RPILE","CPILE","PILE","LEFT","RIGHT",
574 "TO","FROM","SIZE","FONT","ROMAN","BOLD","ITALIC","FAT","ACCENT","BAR","UNDER",
575 "ABOVE","TEXT","QUOTED_TEXT","FWD","BACK","DOWN","UP","MATRIX","COL","LCOL",
576 "RCOL","CCOL","MARK","LINEUP","TYPE","VCENTER","PRIME","SPLIT","NOSPLIT",
577 "UACCENT","SPECIAL","SPACE","GFONT","GSIZE","DEFINE","NDEFINE","TDEFINE",
578 "SDEFINE","UNDEF","IFDEF","INCLUDE","DELIM","CHARTYPE","SET","GRFONT","GBFONT",
580 static YYCONST char *YYCONST yyrule[] = {
581 "$accept : top",
582 "top :",
583 "top : equation",
584 "equation : mark",
585 "equation : equation mark",
586 "mark : from_to",
587 "mark : MARK mark",
588 "mark : LINEUP mark",
589 "from_to : sqrt_over",
590 "from_to : sqrt_over TO from_to",
591 "from_to : sqrt_over FROM sqrt_over",
592 "from_to : sqrt_over FROM sqrt_over TO from_to",
593 "from_to : sqrt_over FROM sqrt_over FROM from_to",
594 "sqrt_over : script",
595 "sqrt_over : SQRT sqrt_over",
596 "sqrt_over : sqrt_over OVER sqrt_over",
597 "sqrt_over : sqrt_over SMALLOVER sqrt_over",
598 "script : nonsup",
599 "script : simple SUP script",
600 "nonsup : simple",
601 "nonsup : simple SUB nonsup",
602 "nonsup : simple SUB simple SUP script",
603 "simple : TEXT",
604 "simple : QUOTED_TEXT",
605 "simple : SPLIT QUOTED_TEXT",
606 "simple : NOSPLIT TEXT",
607 "simple : '^'",
608 "simple : '~'",
609 "simple : '\\t'",
610 "simple : '{' equation '}'",
611 "simple : PILE pile_arg",
612 "simple : LPILE pile_arg",
613 "simple : RPILE pile_arg",
614 "simple : CPILE pile_arg",
615 "simple : MATRIX '{' column_list '}'",
616 "simple : LEFT delim equation RIGHT delim",
617 "simple : LEFT delim equation",
618 "simple : simple BAR",
619 "simple : simple UNDER",
620 "simple : simple PRIME",
621 "simple : simple ACCENT simple",
622 "simple : simple UACCENT simple",
623 "simple : ROMAN simple",
624 "simple : BOLD simple",
625 "simple : ITALIC simple",
626 "simple : FAT simple",
627 "simple : FONT text simple",
628 "simple : SIZE text simple",
629 "simple : FWD number simple",
630 "simple : BACK number simple",
631 "simple : UP number simple",
632 "simple : DOWN number simple",
633 "simple : TYPE text simple",
634 "simple : VCENTER simple",
635 "simple : SPECIAL text simple",
636 "number : text",
637 "pile_element_list : equation",
638 "pile_element_list : pile_element_list ABOVE equation",
639 "pile_arg : '{' pile_element_list '}'",
640 "pile_arg : number '{' pile_element_list '}'",
641 "column_list : column",
642 "column_list : column_list column",
643 "column_element_list : equation",
644 "column_element_list : column_element_list ABOVE equation",
645 "column_arg : '{' column_element_list '}'",
646 "column_arg : number '{' column_element_list '}'",
647 "column : COL column_arg",
648 "column : LCOL column_arg",
649 "column : RCOL column_arg",
650 "column : CCOL column_arg",
651 "text : TEXT",
652 "text : QUOTED_TEXT",
653 "delim : text",
654 "delim : '{'",
655 "delim : '}'",
657 #endif
658 #define YYLEX yylex()
659 #define YYEMPTY -1
660 #define yyclearin (yychar=(YYEMPTY))
661 #define yyerrok (yyerrflag=0)
662 #ifndef YYINITDEPTH
663 #define YYINITDEPTH 200
664 #endif
665 #ifdef YYSTACKSIZE
666 #undef YYMAXDEPTH
667 #define YYMAXDEPTH YYSTACKSIZE
668 #else
669 #ifdef YYMAXDEPTH
670 #define YYSTACKSIZE YYMAXDEPTH
671 #else
672 #define YYSTACKSIZE 10000
673 #define YYMAXDEPTH 10000
674 #endif
675 #endif
676 int yydebug;
677 int yynerrs;
678 int yyerrflag;
679 int yychar;
680 YYSTYPE yyval;
681 YYSTYPE yylval;
682 static short *yyss;
683 static YYSTYPE *yyvs;
684 static int yystacksize;
685 static int yygrow ();
686 static YYPTR yymalloc YYPARAMS((unsigned));
687 static YYPTR yyrealloc YYPARAMS((YYPTR, unsigned));
688 #define yyfree(x) free(x)
689 #define YYABORT goto yyabort
690 #define YYACCEPT goto yyaccept
691 #define YYERROR goto yyerrlab
693 #if YYDEBUG
694 #ifdef __cplusplus
695 extern "C" char *getenv();
696 #else
697 extern char *getenv();
698 #endif
699 #endif
702 yyparse()
704 register int yym, yyn, yystate;
705 register YYSTYPE *yyvsp;
706 register short *yyssp;
707 short *yysse;
708 #if YYDEBUG
709 register YYCONST char *yys;
711 if (yys = getenv("YYDEBUG"))
713 yyn = *yys;
714 if (yyn >= '0' && yyn <= '9')
715 yydebug = yyn - '0';
717 #endif
719 yynerrs = 0;
720 yyerrflag = 0;
721 yychar = (-1);
723 if (yyss == 0)
725 yyss = (short *) yymalloc (YYINITDEPTH * sizeof (short));
726 if (yyss == 0)
727 goto yyabort;
728 yyvs = (YYSTYPE *) yymalloc (YYINITDEPTH * sizeof (YYSTYPE));
729 if (yyvs == 0)
731 yyfree (yyss);
732 goto yyabort;
734 yystacksize = YYINITDEPTH;
736 yysse = yyss + yystacksize - 1;
737 yyssp = yyss;
738 yyvsp = yyvs;
739 *yyssp = yystate = 0;
741 yyloop:
742 if (yyn = yydefred[yystate]) goto yyreduce;
743 if (yychar < 0)
745 if ((yychar = yylex()) < 0) yychar = 0;
746 #if YYDEBUG
747 if (yydebug)
749 yys = 0;
750 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
751 if (!yys) yys = "illegal-symbol";
752 printf("yydebug: state %d, reading %d (%s)\n", yystate,
753 yychar, yys);
755 #endif
757 if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
758 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
760 #if YYDEBUG
761 if (yydebug)
762 printf("yydebug: state %d, shifting to state %d\n",
763 yystate, yytable[yyn]);
764 #endif
765 if (yyssp >= yysse)
767 /* FIXME: Rework so there's only one of these. */
768 int depth = yyssp - yyss;
769 if (yygrow () != 0)
770 goto yyoverflow;
771 yysse = yyss + yystacksize - 1;
772 yyssp = yyss + depth;
773 yyvsp = yyvs + depth;
775 *++yyssp = yystate = yytable[yyn];
776 *++yyvsp = yylval;
777 yychar = (-1);
778 if (yyerrflag > 0) --yyerrflag;
779 goto yyloop;
781 if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
782 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
784 yyn = yytable[yyn];
785 goto yyreduce;
787 if (yyerrflag) goto yyinrecovery;
788 #ifdef lint
789 goto yynewerror;
790 #endif
791 yynewerror:
792 yyerror("syntax error");
793 #ifdef lint
794 goto yyerrlab;
795 #endif
796 yyerrlab:
797 ++yynerrs;
798 yyinrecovery:
799 if (yyerrflag < 3)
801 yyerrflag = 3;
802 for (;;)
804 if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
805 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
807 #if YYDEBUG
808 if (yydebug)
809 printf("yydebug: state %d, error recovery shifting\
810 to state %d\n", *yyssp, yytable[yyn]);
811 #endif
812 if (yyssp >= yysse)
814 int depth = yyssp - yyss;
815 if (yygrow () != 0)
816 goto yyoverflow;
817 yysse = yyss + yystacksize - 1;
818 yyssp = yyss + depth;
819 yyvsp = yyvs + depth;
821 *++yyssp = yystate = yytable[yyn];
822 *++yyvsp = yylval;
823 goto yyloop;
825 else
827 #if YYDEBUG
828 if (yydebug)
829 printf("yydebug: error recovery discarding state %d\n",
830 *yyssp);
831 #endif
832 if (yyssp <= yyss) goto yyabort;
833 --yyssp;
834 --yyvsp;
838 else
840 if (yychar == 0) goto yyabort;
841 #if YYDEBUG
842 if (yydebug)
844 yys = 0;
845 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
846 if (!yys) yys = "illegal-symbol";
847 printf("yydebug: state %d, error recovery discards token %d (%s)\n",
848 yystate, yychar, yys);
850 #endif
851 yychar = (-1);
852 goto yyloop;
854 yyreduce:
855 #if YYDEBUG
856 if (yydebug)
857 printf("yydebug: state %d, reducing by rule %d (%s)\n",
858 yystate, yyn, yyrule[yyn]);
859 #endif
860 yym = yylen[yyn];
861 yyval = yyvsp[1-yym];
862 switch (yyn)
864 case 2:
865 #line 126 "eqn.y"
866 { yyvsp[0].b->top_level(); non_empty_flag = 1; }
867 break;
868 case 3:
869 #line 131 "eqn.y"
870 { yyval.b = yyvsp[0].b; }
871 break;
872 case 4:
873 #line 133 "eqn.y"
875 list_box *lb = yyvsp[-1].b->to_list_box();
876 if (!lb)
877 lb = new list_box(yyvsp[-1].b);
878 lb->append(yyvsp[0].b);
879 yyval.b = lb;
881 break;
882 case 5:
883 #line 144 "eqn.y"
884 { yyval.b = yyvsp[0].b; }
885 break;
886 case 6:
887 #line 146 "eqn.y"
888 { yyval.b = make_mark_box(yyvsp[0].b); }
889 break;
890 case 7:
891 #line 148 "eqn.y"
892 { yyval.b = make_lineup_box(yyvsp[0].b); }
893 break;
894 case 8:
895 #line 153 "eqn.y"
896 { yyval.b = yyvsp[0].b; }
897 break;
898 case 9:
899 #line 155 "eqn.y"
900 { yyval.b = make_limit_box(yyvsp[-2].b, 0, yyvsp[0].b); }
901 break;
902 case 10:
903 #line 157 "eqn.y"
904 { yyval.b = make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0); }
905 break;
906 case 11:
907 #line 159 "eqn.y"
908 { yyval.b = make_limit_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); }
909 break;
910 case 12:
911 #line 161 "eqn.y"
912 { yyval.b = make_limit_box(yyvsp[-4].b, make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0), 0); }
913 break;
914 case 13:
915 #line 166 "eqn.y"
916 { yyval.b = yyvsp[0].b; }
917 break;
918 case 14:
919 #line 168 "eqn.y"
920 { yyval.b = make_sqrt_box(yyvsp[0].b); }
921 break;
922 case 15:
923 #line 170 "eqn.y"
924 { yyval.b = make_over_box(yyvsp[-2].b, yyvsp[0].b); }
925 break;
926 case 16:
927 #line 172 "eqn.y"
928 { yyval.b = make_small_over_box(yyvsp[-2].b, yyvsp[0].b); }
929 break;
930 case 17:
931 #line 177 "eqn.y"
932 { yyval.b = yyvsp[0].b; }
933 break;
934 case 18:
935 #line 179 "eqn.y"
936 { yyval.b = make_script_box(yyvsp[-2].b, 0, yyvsp[0].b); }
937 break;
938 case 19:
939 #line 184 "eqn.y"
940 { yyval.b = yyvsp[0].b; }
941 break;
942 case 20:
943 #line 186 "eqn.y"
944 { yyval.b = make_script_box(yyvsp[-2].b, yyvsp[0].b, 0); }
945 break;
946 case 21:
947 #line 188 "eqn.y"
948 { yyval.b = make_script_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); }
949 break;
950 case 22:
951 #line 193 "eqn.y"
952 { yyval.b = split_text(yyvsp[0].str); }
953 break;
954 case 23:
955 #line 195 "eqn.y"
956 { yyval.b = new quoted_text_box(yyvsp[0].str); }
957 break;
958 case 24:
959 #line 197 "eqn.y"
960 { yyval.b = split_text(yyvsp[0].str); }
961 break;
962 case 25:
963 #line 199 "eqn.y"
964 { yyval.b = new quoted_text_box(yyvsp[0].str); }
965 break;
966 case 26:
967 #line 201 "eqn.y"
968 { yyval.b = new half_space_box; }
969 break;
970 case 27:
971 #line 203 "eqn.y"
972 { yyval.b = new space_box; }
973 break;
974 case 28:
975 #line 205 "eqn.y"
976 { yyval.b = new tab_box; }
977 break;
978 case 29:
979 #line 207 "eqn.y"
980 { yyval.b = yyvsp[-1].b; }
981 break;
982 case 30:
983 #line 209 "eqn.y"
984 { yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; }
985 break;
986 case 31:
987 #line 211 "eqn.y"
988 { yyvsp[0].pb->set_alignment(LEFT_ALIGN); yyval.b = yyvsp[0].pb; }
989 break;
990 case 32:
991 #line 213 "eqn.y"
992 { yyvsp[0].pb->set_alignment(RIGHT_ALIGN); yyval.b = yyvsp[0].pb; }
993 break;
994 case 33:
995 #line 215 "eqn.y"
996 { yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; }
997 break;
998 case 34:
999 #line 217 "eqn.y"
1000 { yyval.b = yyvsp[-1].mb; }
1001 break;
1002 case 35:
1003 #line 219 "eqn.y"
1004 { yyval.b = make_delim_box(yyvsp[-3].str, yyvsp[-2].b, yyvsp[0].str); }
1005 break;
1006 case 36:
1007 #line 221 "eqn.y"
1008 { yyval.b = make_delim_box(yyvsp[-1].str, yyvsp[0].b, 0); }
1009 break;
1010 case 37:
1011 #line 223 "eqn.y"
1012 { yyval.b = make_overline_box(yyvsp[-1].b); }
1013 break;
1014 case 38:
1015 #line 225 "eqn.y"
1016 { yyval.b = make_underline_box(yyvsp[-1].b); }
1017 break;
1018 case 39:
1019 #line 227 "eqn.y"
1020 { yyval.b = make_prime_box(yyvsp[-1].b); }
1021 break;
1022 case 40:
1023 #line 229 "eqn.y"
1024 { yyval.b = make_accent_box(yyvsp[-2].b, yyvsp[0].b); }
1025 break;
1026 case 41:
1027 #line 231 "eqn.y"
1028 { yyval.b = make_uaccent_box(yyvsp[-2].b, yyvsp[0].b); }
1029 break;
1030 case 42:
1031 #line 233 "eqn.y"
1032 { yyval.b = new font_box(strsave(get_grfont()), yyvsp[0].b); }
1033 break;
1034 case 43:
1035 #line 235 "eqn.y"
1036 { yyval.b = new font_box(strsave(get_gbfont()), yyvsp[0].b); }
1037 break;
1038 case 44:
1039 #line 237 "eqn.y"
1040 { yyval.b = new font_box(strsave(get_gfont()), yyvsp[0].b); }
1041 break;
1042 case 45:
1043 #line 239 "eqn.y"
1044 { yyval.b = new fat_box(yyvsp[0].b); }
1045 break;
1046 case 46:
1047 #line 241 "eqn.y"
1048 { yyval.b = new font_box(yyvsp[-1].str, yyvsp[0].b); }
1049 break;
1050 case 47:
1051 #line 243 "eqn.y"
1052 { yyval.b = new size_box(yyvsp[-1].str, yyvsp[0].b); }
1053 break;
1054 case 48:
1055 #line 245 "eqn.y"
1056 { yyval.b = new hmotion_box(yyvsp[-1].n, yyvsp[0].b); }
1057 break;
1058 case 49:
1059 #line 247 "eqn.y"
1060 { yyval.b = new hmotion_box(-yyvsp[-1].n, yyvsp[0].b); }
1061 break;
1062 case 50:
1063 #line 249 "eqn.y"
1064 { yyval.b = new vmotion_box(yyvsp[-1].n, yyvsp[0].b); }
1065 break;
1066 case 51:
1067 #line 251 "eqn.y"
1068 { yyval.b = new vmotion_box(-yyvsp[-1].n, yyvsp[0].b); }
1069 break;
1070 case 52:
1071 #line 253 "eqn.y"
1072 { yyvsp[0].b->set_spacing_type(yyvsp[-1].str); yyval.b = yyvsp[0].b; }
1073 break;
1074 case 53:
1075 #line 255 "eqn.y"
1076 { yyval.b = new vcenter_box(yyvsp[0].b); }
1077 break;
1078 case 54:
1079 #line 257 "eqn.y"
1080 { yyval.b = make_special_box(yyvsp[-1].str, yyvsp[0].b); }
1081 break;
1082 case 55:
1083 #line 262 "eqn.y"
1085 int n;
1086 if (sscanf(yyvsp[0].str, "%d", &n) == 1)
1087 yyval.n = n;
1088 a_delete yyvsp[0].str;
1090 break;
1091 case 56:
1092 #line 272 "eqn.y"
1093 { yyval.pb = new pile_box(yyvsp[0].b); }
1094 break;
1095 case 57:
1096 #line 274 "eqn.y"
1097 { yyvsp[-2].pb->append(yyvsp[0].b); yyval.pb = yyvsp[-2].pb; }
1098 break;
1099 case 58:
1100 #line 279 "eqn.y"
1101 { yyval.pb = yyvsp[-1].pb; }
1102 break;
1103 case 59:
1104 #line 281 "eqn.y"
1105 { yyvsp[-1].pb->set_space(yyvsp[-3].n); yyval.pb = yyvsp[-1].pb; }
1106 break;
1107 case 60:
1108 #line 286 "eqn.y"
1109 { yyval.mb = new matrix_box(yyvsp[0].col); }
1110 break;
1111 case 61:
1112 #line 288 "eqn.y"
1113 { yyvsp[-1].mb->append(yyvsp[0].col); yyval.mb = yyvsp[-1].mb; }
1114 break;
1115 case 62:
1116 #line 293 "eqn.y"
1117 { yyval.col = new column(yyvsp[0].b); }
1118 break;
1119 case 63:
1120 #line 295 "eqn.y"
1121 { yyvsp[-2].col->append(yyvsp[0].b); yyval.col = yyvsp[-2].col; }
1122 break;
1123 case 64:
1124 #line 300 "eqn.y"
1125 { yyval.col = yyvsp[-1].col; }
1126 break;
1127 case 65:
1128 #line 302 "eqn.y"
1129 { yyvsp[-1].col->set_space(yyvsp[-3].n); yyval.col = yyvsp[-1].col; }
1130 break;
1131 case 66:
1132 #line 307 "eqn.y"
1133 { yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; }
1134 break;
1135 case 67:
1136 #line 309 "eqn.y"
1137 { yyvsp[0].col->set_alignment(LEFT_ALIGN); yyval.col = yyvsp[0].col; }
1138 break;
1139 case 68:
1140 #line 311 "eqn.y"
1141 { yyvsp[0].col->set_alignment(RIGHT_ALIGN); yyval.col = yyvsp[0].col; }
1142 break;
1143 case 69:
1144 #line 313 "eqn.y"
1145 { yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; }
1146 break;
1147 case 70:
1148 #line 317 "eqn.y"
1149 { yyval.str = yyvsp[0].str; }
1150 break;
1151 case 71:
1152 #line 319 "eqn.y"
1153 { yyval.str = yyvsp[0].str; }
1154 break;
1155 case 72:
1156 #line 324 "eqn.y"
1157 { yyval.str = yyvsp[0].str; }
1158 break;
1159 case 73:
1160 #line 326 "eqn.y"
1161 { yyval.str = strsave("{"); }
1162 break;
1163 case 74:
1164 #line 328 "eqn.y"
1165 { yyval.str = strsave("}"); }
1166 break;
1167 #line 1168 "y.tab.c"
1169 yyssp -= yym;
1170 yystate = *yyssp;
1171 yyvsp -= yym;
1172 yym = yylhs[yyn];
1173 if (yystate == 0 && yym == 0)
1175 #if YYDEBUG
1176 if (yydebug)
1177 printf("yydebug: after reduction, shifting from state 0 to\
1178 state %d\n", YYFINAL);
1179 #endif
1180 yystate = YYFINAL;
1181 *++yyssp = YYFINAL;
1182 *++yyvsp = yyval;
1183 if (yychar < 0)
1185 if ((yychar = yylex()) < 0) yychar = 0;
1186 #if YYDEBUG
1187 if (yydebug)
1189 yys = 0;
1190 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
1191 if (!yys) yys = "illegal-symbol";
1192 printf("yydebug: state %d, reading %d (%s)\n",
1193 YYFINAL, yychar, yys);
1195 #endif
1197 if (yychar == 0) goto yyaccept;
1198 goto yyloop;
1200 if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
1201 yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
1202 yystate = yytable[yyn];
1203 else
1204 yystate = yydgoto[yym];
1205 #if YYDEBUG
1206 if (yydebug)
1207 printf("yydebug: after reduction, shifting from state %d \
1208 to state %d\n", *yyssp, yystate);
1209 #endif
1210 if (yyssp >= yysse)
1212 int depth = yyssp - yyss;
1213 if (yygrow () != 0)
1214 goto yyoverflow;
1215 yysse = yyss + yystacksize - 1;
1216 yyssp = yyss + depth;
1217 yyvsp = yyvs + depth;
1219 *++yyssp = yystate;
1220 *++yyvsp = yyval;
1221 goto yyloop;
1222 yyoverflow:
1223 yyerror("yacc stack overflow");
1224 yyabort:
1225 return (1);
1226 yyaccept:
1227 return (0);
1230 static int
1231 yygrow ()
1233 int old_stacksize = yystacksize;
1234 short *new_yyss;
1235 YYSTYPE *new_yyvs;
1237 if (yystacksize >= YYMAXDEPTH)
1238 return (1);
1239 yystacksize *= 2;
1240 if (yystacksize > YYMAXDEPTH)
1241 yystacksize = YYMAXDEPTH;
1242 #if YYDEBUG
1243 if (yydebug)
1244 printf("yydebug: growing stack size from %d to %d\n",
1245 old_stacksize, yystacksize);
1246 #endif
1247 new_yyss = (short *) yyrealloc (yyss, yystacksize * sizeof (short));
1248 if (new_yyss == 0)
1249 return (1);
1250 new_yyvs = (YYSTYPE *) yyrealloc (yyvs, yystacksize * sizeof (YYSTYPE));
1251 if (new_yyvs == 0)
1253 yyfree (new_yyss);
1254 return (1);
1256 yyss = new_yyss;
1257 yyvs = new_yyvs;
1258 return (0);
1261 static YYPTR
1262 YYDEFUN (yymalloc, (bytes), unsigned bytes)
1264 YYPTR ptr = (YYPTR) malloc (bytes);
1265 if (ptr != 0) return (ptr);
1266 yyerror ("yyparse: memory exhausted");
1267 return (0);
1270 static YYPTR
1271 YYDEFUN (yyrealloc, (old, bytes), YYPTR old YYAND unsigned bytes)
1273 YYPTR ptr = (YYPTR) realloc (old, bytes);
1274 if (ptr != 0) return (ptr);
1275 yyerror ("yyparse: memory exhausted");
1276 return (0);