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