Annotation of OpenXM_contrib2/asir2000/parse/y.tab.c, Revision 1.1.1.1
1.1 noro 1: #ifndef lint
2: static char const yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
3: #endif
4: #include <stdlib.h>
5: #define YYBYACC 1
6: #define YYMAJOR 1
7: #define YYMINOR 9
8: #define YYLEX yylex()
9: #define YYEMPTY -1
10: #define yyclearin (yychar=(YYEMPTY))
11: #define yyerrok (yyerrflag=0)
12: #define YYRECOVERING (yyerrflag!=0)
13: #if defined(c_plusplus) || defined(__cplusplus)
14: #include <stdlib.h>
15: #else
16: extern char *getenv();
17: extern void *realloc();
18: #endif
19: static int yygrowstack();
20: #define YYPREFIX "yy"
21: #line 3 "parse.y"
22: #define malloc(x) GC_malloc(x)
23: #define realloc(x,y) GC_realloc(x,y)
24: #define free(x) GC_free(x)
25:
26: #if defined(THINK_C)
27: #define alloca(x) GC_malloc(x)
28: #endif
29: #if defined(TOWNS)
30: #include <alloca.h>
31: #endif
32: #include <ctype.h>
33: #include "ca.h"
34: #if !defined(THINK_C)
35: #include <sys/types.h>
36: #include <sys/stat.h>
37: #endif
38: #include "parse.h"
39:
40: #define NOPR (prresult=0)
41:
42: extern int gdef;
43: extern SNODE parse_snode;
44: extern int main_parser;
45:
46: int prresult;
47:
48: static int ind;
49: static FNODE t;
50: static NODE a,b;
51: static NODE2 a2;
52: static pointer val;
53: extern jmp_buf env;
54: #line 39 "parse.y"
55: typedef union {
56: FNODE f;
57: SNODE s;
58: NODE n;
59: NODE2 n2;
60: int i;
61: pointer p;
62: } YYSTYPE;
63: #line 64 "y.tab.c"
64: #define STRUCT 257
65: #define POINT 258
66: #define NEWSTRUCT 259
67: #define ANS 260
68: #define FDEF 261
69: #define PFDEF 262
70: #define GLOBAL 263
71: #define CMP 264
72: #define OR 265
73: #define AND 266
74: #define CAR 267
75: #define CDR 268
76: #define DO 269
77: #define WHILE 270
78: #define FOR 271
79: #define IF 272
80: #define ELSE 273
81: #define BREAK 274
82: #define RETURN 275
83: #define CONTINUE 276
84: #define PARIF 277
85: #define MAP 278
86: #define TIMER 279
87: #define GF2NGEN 280
88: #define GFPNGEN 281
89: #define GETOPT 282
90: #define FOP_AND 283
91: #define FOP_OR 284
92: #define FOP_IMPL 285
93: #define FOP_REPL 286
94: #define FOP_EQUIV 287
95: #define FOP_NOT 288
96: #define LOP 289
97: #define FORMULA 290
98: #define UCASE 291
99: #define LCASE 292
100: #define STR 293
101: #define SELF 294
102: #define BOPASS 295
103: #define PLUS 296
104: #define MINUS 297
105: #define YYERRCODE 256
106: const short yylhs[] = { -1,
107: 0, 6, 16, 17, 6, 6, 6, 6, 6, 6,
108: 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
109: 6, 18, 6, 6, 15, 15, 1, 1, 7, 12,
110: 12, 12, 13, 13, 11, 11, 8, 8, 9, 9,
111: 10, 10, 14, 14, 2, 2, 5, 4, 4, 4,
112: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
113: 4, 4, 4, 4, 4, 4, 4, 3, 3, 3,
114: 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
115: 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
116: 3, 3, 3, 3, 3, 3,
117: };
118: const short yylen[] = { 2,
119: 1, 1, 0, 0, 5, 6, 7, 4, 2, 1,
120: 2, 2, 2, 3, 5, 7, 9, 5, 7, 8,
121: 5, 0, 10, 2, 1, 1, 0, 1, 3, 0,
122: 3, 5, 1, 3, 1, 3, 0, 2, 0, 1,
123: 1, 3, 1, 3, 1, 1, 3, 1, 1, 1,
124: 1, 1, 1, 4, 6, 7, 4, 6, 8, 6,
125: 7, 4, 4, 3, 1, 4, 3, 1, 5, 3,
126: 3, 2, 2, 3, 2, 2, 3, 3, 3, 3,
127: 3, 3, 3, 2, 3, 3, 2, 3, 3, 3,
128: 3, 3, 3, 5, 3, 4,
129: };
130: const short yydefred[] = { 0,
131: 0, 0, 0, 50, 0, 0, 3, 0, 0, 0,
132: 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,
133: 52, 0, 0, 49, 65, 0, 48, 0, 0, 0,
134: 0, 37, 0, 25, 26, 0, 0, 0, 0, 0,
135: 1, 10, 2, 24, 45, 46, 0, 0, 22, 0,
136: 0, 0, 0, 0, 0, 0, 0, 11, 0, 0,
137: 13, 12, 0, 0, 0, 0, 0, 0, 0, 0,
138: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
139: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
140: 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
141: 9, 0, 0, 35, 30, 0, 0, 0, 0, 0,
142: 0, 0, 0, 0, 0, 0, 0, 14, 0, 0,
143: 0, 0, 0, 0, 29, 38, 0, 0, 64, 74,
144: 0, 95, 0, 0, 0, 0, 0, 0, 0, 0,
145: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
146: 67, 0, 0, 0, 8, 96, 0, 0, 0, 62,
147: 63, 0, 0, 0, 0, 0, 0, 0, 0, 57,
148: 0, 0, 0, 0, 0, 0, 0, 66, 0, 0,
149: 33, 0, 36, 0, 21, 5, 0, 18, 0, 0,
150: 54, 0, 0, 0, 0, 0, 0, 43, 0, 0,
151: 0, 0, 0, 0, 0, 6, 0, 31, 0, 0,
152: 0, 0, 60, 58, 0, 0, 0, 0, 55, 0,
153: 0, 0, 7, 34, 28, 0, 19, 0, 16, 0,
154: 56, 0, 0, 44, 61, 32, 37, 0, 59, 20,
155: 0, 17, 23,
156: };
157: const short yydgoto[] = { 38,
158: 226, 181, 78, 40, 198, 126, 42, 74, 79, 80,
159: 106, 153, 182, 199, 43, 51, 159, 108,
160: };
161: const short yysindex[] = { 119,
162: 3, -214, -16, 0, -288, -275, 0, 8, 18, 119,
163: 25, 29, 32, 3, 155, 3, 34, 41, 42, 0,
164: 0, 44, 458, 0, 0, -25, 0, 458, 458, 458,
165: 458, 0, 193, 0, 0, 458, 458, 0, 1376, -84,
166: 0, 0, 0, 0, 0, 0, -114, -214, 0, 46,
167: -201, 458, 458, -179, 458, 458, 458, 0, -20, 1376,
168: 0, 0, -195, -187, 458, -214, 2001, 458, 458, -186,
169: 12, 12, -186, 40, -214, 458, 1522, 1943, 17, 63,
170: 47, 458, 458, 458, 458, 458, 458, 458, 458, 458,
171: 0, 458, 458, 458, 458, 458, 458, 458, 458, 458,
172: 0, -214, 458, 0, 0, 7, 70, 72, 458, 71,
173: 1675, 1733, 74, 76, 62, 86, 458, 0, 84, 92,
174: 1776, 96, 19, -31, 0, 0, 101, 1789, 0, 0,
175: 458, 0, -7, 600, 987, 467, 2118, 2056, 1860, 720,
176: 757, 1943, 12, 12, -92, -92, -92, -92, 1943, 1826,
177: 0, 1853, -122, -148, 0, 0, 458, 104, 3, 0,
178: 0, 458, 119, 458, 119, 6, 458, 458, 458, 0,
179: 106, 90, -214, 2037, 109, 1943, 458, 0, -214, -17,
180: 0, 20, 0, 110, 0, 0, 113, 0, 97, -116,
181: 0, 117, 120, 1887, 458, 99, 105, 0, -28, 422,
182: -84, 458, 1988, -214, 7, 0, -214, 0, -125, 3,
183: 458, 119, 0, 0, 458, 132, 458, 458, 0, -214,
184: 135, 20, 0, 0, 0, 57, 0, 141, 0, 1930,
185: 0, 1376, 1943, 0, 0, 0, 0, 119, 0, 0,
186: 80, 0, 0,
187: };
188: const short yyrindex[] = { 0,
189: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
190: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
191: 0, 0, 0, 0, 0, 1100, 0, 0, 0, 0,
192: 0, 0, 0, 0, 0, 93, 121, 0, 0, 526,
193: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
194: 0, 0, 0, 0, 146, 137, 146, 0, 489, 0,
195: 0, 0, 0, 0, 0, 0, -30, 79, 14, 818,
196: 1032, 1209, 846, 0, 0, 0, 0, 88, 0, 435,
197: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
198: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199: 0, 0, 0, 0, 0, 0, 0, 0, 146, 16,
200: 0, 0, 0, 0, 0, 0, 14, 0, 0, 0,
201: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
202: 0, 0, 1418, 1477, 1464, -36, 1424, 131, 1631, 605,
203: 1571, 60, 1267, 1309, 886, 914, 954, 999, 1149, 0,
204: 0, 0, 0, 0, 0, 0, 146, 0, 0, 0,
205: 0, 146, 0, 137, 0, 0, 146, 146, 0, 0,
206: 0, 1361, 0, 0, 0, 397, 0, 0, 0, 0,
207: 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
208: 0, 0, 0, 0, 146, 0, 0, 0, 0, 0,
209: 563, 146, 9, 0, 0, 0, 0, 0, 78, 0,
210: 146, 0, 0, 0, 0, 0, 0, 0, 0, 0,
211: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
212: 0, 0, -23, 0, 0, 0, 0, 0, 0, 0,
213: 0, 0, 0,
214: };
215: const short yygindex[] = { 0,
216: 0, 694, 2334, 23, -21, 468, 0, -29, 2398, 0,
217: -39, 0, 2, 0, 2309, 0, 0, 0,
218: };
219: #define YYTABLESIZE 2609
220: const short yytable[] = { 88,
221: 15, 97, 180, 49, 88, 87, 103, 88, 105, 172,
222: 87, 110, 219, 87, 69, 220, 50, 47, 35, 117,
223: 47, 88, 88, 48, 88, 88, 88, 87, 87, 98,
224: 87, 87, 87, 15, 95, 93, 15, 94, 35, 96,
225: 15, 34, 35, 15, 94, 15, 191, 52, 98, 94,
226: 154, 4, 94, 95, 39, 35, 88, 53, 96, 15,
227: 15, 34, 87, 207, 55, 34, 94, 94, 56, 94,
228: 94, 57, 31, 63, 4, 35, 45, 46, 34, 33,
229: 64, 65, 29, 66, 30, 109, 97, 88, 88, 104,
230: 113, 15, 173, 87, 87, 71, 119, 68, 34, 37,
231: 71, 94, 68, 71, 120, 97, 131, 91, 132, 130,
232: 156, 157, 31, 162, 154, 35, 163, 71, 71, 33,
233: 164, 71, 29, 15, 30, 15, 165, 167, 41, 173,
234: 36, 41, 94, 94, 179, 168, 170, 39, 34, 37,
235: 205, 174, 183, 171, 185, 195, 41, 196, 202, 41,
236: 209, 31, 71, 210, 35, 211, 212, 213, 33, 217,
237: 214, 29, 32, 30, 125, 218, 90, 225, 45, 46,
238: 36, 90, 231, 102, 90, 235, 104, 34, 37, 237,
239: 41, 238, 39, 71, 71, 39, 39, 31, 90, 90,
240: 35, 90, 90, 90, 33, 39, 201, 29, 234, 30,
241: 27, 91, 32, 39, 243, 222, 0, 241, 0, 36,
242: 0, 41, 41, 34, 37, 0, 0, 0, 0, 0,
243: 0, 0, 0, 90, 0, 31, 0, 0, 0, 0,
244: 0, 0, 33, 0, 76, 29, 0, 30, 0, 0,
245: 0, 32, 0, 0, 0, 36, 88, 88, 88, 88,
246: 88, 0, 37, 0, 90, 90, 15, 15, 88, 15,
247: 15, 15, 15, 15, 87, 0, 0, 15, 15, 15,
248: 15, 15, 15, 104, 15, 15, 15, 15, 15, 15,
249: 15, 15, 15, 36, 0, 0, 91, 0, 15, 0,
250: 15, 15, 15, 15, 15, 1, 2, 0, 3, 4,
251: 5, 6, 7, 94, 0, 91, 8, 9, 10, 11,
252: 12, 13, 0, 14, 15, 16, 17, 18, 19, 20,
253: 21, 22, 0, 0, 0, 0, 0, 23, 0, 24,
254: 25, 26, 27, 28, 0, 1, 2, 0, 3, 4,
255: 5, 6, 7, 0, 0, 0, 8, 9, 10, 11,
256: 12, 13, 0, 14, 15, 16, 17, 18, 19, 20,
257: 21, 22, 0, 0, 0, 0, 0, 23, 0, 24,
258: 25, 26, 27, 28, 1, 2, 0, 3, 4, 5,
259: 6, 7, 0, 0, 0, 8, 9, 10, 11, 12,
260: 13, 0, 14, 15, 16, 17, 18, 19, 20, 21,
261: 22, 0, 0, 0, 0, 0, 23, 0, 24, 25,
262: 26, 27, 28, 3, 4, 90, 90, 90, 0, 0,
263: 0, 8, 9, 0, 0, 90, 0, 0, 0, 0,
264: 0, 17, 18, 19, 20, 21, 22, 42, 0, 0,
265: 42, 0, 23, 0, 24, 25, 59, 27, 28, 75,
266: 0, 3, 4, 0, 31, 42, 0, 0, 42, 8,
267: 9, 33, 0, 76, 29, 0, 30, 41, 0, 17,
268: 18, 19, 20, 21, 22, 40, 0, 54, 0, 0,
269: 23, 37, 24, 25, 59, 27, 28, 0, 0, 42,
270: 31, 0, 0, 40, 0, 0, 40, 33, 0, 0,
271: 29, 0, 30, 98, 0, 0, 0, 0, 95, 93,
272: 0, 94, 36, 96, 0, 0, 0, 37, 0, 0,
273: 42, 42, 0, 0, 53, 53, 0, 40, 0, 53,
274: 53, 53, 53, 53, 0, 53, 0, 0, 0, 0,
275: 0, 0, 0, 0, 0, 0, 53, 53, 36, 53,
276: 53, 53, 0, 0, 0, 0, 0, 0, 40, 40,
277: 97, 68, 68, 0, 0, 0, 68, 68, 68, 68,
278: 68, 0, 68, 0, 0, 0, 0, 0, 0, 53,
279: 0, 53, 53, 68, 68, 0, 68, 68, 68, 0,
280: 0, 0, 0, 0, 0, 0, 0, 0, 69, 69,
281: 0, 0, 0, 69, 69, 69, 69, 69, 0, 69,
282: 0, 0, 53, 53, 0, 0, 0, 0, 68, 68,
283: 69, 69, 0, 69, 69, 69, 0, 0, 0, 0,
284: 188, 0, 190, 0, 0, 0, 98, 0, 0, 0,
285: 92, 95, 93, 0, 94, 92, 96, 0, 92, 68,
286: 68, 0, 0, 0, 0, 69, 69, 0, 0, 0,
287: 0, 0, 92, 92, 0, 92, 92, 92, 0, 0,
288: 0, 0, 0, 0, 0, 0, 0, 0, 0, 229,
289: 3, 4, 0, 0, 0, 0, 69, 69, 8, 9,
290: 0, 0, 0, 97, 0, 47, 0, 92, 17, 18,
291: 19, 20, 21, 22, 0, 242, 0, 0, 0, 23,
292: 0, 24, 25, 59, 27, 28, 3, 4, 0, 0,
293: 0, 0, 0, 0, 8, 9, 0, 0, 92, 92,
294: 82, 83, 84, 0, 17, 18, 19, 20, 21, 22,
295: 0, 107, 0, 0, 0, 23, 53, 24, 25, 59,
296: 27, 28, 53, 53, 53, 90, 98, 0, 0, 122,
297: 91, 95, 93, 0, 94, 0, 96, 0, 127, 0,
298: 0, 53, 53, 53, 53, 53, 0, 53, 0, 0,
299: 0, 0, 53, 53, 0, 0, 0, 0, 0, 68,
300: 68, 68, 0, 98, 0, 151, 0, 0, 95, 93,
301: 0, 94, 0, 96, 0, 0, 0, 0, 68, 68,
302: 68, 68, 68, 97, 68, 0, 0, 0, 0, 68,
303: 68, 0, 0, 0, 0, 0, 69, 69, 69, 0,
304: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
305: 0, 0, 0, 0, 0, 69, 69, 69, 69, 69,
306: 97, 69, 0, 73, 73, 0, 69, 69, 73, 73,
307: 73, 73, 73, 82, 73, 84, 197, 0, 0, 0,
308: 0, 0, 204, 0, 0, 73, 73, 0, 73, 73,
309: 73, 84, 84, 0, 0, 0, 84, 84, 84, 84,
310: 84, 92, 84, 91, 0, 0, 0, 0, 0, 92,
311: 224, 0, 0, 84, 84, 0, 84, 84, 84, 0,
312: 73, 73, 0, 197, 0, 0, 0, 0, 0, 0,
313: 0, 79, 79, 0, 0, 0, 79, 79, 79, 79,
314: 79, 0, 79, 0, 0, 0, 0, 0, 84, 84,
315: 0, 73, 73, 79, 79, 0, 79, 79, 79, 80,
316: 80, 0, 0, 0, 80, 80, 80, 80, 80, 0,
317: 80, 0, 0, 0, 0, 0, 0, 0, 0, 84,
318: 84, 80, 80, 0, 80, 80, 80, 0, 79, 0,
319: 0, 0, 0, 82, 83, 84, 0, 0, 0, 82,
320: 82, 0, 0, 0, 82, 82, 82, 82, 82, 0,
321: 82, 0, 85, 86, 87, 88, 80, 0, 90, 79,
322: 79, 82, 82, 91, 82, 82, 82, 0, 0, 0,
323: 82, 83, 84, 98, 0, 0, 0, 0, 95, 93,
324: 0, 94, 0, 96, 81, 81, 0, 80, 80, 81,
325: 81, 81, 81, 81, 0, 81, 82, 0, 0, 0,
326: 91, 0, 0, 0, 0, 0, 81, 81, 0, 81,
327: 81, 81, 0, 0, 0, 0, 0, 75, 0, 0,
328: 0, 0, 75, 0, 75, 75, 75, 82, 82, 0,
329: 97, 73, 73, 73, 0, 0, 0, 0, 0, 75,
330: 75, 81, 75, 75, 75, 0, 0, 0, 0, 0,
331: 73, 73, 73, 73, 73, 0, 73, 0, 0, 84,
332: 84, 84, 73, 0, 0, 0, 0, 0, 0, 0,
333: 0, 0, 81, 81, 75, 0, 0, 0, 84, 84,
334: 84, 84, 84, 0, 84, 53, 53, 0, 0, 0,
335: 84, 53, 53, 0, 53, 0, 53, 0, 0, 79,
336: 79, 79, 0, 0, 0, 75, 75, 0, 53, 0,
337: 53, 0, 53, 0, 0, 0, 0, 0, 79, 79,
338: 79, 79, 79, 0, 79, 0, 0, 80, 80, 80,
339: 79, 0, 0, 0, 70, 0, 0, 0, 0, 70,
340: 53, 0, 70, 53, 0, 0, 80, 80, 80, 80,
341: 80, 0, 80, 0, 0, 0, 70, 70, 80, 0,
342: 70, 0, 0, 0, 0, 0, 0, 82, 82, 82,
343: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
344: 0, 0, 0, 0, 0, 0, 82, 82, 82, 82,
345: 82, 70, 82, 0, 76, 0, 0, 0, 82, 76,
346: 82, 76, 76, 76, 0, 0, 0, 0, 0, 0,
347: 0, 0, 81, 81, 81, 0, 76, 76, 0, 76,
348: 76, 76, 70, 70, 0, 0, 0, 0, 0, 0,
349: 91, 81, 81, 81, 81, 81, 0, 81, 0, 0,
350: 0, 0, 0, 81, 0, 75, 75, 75, 0, 0,
351: 0, 76, 77, 0, 0, 0, 0, 77, 0, 77,
352: 77, 77, 0, 0, 75, 75, 75, 75, 75, 0,
353: 75, 0, 0, 0, 77, 77, 75, 77, 77, 77,
354: 0, 0, 76, 76, 0, 0, 0, 0, 0, 0,
355: 0, 0, 0, 0, 78, 0, 0, 0, 0, 78,
356: 0, 78, 78, 78, 0, 0, 0, 53, 0, 77,
357: 0, 0, 0, 53, 53, 53, 78, 78, 0, 78,
358: 78, 78, 0, 0, 0, 0, 0, 0, 0, 0,
359: 0, 0, 53, 53, 53, 53, 53, 0, 53, 0,
360: 77, 77, 0, 53, 53, 0, 54, 54, 0, 0,
361: 0, 78, 54, 54, 0, 54, 0, 54, 0, 0,
362: 0, 35, 98, 0, 0, 0, 0, 95, 93, 54,
363: 94, 54, 96, 54, 0, 0, 0, 0, 0, 0,
364: 0, 0, 78, 78, 34, 0, 99, 0, 100, 0,
365: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
366: 0, 54, 0, 83, 54, 0, 0, 0, 83, 89,
367: 0, 83, 0, 0, 89, 0, 0, 89, 0, 97,
368: 0, 0, 76, 76, 76, 83, 83, 0, 83, 83,
369: 83, 89, 89, 0, 89, 89, 89, 0, 0, 0,
370: 0, 76, 76, 76, 76, 76, 0, 76, 0, 86,
371: 0, 0, 0, 76, 86, 0, 0, 86, 0, 0,
372: 83, 0, 85, 0, 0, 0, 89, 85, 0, 0,
373: 85, 86, 86, 0, 86, 86, 86, 0, 0, 0,
374: 77, 77, 77, 0, 85, 85, 0, 85, 85, 85,
375: 0, 83, 83, 0, 0, 0, 0, 89, 89, 77,
376: 77, 77, 77, 77, 0, 77, 86, 0, 98, 0,
377: 0, 77, 129, 95, 93, 0, 94, 0, 96, 85,
378: 0, 0, 78, 78, 78, 0, 0, 0, 0, 0,
379: 0, 0, 99, 0, 100, 0, 0, 86, 86, 0,
380: 0, 78, 78, 78, 78, 78, 0, 78, 0, 0,
381: 85, 85, 0, 78, 0, 0, 93, 0, 0, 0,
382: 0, 93, 0, 0, 93, 97, 0, 0, 54, 0,
383: 0, 0, 0, 0, 54, 54, 54, 0, 93, 93,
384: 0, 93, 93, 93, 0, 0, 0, 0, 0, 82,
385: 83, 84, 0, 54, 54, 54, 54, 54, 0, 54,
386: 0, 0, 0, 0, 54, 54, 0, 0, 85, 86,
387: 87, 88, 89, 93, 90, 0, 91, 0, 0, 91,
388: 92, 91, 0, 0, 91, 0, 0, 0, 0, 0,
389: 0, 83, 83, 83, 0, 0, 0, 0, 91, 91,
390: 0, 91, 91, 91, 93, 93, 0, 0, 0, 0,
391: 83, 83, 83, 83, 83, 0, 83, 89, 89, 89,
392: 89, 98, 83, 0, 0, 160, 95, 93, 89, 94,
393: 0, 96, 0, 91, 0, 0, 0, 0, 86, 86,
394: 0, 0, 0, 0, 0, 99, 0, 100, 0, 0,
395: 0, 85, 0, 0, 0, 0, 86, 86, 86, 86,
396: 86, 0, 86, 0, 91, 91, 0, 0, 86, 85,
397: 85, 85, 85, 85, 0, 85, 0, 0, 97, 98,
398: 0, 85, 0, 161, 95, 93, 0, 94, 0, 96,
399: 0, 0, 0, 0, 0, 82, 83, 84, 0, 0,
400: 0, 0, 0, 99, 0, 100, 0, 0, 0, 0,
401: 0, 0, 0, 0, 85, 86, 87, 88, 89, 0,
402: 90, 0, 98, 0, 0, 91, 92, 95, 93, 169,
403: 94, 0, 96, 0, 0, 98, 97, 0, 0, 175,
404: 95, 93, 0, 94, 0, 96, 99, 0, 100, 0,
405: 0, 0, 0, 0, 0, 0, 0, 0, 0, 99,
406: 0, 100, 0, 93, 93, 93, 93, 93, 0, 93,
407: 0, 0, 98, 0, 0, 93, 0, 95, 93, 97,
408: 94, 0, 96, 0, 0, 0, 0, 0, 0, 0,
409: 0, 0, 97, 177, 0, 0, 99, 0, 100, 98,
410: 0, 0, 0, 0, 95, 93, 98, 94, 0, 96,
411: 0, 95, 93, 0, 94, 0, 96, 0, 0, 0,
412: 0, 0, 0, 99, 0, 100, 91, 91, 0, 97,
413: 0, 0, 0, 98, 0, 91, 0, 0, 95, 93,
414: 215, 94, 0, 96, 0, 0, 0, 0, 82, 83,
415: 84, 0, 0, 0, 0, 178, 97, 99, 0, 100,
416: 0, 0, 0, 97, 0, 0, 0, 85, 86, 87,
417: 88, 89, 0, 90, 0, 0, 98, 0, 91, 92,
418: 239, 95, 93, 0, 94, 0, 96, 0, 0, 98,
419: 97, 0, 0, 0, 95, 93, 0, 94, 0, 96,
420: 99, 0, 100, 0, 0, 0, 82, 83, 84, 0,
421: 0, 0, 0, 99, 0, 100, 0, 0, 0, 0,
422: 0, 0, 0, 0, 0, 85, 86, 87, 88, 89,
423: 0, 90, 0, 97, 98, 0, 91, 92, 0, 95,
424: 93, 0, 94, 0, 96, 0, 97, 98, 0, 82,
425: 83, 84, 95, 93, 0, 94, 0, 96, 0, 0,
426: 100, 0, 82, 83, 84, 0, 0, 0, 85, 86,
427: 87, 88, 89, 0, 90, 0, 0, 0, 0, 91,
428: 92, 85, 86, 87, 88, 89, 200, 90, 0, 0,
429: 0, 97, 91, 92, 0, 0, 0, 0, 0, 82,
430: 83, 84, 98, 0, 97, 0, 0, 95, 93, 0,
431: 94, 0, 96, 0, 0, 0, 0, 0, 85, 86,
432: 87, 88, 89, 0, 90, 0, 82, 83, 84, 91,
433: 92, 0, 0, 82, 83, 84, 0, 0, 0, 0,
434: 0, 0, 0, 0, 0, 85, 86, 87, 88, 89,
435: 0, 90, 85, 86, 87, 0, 91, 92, 90, 97,
436: 82, 83, 84, 91, 98, 0, 0, 0, 0, 95,
437: 93, 0, 94, 0, 96, 0, 0, 0, 0, 85,
438: 86, 87, 88, 89, 0, 90, 0, 0, 0, 0,
439: 91, 92, 0, 0, 0, 0, 0, 0, 0, 0,
440: 0, 0, 0, 82, 83, 84, 0, 0, 0, 0,
441: 0, 0, 0, 0, 0, 0, 82, 83, 84, 0,
442: 0, 97, 85, 86, 87, 88, 89, 0, 90, 0,
443: 0, 0, 0, 91, 92, 85, 86, 87, 88, 89,
444: 0, 90, 0, 0, 0, 0, 91, 92, 0, 0,
445: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
446: 0, 82, 83, 84, 0, 0, 0, 0, 0, 0,
447: 0, 0, 0, 0, 82, 83, 84, 0, 0, 0,
448: 85, 86, 87, 88, 89, 0, 90, 0, 0, 0,
449: 0, 91, 0, 85, 86, 87, 88, 89, 0, 90,
450: 0, 0, 0, 0, 91, 0, 4, 0, 0, 0,
451: 0, 0, 0, 8, 9, 0, 0, 0, 0, 44,
452: 0, 0, 0, 17, 18, 19, 20, 21, 22, 82,
453: 83, 84, 58, 61, 62, 0, 24, 25, 59, 27,
454: 0, 0, 0, 39, 0, 0, 0, 0, 85, 86,
455: 0, 0, 0, 39, 90, 0, 0, 101, 60, 91,
456: 0, 0, 0, 0, 0, 0, 67, 0, 0, 0,
457: 0, 70, 71, 72, 73, 0, 77, 0, 118, 0,
458: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
459: 0, 82, 83, 84, 0, 111, 112, 0, 0, 0,
460: 0, 0, 0, 0, 0, 0, 0, 0, 121, 0,
461: 85, 0, 0, 0, 0, 0, 90, 39, 0, 128,
462: 0, 91, 0, 0, 155, 133, 134, 135, 136, 137,
463: 138, 139, 140, 141, 0, 142, 143, 144, 145, 146,
464: 147, 148, 149, 150, 81, 0, 152, 0, 0, 0,
465: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
466: 0, 0, 114, 115, 116, 0, 0, 0, 0, 0,
467: 0, 0, 0, 0, 176, 123, 124, 186, 0, 0,
468: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
469: 0, 0, 0, 0, 0, 0, 0, 0, 206, 0,
470: 208, 0, 0, 0, 0, 0, 39, 0, 39, 0,
471: 0, 0, 194, 0, 0, 0, 158, 0, 0, 0,
472: 203, 0, 0, 223, 166, 0, 0, 0, 227, 0,
473: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
474: 236, 0, 0, 77, 0, 0, 0, 0, 0, 0,
475: 240, 0, 0, 0, 0, 39, 0, 0, 230, 0,
476: 232, 233, 0, 0, 184, 0, 0, 0, 0, 187,
477: 0, 189, 0, 0, 192, 193, 0, 0, 0, 0,
478: 0, 39, 0, 0, 39, 0, 0, 0, 0, 0,
479: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
480: 0, 0, 216, 0, 0, 0, 0, 0, 0, 221,
481: 0, 0, 0, 0, 0, 0, 0, 0, 228,
482: };
483: const short yycheck[] = { 36,
484: 0, 94, 125, 292, 41, 36, 91, 44, 123, 41,
485: 41, 51, 41, 44, 40, 44, 292, 41, 36, 40,
486: 44, 58, 59, 40, 61, 62, 63, 58, 59, 37,
487: 61, 62, 63, 33, 42, 43, 36, 45, 36, 47,
488: 40, 59, 36, 43, 36, 45, 41, 40, 37, 41,
489: 44, 36, 44, 42, 41, 36, 93, 40, 47, 59,
490: 60, 59, 93, 44, 40, 59, 58, 59, 40, 61,
491: 62, 40, 33, 40, 59, 36, 291, 292, 59, 40,
492: 40, 40, 43, 40, 45, 40, 94, 124, 125, 291,
493: 270, 91, 124, 124, 125, 36, 292, 123, 59, 60,
494: 41, 93, 123, 44, 292, 94, 44, 294, 62, 93,
495: 41, 40, 33, 40, 44, 36, 41, 58, 59, 40,
496: 59, 62, 43, 123, 45, 125, 41, 44, 41, 124,
497: 91, 44, 124, 125, 257, 44, 41, 124, 59, 60,
498: 180, 41, 291, 125, 41, 40, 59, 58, 40, 62,
499: 41, 33, 93, 41, 36, 59, 273, 41, 40, 61,
500: 41, 43, 123, 45, 125, 61, 36, 293, 291, 292,
501: 91, 41, 41, 258, 44, 41, 291, 59, 60, 123,
502: 93, 41, 62, 124, 125, 93, 41, 33, 58, 59,
503: 36, 61, 62, 63, 40, 59, 174, 43, 220, 45,
504: 123, 294, 123, 125, 125, 204, -1, 237, -1, 91,
505: -1, 124, 125, 59, 60, -1, -1, -1, -1, -1,
506: -1, -1, -1, 93, -1, 33, -1, -1, -1, -1,
507: -1, -1, 40, -1, 42, 43, -1, 45, -1, -1,
508: -1, 123, -1, -1, -1, 91, 283, 284, 285, 286,
509: 287, -1, 60, -1, 124, 125, 256, 257, 295, 259,
510: 260, 261, 262, 263, 295, -1, -1, 267, 268, 269,
511: 270, 271, 272, 291, 274, 275, 276, 277, 278, 279,
512: 280, 281, 282, 91, -1, -1, 294, -1, 288, -1,
513: 290, 291, 292, 293, 294, 256, 257, -1, 259, 260,
514: 261, 262, 263, 295, -1, 294, 267, 268, 269, 270,
515: 271, 272, -1, 274, 275, 276, 277, 278, 279, 280,
516: 281, 282, -1, -1, -1, -1, -1, 288, -1, 290,
517: 291, 292, 293, 294, -1, 256, 257, -1, 259, 260,
518: 261, 262, 263, -1, -1, -1, 267, 268, 269, 270,
519: 271, 272, -1, 274, 275, 276, 277, 278, 279, 280,
520: 281, 282, -1, -1, -1, -1, -1, 288, -1, 290,
521: 291, 292, 293, 294, 256, 257, -1, 259, 260, 261,
522: 262, 263, -1, -1, -1, 267, 268, 269, 270, 271,
523: 272, -1, 274, 275, 276, 277, 278, 279, 280, 281,
524: 282, -1, -1, -1, -1, -1, 288, -1, 290, 291,
525: 292, 293, 294, 259, 260, 285, 286, 287, -1, -1,
526: -1, 267, 268, -1, -1, 295, -1, -1, -1, -1,
527: -1, 277, 278, 279, 280, 281, 282, 41, -1, -1,
528: 44, -1, 288, -1, 290, 291, 292, 293, 294, 257,
529: -1, 259, 260, -1, 33, 59, -1, -1, 62, 267,
530: 268, 40, -1, 42, 43, -1, 45, 0, -1, 277,
531: 278, 279, 280, 281, 282, 41, -1, 10, -1, -1,
532: 288, 60, 290, 291, 292, 293, 294, -1, -1, 93,
533: 33, -1, -1, 59, -1, -1, 62, 40, -1, -1,
534: 43, -1, 45, 37, -1, -1, -1, -1, 42, 43,
535: -1, 45, 91, 47, -1, -1, -1, 60, -1, -1,
536: 124, 125, -1, -1, 36, 37, -1, 93, -1, 41,
537: 42, 43, 44, 45, -1, 47, -1, -1, -1, -1,
538: -1, -1, -1, -1, -1, -1, 58, 59, 91, 61,
539: 62, 63, -1, -1, -1, -1, -1, -1, 124, 125,
540: 94, 36, 37, -1, -1, -1, 41, 42, 43, 44,
541: 45, -1, 47, -1, -1, -1, -1, -1, -1, 91,
542: -1, 93, 94, 58, 59, -1, 61, 62, 63, -1,
543: -1, -1, -1, -1, -1, -1, -1, -1, 36, 37,
544: -1, -1, -1, 41, 42, 43, 44, 45, -1, 47,
545: -1, -1, 124, 125, -1, -1, -1, -1, 93, 94,
546: 58, 59, -1, 61, 62, 63, -1, -1, -1, -1,
547: 163, -1, 165, -1, -1, -1, 37, -1, -1, -1,
548: 36, 42, 43, -1, 45, 41, 47, -1, 44, 124,
549: 125, -1, -1, -1, -1, 93, 94, -1, -1, -1,
550: -1, -1, 58, 59, -1, 61, 62, 63, -1, -1,
551: -1, -1, -1, -1, -1, -1, -1, -1, -1, 212,
552: 259, 260, -1, -1, -1, -1, 124, 125, 267, 268,
553: -1, -1, -1, 94, -1, 2, -1, 93, 277, 278,
554: 279, 280, 281, 282, -1, 238, -1, -1, -1, 288,
555: -1, 290, 291, 292, 293, 294, 259, 260, -1, -1,
556: -1, -1, -1, -1, 267, 268, -1, -1, 124, 125,
557: 264, 265, 266, -1, 277, 278, 279, 280, 281, 282,
558: -1, 48, -1, -1, -1, 288, 258, 290, 291, 292,
559: 293, 294, 264, 265, 266, 289, 37, -1, -1, 66,
560: 294, 42, 43, -1, 45, -1, 47, -1, 75, -1,
561: -1, 283, 284, 285, 286, 287, -1, 289, -1, -1,
562: -1, -1, 294, 295, -1, -1, -1, -1, -1, 264,
563: 265, 266, -1, 37, -1, 102, -1, -1, 42, 43,
564: -1, 45, -1, 47, -1, -1, -1, -1, 283, 284,
565: 285, 286, 287, 94, 289, -1, -1, -1, -1, 294,
566: 295, -1, -1, -1, -1, -1, 264, 265, 266, -1,
567: -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
568: -1, -1, -1, -1, -1, 283, 284, 285, 286, 287,
569: 94, 289, -1, 36, 37, -1, 294, 295, 41, 42,
570: 43, 44, 45, 264, 47, 266, 173, -1, -1, -1,
571: -1, -1, 179, -1, -1, 58, 59, -1, 61, 62,
572: 63, 36, 37, -1, -1, -1, 41, 42, 43, 44,
573: 45, 287, 47, 294, -1, -1, -1, -1, -1, 295,
574: 207, -1, -1, 58, 59, -1, 61, 62, 63, -1,
575: 93, 94, -1, 220, -1, -1, -1, -1, -1, -1,
576: -1, 36, 37, -1, -1, -1, 41, 42, 43, 44,
577: 45, -1, 47, -1, -1, -1, -1, -1, 93, 94,
578: -1, 124, 125, 58, 59, -1, 61, 62, 63, 36,
579: 37, -1, -1, -1, 41, 42, 43, 44, 45, -1,
580: 47, -1, -1, -1, -1, -1, -1, -1, -1, 124,
581: 125, 58, 59, -1, 61, 62, 63, -1, 93, -1,
582: -1, -1, -1, 264, 265, 266, -1, -1, -1, 36,
583: 37, -1, -1, -1, 41, 42, 43, 44, 45, -1,
584: 47, -1, 283, 284, 285, 286, 93, -1, 289, 124,
585: 125, 58, 59, 294, 61, 62, 63, -1, -1, -1,
586: 264, 265, 266, 37, -1, -1, -1, -1, 42, 43,
587: -1, 45, -1, 47, 36, 37, -1, 124, 125, 41,
588: 42, 43, 44, 45, -1, 47, 93, -1, -1, -1,
589: 294, -1, -1, -1, -1, -1, 58, 59, -1, 61,
590: 62, 63, -1, -1, -1, -1, -1, 36, -1, -1,
591: -1, -1, 41, -1, 43, 44, 45, 124, 125, -1,
592: 94, 264, 265, 266, -1, -1, -1, -1, -1, 58,
593: 59, 93, 61, 62, 63, -1, -1, -1, -1, -1,
594: 283, 284, 285, 286, 287, -1, 289, -1, -1, 264,
595: 265, 266, 295, -1, -1, -1, -1, -1, -1, -1,
596: -1, -1, 124, 125, 93, -1, -1, -1, 283, 284,
597: 285, 286, 287, -1, 289, 36, 37, -1, -1, -1,
598: 295, 42, 43, -1, 45, -1, 47, -1, -1, 264,
599: 265, 266, -1, -1, -1, 124, 125, -1, 59, -1,
600: 61, -1, 63, -1, -1, -1, -1, -1, 283, 284,
601: 285, 286, 287, -1, 289, -1, -1, 264, 265, 266,
602: 295, -1, -1, -1, 36, -1, -1, -1, -1, 41,
603: 91, -1, 44, 94, -1, -1, 283, 284, 285, 286,
604: 287, -1, 289, -1, -1, -1, 58, 59, 295, -1,
605: 62, -1, -1, -1, -1, -1, -1, 264, 265, 266,
606: -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
607: -1, -1, -1, -1, -1, -1, 283, 284, 285, 286,
608: 287, 93, 289, -1, 36, -1, -1, -1, 295, 41,
609: 264, 43, 44, 45, -1, -1, -1, -1, -1, -1,
610: -1, -1, 264, 265, 266, -1, 58, 59, -1, 61,
611: 62, 63, 124, 125, -1, -1, -1, -1, -1, -1,
612: 294, 283, 284, 285, 286, 287, -1, 289, -1, -1,
613: -1, -1, -1, 295, -1, 264, 265, 266, -1, -1,
614: -1, 93, 36, -1, -1, -1, -1, 41, -1, 43,
615: 44, 45, -1, -1, 283, 284, 285, 286, 287, -1,
616: 289, -1, -1, -1, 58, 59, 295, 61, 62, 63,
617: -1, -1, 124, 125, -1, -1, -1, -1, -1, -1,
618: -1, -1, -1, -1, 36, -1, -1, -1, -1, 41,
619: -1, 43, 44, 45, -1, -1, -1, 258, -1, 93,
620: -1, -1, -1, 264, 265, 266, 58, 59, -1, 61,
621: 62, 63, -1, -1, -1, -1, -1, -1, -1, -1,
622: -1, -1, 283, 284, 285, 286, 287, -1, 289, -1,
623: 124, 125, -1, 294, 295, -1, 36, 37, -1, -1,
624: -1, 93, 42, 43, -1, 45, -1, 47, -1, -1,
625: -1, 36, 37, -1, -1, -1, -1, 42, 43, 59,
626: 45, 61, 47, 63, -1, -1, -1, -1, -1, -1,
627: -1, -1, 124, 125, 59, -1, 61, -1, 63, -1,
628: -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
629: -1, 91, -1, 36, 94, -1, -1, -1, 41, 36,
630: -1, 44, -1, -1, 41, -1, -1, 44, -1, 94,
631: -1, -1, 264, 265, 266, 58, 59, -1, 61, 62,
632: 63, 58, 59, -1, 61, 62, 63, -1, -1, -1,
633: -1, 283, 284, 285, 286, 287, -1, 289, -1, 36,
634: -1, -1, -1, 295, 41, -1, -1, 44, -1, -1,
635: 93, -1, 36, -1, -1, -1, 93, 41, -1, -1,
636: 44, 58, 59, -1, 61, 62, 63, -1, -1, -1,
637: 264, 265, 266, -1, 58, 59, -1, 61, 62, 63,
638: -1, 124, 125, -1, -1, -1, -1, 124, 125, 283,
639: 284, 285, 286, 287, -1, 289, 93, -1, 37, -1,
640: -1, 295, 41, 42, 43, -1, 45, -1, 47, 93,
641: -1, -1, 264, 265, 266, -1, -1, -1, -1, -1,
642: -1, -1, 61, -1, 63, -1, -1, 124, 125, -1,
643: -1, 283, 284, 285, 286, 287, -1, 289, -1, -1,
644: 124, 125, -1, 295, -1, -1, 36, -1, -1, -1,
645: -1, 41, -1, -1, 44, 94, -1, -1, 258, -1,
646: -1, -1, -1, -1, 264, 265, 266, -1, 58, 59,
647: -1, 61, 62, 63, -1, -1, -1, -1, -1, 264,
648: 265, 266, -1, 283, 284, 285, 286, 287, -1, 289,
649: -1, -1, -1, -1, 294, 295, -1, -1, 283, 284,
650: 285, 286, 287, 93, 289, -1, 36, -1, -1, 294,
651: 295, 41, -1, -1, 44, -1, -1, -1, -1, -1,
652: -1, 264, 265, 266, -1, -1, -1, -1, 58, 59,
653: -1, 61, 62, 63, 124, 125, -1, -1, -1, -1,
654: 283, 284, 285, 286, 287, -1, 289, 284, 285, 286,
655: 287, 37, 295, -1, -1, 41, 42, 43, 295, 45,
656: -1, 47, -1, 93, -1, -1, -1, -1, 265, 266,
657: -1, -1, -1, -1, -1, 61, -1, 63, -1, -1,
658: -1, 265, -1, -1, -1, -1, 283, 284, 285, 286,
659: 287, -1, 289, -1, 124, 125, -1, -1, 295, 283,
660: 284, 285, 286, 287, -1, 289, -1, -1, 94, 37,
661: -1, 295, -1, 41, 42, 43, -1, 45, -1, 47,
662: -1, -1, -1, -1, -1, 264, 265, 266, -1, -1,
663: -1, -1, -1, 61, -1, 63, -1, -1, -1, -1,
664: -1, -1, -1, -1, 283, 284, 285, 286, 287, -1,
665: 289, -1, 37, -1, -1, 294, 295, 42, 43, 44,
666: 45, -1, 47, -1, -1, 37, 94, -1, -1, 41,
667: 42, 43, -1, 45, -1, 47, 61, -1, 63, -1,
668: -1, -1, -1, -1, -1, -1, -1, -1, -1, 61,
669: -1, 63, -1, 283, 284, 285, 286, 287, -1, 289,
670: -1, -1, 37, -1, -1, 295, -1, 42, 43, 94,
671: 45, -1, 47, -1, -1, -1, -1, -1, -1, -1,
672: -1, -1, 94, 58, -1, -1, 61, -1, 63, 37,
673: -1, -1, -1, -1, 42, 43, 37, 45, -1, 47,
674: -1, 42, 43, -1, 45, -1, 47, -1, -1, -1,
675: -1, -1, -1, 61, -1, 63, 286, 287, -1, 94,
676: -1, -1, -1, 37, -1, 295, -1, -1, 42, 43,
677: 44, 45, -1, 47, -1, -1, -1, -1, 264, 265,
678: 266, -1, -1, -1, -1, 93, 94, 61, -1, 63,
679: -1, -1, -1, 94, -1, -1, -1, 283, 284, 285,
680: 286, 287, -1, 289, -1, -1, 37, -1, 294, 295,
681: 41, 42, 43, -1, 45, -1, 47, -1, -1, 37,
682: 94, -1, -1, -1, 42, 43, -1, 45, -1, 47,
683: 61, -1, 63, -1, -1, -1, 264, 265, 266, -1,
684: -1, -1, -1, 61, -1, 63, -1, -1, -1, -1,
685: -1, -1, -1, -1, -1, 283, 284, 285, 286, 287,
686: -1, 289, -1, 94, 37, -1, 294, 295, -1, 42,
687: 43, -1, 45, -1, 47, -1, 94, 37, -1, 264,
688: 265, 266, 42, 43, -1, 45, -1, 47, -1, -1,
689: 63, -1, 264, 265, 266, -1, -1, -1, 283, 284,
690: 285, 286, 287, -1, 289, -1, -1, -1, -1, 294,
691: 295, 283, 284, 285, 286, 287, 40, 289, -1, -1,
692: -1, 94, 294, 295, -1, -1, -1, -1, -1, 264,
693: 265, 266, 37, -1, 94, -1, -1, 42, 43, -1,
694: 45, -1, 47, -1, -1, -1, -1, -1, 283, 284,
695: 285, 286, 287, -1, 289, -1, 264, 265, 266, 294,
696: 295, -1, -1, 264, 265, 266, -1, -1, -1, -1,
697: -1, -1, -1, -1, -1, 283, 284, 285, 286, 287,
698: -1, 289, 283, 284, 285, -1, 294, 295, 289, 94,
699: 264, 265, 266, 294, 37, -1, -1, -1, -1, 42,
700: 43, -1, 45, -1, 47, -1, -1, -1, -1, 283,
701: 284, 285, 286, 287, -1, 289, -1, -1, -1, -1,
702: 294, 295, -1, -1, -1, -1, -1, -1, -1, -1,
703: -1, -1, -1, 264, 265, 266, -1, -1, -1, -1,
704: -1, -1, -1, -1, -1, -1, 264, 265, 266, -1,
705: -1, 94, 283, 284, 285, 286, 287, -1, 289, -1,
706: -1, -1, -1, 294, 295, 283, 284, 285, 286, 287,
707: -1, 289, -1, -1, -1, -1, 294, 295, -1, -1,
708: -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
709: -1, 264, 265, 266, -1, -1, -1, -1, -1, -1,
710: -1, -1, -1, -1, 264, 265, 266, -1, -1, -1,
711: 283, 284, 285, 286, 287, -1, 289, -1, -1, -1,
712: -1, 294, -1, 283, 284, 285, 286, 287, -1, 289,
713: -1, -1, -1, -1, 294, -1, 260, -1, -1, -1,
714: -1, -1, -1, 267, 268, -1, -1, -1, -1, 1,
715: -1, -1, -1, 277, 278, 279, 280, 281, 282, 264,
716: 265, 266, 14, 15, 16, -1, 290, 291, 292, 293,
717: -1, -1, -1, 0, -1, -1, -1, -1, 283, 284,
718: -1, -1, -1, 10, 289, -1, -1, 39, 15, 294,
719: -1, -1, -1, -1, -1, -1, 23, -1, -1, -1,
720: -1, 28, 29, 30, 31, -1, 33, -1, 60, -1,
721: -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
722: -1, 264, 265, 266, -1, 52, 53, -1, -1, -1,
723: -1, -1, -1, -1, -1, -1, -1, -1, 65, -1,
724: 283, -1, -1, -1, -1, -1, 289, 74, -1, 76,
725: -1, 294, -1, -1, 106, 82, 83, 84, 85, 86,
726: 87, 88, 89, 90, -1, 92, 93, 94, 95, 96,
727: 97, 98, 99, 100, 37, -1, 103, -1, -1, -1,
728: -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
729: -1, -1, 55, 56, 57, -1, -1, -1, -1, -1,
730: -1, -1, -1, -1, 131, 68, 69, 159, -1, -1,
731: -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
732: -1, -1, -1, -1, -1, -1, -1, -1, 180, -1,
733: 182, -1, -1, -1, -1, -1, 163, -1, 165, -1,
734: -1, -1, 169, -1, -1, -1, 109, -1, -1, -1,
735: 177, -1, -1, 205, 117, -1, -1, -1, 210, -1,
736: -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
737: 222, -1, -1, 200, -1, -1, -1, -1, -1, -1,
738: 232, -1, -1, -1, -1, 212, -1, -1, 215, -1,
739: 217, 218, -1, -1, 157, -1, -1, -1, -1, 162,
740: -1, 164, -1, -1, 167, 168, -1, -1, -1, -1,
741: -1, 238, -1, -1, 241, -1, -1, -1, -1, -1,
742: -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
743: -1, -1, 195, -1, -1, -1, -1, -1, -1, 202,
744: -1, -1, -1, -1, -1, -1, -1, -1, 211,
745: };
746: #define YYFINAL 38
747: #ifndef YYDEBUG
748: #define YYDEBUG 0
749: #elif YYDEBUG
750: #include <stdio.h>
751: #endif
752: #define YYMAXTOKEN 297
753: #if YYDEBUG
754: const char * const yyname[] = {
755: "end-of-file",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,
756: "'!'",0,0,"'$'","'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'",0,"'/'",0,0,0,
757: 0,0,0,0,0,0,0,"':'","';'","'<'","'='","'>'","'?'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
758: 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,
759: 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,
760: 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,
761: 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,
762: 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,"STRUCT","POINT",
763: "NEWSTRUCT","ANS","FDEF","PFDEF","GLOBAL","CMP","OR","AND","CAR","CDR","DO",
764: "WHILE","FOR","IF","ELSE","BREAK","RETURN","CONTINUE","PARIF","MAP","TIMER",
765: "GF2NGEN","GFPNGEN","GETOPT","FOP_AND","FOP_OR","FOP_IMPL","FOP_REPL",
766: "FOP_EQUIV","FOP_NOT","LOP","FORMULA","UCASE","LCASE","STR","SELF","BOPASS",
767: "PLUS","MINUS",
768: };
769: const char * const yyrule[] = {
770: "$accept : start",
771: "start : stat",
772: "stat : tail",
773: "$$1 :",
774: "$$2 :",
775: "stat : GLOBAL $$1 pvars $$2 tail",
776: "stat : STRUCT rawstr '{' fields '}' tail",
777: "stat : STRUCT rawstr '{' fields '}' pvars tail",
778: "stat : STRUCT rawstr pvars tail",
779: "stat : expr tail",
780: "stat : complex",
781: "stat : BREAK tail",
782: "stat : CONTINUE tail",
783: "stat : RETURN tail",
784: "stat : RETURN expr tail",
785: "stat : IF '(' node ')' stat",
786: "stat : IF '(' node ')' stat ELSE stat",
787: "stat : FOR '(' node ';' node ';' node ')' stat",
788: "stat : WHILE '(' node ')' stat",
789: "stat : DO stat WHILE '(' node ')' tail",
790: "stat : LCASE '(' node ')' ':' '=' expr tail",
791: "stat : PFDEF LCASE '(' node ')'",
792: "$$3 :",
793: "stat : FDEF LCASE $$3 '(' node ')' desc '{' stats '}'",
794: "stat : error tail",
795: "tail : ';'",
796: "tail : '$'",
797: "desc :",
798: "desc : STR",
799: "complex : '{' stats '}'",
800: "fields :",
801: "fields : fields members tail",
802: "fields : fields STRUCT rawstr members tail",
803: "members : rawstr",
804: "members : members ',' rawstr",
805: "pvars : UCASE",
806: "pvars : pvars ',' UCASE",
807: "stats :",
808: "stats : stats stat",
809: "node :",
810: "node : _node",
811: "_node : expr",
812: "_node : _node ',' expr",
813: "optlist : opt",
814: "optlist : optlist ',' opt",
815: "rawstr : UCASE",
816: "rawstr : LCASE",
817: "opt : rawstr '=' expr",
818: "pexpr : STR",
819: "pexpr : FORMULA",
820: "pexpr : ANS",
821: "pexpr : GF2NGEN",
822: "pexpr : GFPNGEN",
823: "pexpr : LCASE",
824: "pexpr : LCASE '(' node ')'",
825: "pexpr : LCASE '(' node '|' optlist ')'",
826: "pexpr : LCASE '{' node '}' '(' node ')'",
827: "pexpr : GETOPT '(' rawstr ')'",
828: "pexpr : MAP '(' LCASE ',' node ')'",
829: "pexpr : TIMER '(' expr ',' expr ',' expr ')'",
830: "pexpr : PARIF '(' LCASE ',' node ')'",
831: "pexpr : '(' '*' expr ')' '(' node ')'",
832: "pexpr : CAR '(' expr ')'",
833: "pexpr : CDR '(' expr ')'",
834: "pexpr : '(' expr ')'",
835: "pexpr : UCASE",
836: "pexpr : pexpr '[' expr ']'",
837: "pexpr : pexpr POINT rawstr",
838: "expr : pexpr",
839: "expr : '(' STRUCT rawstr ')' pexpr",
840: "expr : expr '=' expr",
841: "expr : expr BOPASS expr",
842: "expr : expr SELF",
843: "expr : SELF expr",
844: "expr : '[' node ']'",
845: "expr : '+' expr",
846: "expr : '-' expr",
847: "expr : expr '+' expr",
848: "expr : expr '-' expr",
849: "expr : expr '*' expr",
850: "expr : expr '/' expr",
851: "expr : expr '%' expr",
852: "expr : expr '^' expr",
853: "expr : expr CMP expr",
854: "expr : '!' expr",
855: "expr : expr OR expr",
856: "expr : expr AND expr",
857: "expr : FOP_NOT expr",
858: "expr : expr FOP_AND expr",
859: "expr : expr FOP_OR expr",
860: "expr : expr FOP_IMPL expr",
861: "expr : expr FOP_REPL expr",
862: "expr : expr FOP_EQUIV expr",
863: "expr : expr LOP expr",
864: "expr : expr '?' expr ':' expr",
865: "expr : '<' node '>'",
866: "expr : NEWSTRUCT '(' rawstr ')'",
867: };
868: #endif
869: #ifdef YYSTACKSIZE
870: #undef YYMAXDEPTH
871: #define YYMAXDEPTH YYSTACKSIZE
872: #else
873: #ifdef YYMAXDEPTH
874: #define YYSTACKSIZE YYMAXDEPTH
875: #else
876: #define YYSTACKSIZE 10000
877: #define YYMAXDEPTH 10000
878: #endif
879: #endif
880: #define YYINITSTACKSIZE 200
881: int yydebug;
882: int yynerrs;
883: int yyerrflag;
884: int yychar;
885: short *yyssp;
886: YYSTYPE *yyvsp;
887: YYSTYPE yyval;
888: YYSTYPE yylval;
889: short *yyss;
890: short *yysslim;
891: YYSTYPE *yyvs;
892: int yystacksize;
893: /* allocate initial stack or double stack size, up to YYMAXDEPTH */
894: static int yygrowstack()
895: {
896: int newsize, i;
897: short *newss;
898: YYSTYPE *newvs;
899:
900: if ((newsize = yystacksize) == 0)
901: newsize = YYINITSTACKSIZE;
902: else if (newsize >= YYMAXDEPTH)
903: return -1;
904: else if ((newsize *= 2) > YYMAXDEPTH)
905: newsize = YYMAXDEPTH;
906: i = yyssp - yyss;
907: if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL)
908: return -1;
909: yyss = newss;
910: yyssp = newss + i;
911: if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL)
912: return -1;
913: yyvs = newvs;
914: yyvsp = newvs + i;
915: yystacksize = newsize;
916: yysslim = yyss + newsize - 1;
917: return 0;
918: }
919:
920: #define YYABORT goto yyabort
921: #define YYREJECT goto yyabort
922: #define YYACCEPT goto yyaccept
923: #define YYERROR goto yyerrlab
924:
925: int
926: yyparse()
927: {
928: register int yym, yyn, yystate;
929: #if YYDEBUG
930: register const char *yys;
931:
932: if ((yys = getenv("YYDEBUG")))
933: {
934: yyn = *yys;
935: if (yyn >= '0' && yyn <= '9')
936: yydebug = yyn - '0';
937: }
938: #endif
939:
940: yynerrs = 0;
941: yyerrflag = 0;
942: yychar = (-1);
943:
944: if (yyss == NULL && yygrowstack()) goto yyoverflow;
945: yyssp = yyss;
946: yyvsp = yyvs;
947: *yyssp = yystate = 0;
948:
949: yyloop:
950: if ((yyn = yydefred[yystate])) goto yyreduce;
951: if (yychar < 0)
952: {
953: if ((yychar = yylex()) < 0) yychar = 0;
954: #if YYDEBUG
955: if (yydebug)
956: {
957: yys = 0;
958: if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
959: if (!yys) yys = "illegal-symbol";
960: printf("%sdebug: state %d, reading %d (%s)\n",
961: YYPREFIX, yystate, yychar, yys);
962: }
963: #endif
964: }
965: if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
966: yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
967: {
968: #if YYDEBUG
969: if (yydebug)
970: printf("%sdebug: state %d, shifting to state %d\n",
971: YYPREFIX, yystate, yytable[yyn]);
972: #endif
973: if (yyssp >= yysslim && yygrowstack())
974: {
975: goto yyoverflow;
976: }
977: *++yyssp = yystate = yytable[yyn];
978: *++yyvsp = yylval;
979: yychar = (-1);
980: if (yyerrflag > 0) --yyerrflag;
981: goto yyloop;
982: }
983: if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
984: yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
985: {
986: yyn = yytable[yyn];
987: goto yyreduce;
988: }
989: if (yyerrflag) goto yyinrecovery;
990: #if defined(lint) || defined(__GNUC__)
991: goto yynewerror;
992: #endif
993: yynewerror:
994: yyerror("syntax error");
995: #if defined(lint) || defined(__GNUC__)
996: goto yyerrlab;
997: #endif
998: yyerrlab:
999: ++yynerrs;
1000: yyinrecovery:
1001: if (yyerrflag < 3)
1002: {
1003: yyerrflag = 3;
1004: for (;;)
1005: {
1006: if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
1007: yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
1008: {
1009: #if YYDEBUG
1010: if (yydebug)
1011: printf("%sdebug: state %d, error recovery shifting\
1012: to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
1013: #endif
1014: if (yyssp >= yysslim && yygrowstack())
1015: {
1016: goto yyoverflow;
1017: }
1018: *++yyssp = yystate = yytable[yyn];
1019: *++yyvsp = yylval;
1020: goto yyloop;
1021: }
1022: else
1023: {
1024: #if YYDEBUG
1025: if (yydebug)
1026: printf("%sdebug: error recovery discarding state %d\n",
1027: YYPREFIX, *yyssp);
1028: #endif
1029: if (yyssp <= yyss) goto yyabort;
1030: --yyssp;
1031: --yyvsp;
1032: }
1033: }
1034: }
1035: else
1036: {
1037: if (yychar == 0) goto yyabort;
1038: #if YYDEBUG
1039: if (yydebug)
1040: {
1041: yys = 0;
1042: if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
1043: if (!yys) yys = "illegal-symbol";
1044: printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
1045: YYPREFIX, yystate, yychar, yys);
1046: }
1047: #endif
1048: yychar = (-1);
1049: goto yyloop;
1050: }
1051: yyreduce:
1052: #if YYDEBUG
1053: if (yydebug)
1054: printf("%sdebug: state %d, reducing by rule %d (%s)\n",
1055: YYPREFIX, yystate, yyn, yyrule[yyn]);
1056: #endif
1057: yym = yylen[yyn];
1058: yyval = yyvsp[1-yym];
1059: switch (yyn)
1060: {
1061: case 1:
1062: #line 85 "parse.y"
1063: { parse_snode = yyvsp[0].s; YYACCEPT; }
1064: break;
1065: case 2:
1066: #line 88 "parse.y"
1067: { yyval.s = 0; }
1068: break;
1069: case 3:
1070: #line 89 "parse.y"
1071: { gdef=1; }
1072: break;
1073: case 4:
1074: #line 89 "parse.y"
1075: { gdef=0; }
1076: break;
1077: case 5:
1078: #line 90 "parse.y"
1079: { yyval.s = 0; }
1080: break;
1081: case 6:
1082: #line 92 "parse.y"
1083: { structdef(yyvsp[-4].p,yyvsp[-2].n); yyval.s = 0; }
1084: break;
1085: case 7:
1086: #line 94 "parse.y"
1087: { structdef(yyvsp[-5].p,yyvsp[-3].n); setstruct(yyvsp[-5].p,yyvsp[-1].n); yyval.s = 0; }
1088: break;
1089: case 8:
1090: #line 96 "parse.y"
1091: { setstruct(yyvsp[-2].p,yyvsp[-1].n); yyval.s = 0; }
1092: break;
1093: case 9:
1094: #line 98 "parse.y"
1095: { yyval.s = mksnode(1,S_SINGLE,yyvsp[-1].f); }
1096: break;
1097: case 10:
1098: #line 100 "parse.y"
1099: { yyval.s = yyvsp[0].s; }
1100: break;
1101: case 11:
1102: #line 102 "parse.y"
1103: { yyval.s = mksnode(0,S_BREAK); }
1104: break;
1105: case 12:
1106: #line 104 "parse.y"
1107: { yyval.s = mksnode(0,S_CONTINUE); }
1108: break;
1109: case 13:
1110: #line 106 "parse.y"
1111: { yyval.s = mksnode(1,S_RETURN,0); }
1112: break;
1113: case 14:
1114: #line 108 "parse.y"
1115: { yyval.s = mksnode(1,S_RETURN,yyvsp[-1].f); }
1116: break;
1117: case 15:
1118: #line 110 "parse.y"
1119: { yyval.s = mksnode(4,S_IFELSE,yyvsp[-4].i,yyvsp[-2].n,yyvsp[0].s,0); yyvsp[0].s?yyval.s->ln=yyvsp[0].s->ln:0; NOPR; }
1120: break;
1121: case 16:
1122: #line 112 "parse.y"
1123: { yyval.s = mksnode(4,S_IFELSE,yyvsp[-6].i,yyvsp[-4].n,yyvsp[-2].s,yyvsp[0].s); yyvsp[0].s?yyval.s->ln=yyvsp[0].s->ln:0; NOPR; }
1124: break;
1125: case 17:
1126: #line 114 "parse.y"
1127: { yyval.s = mksnode(5,S_FOR,yyvsp[-8].i,yyvsp[-6].n,yyvsp[-4].n?yyvsp[-4].n:ONENODE,yyvsp[-2].n,yyvsp[0].s); yyvsp[0].s?yyval.s->ln=yyvsp[0].s->ln:0; NOPR; }
1128: break;
1129: case 18:
1130: #line 116 "parse.y"
1131: { yyval.s = mksnode(5,S_FOR,yyvsp[-4].i,0,yyvsp[-2].n,0,yyvsp[0].s); yyvsp[0].s?yyval.s->ln=yyvsp[0].s->ln:0; NOPR; }
1132: break;
1133: case 19:
1134: #line 118 "parse.y"
1135: { yyval.s = mksnode(3,S_DO,yyvsp[-6].i,yyvsp[-5].s,yyvsp[-2].n); }
1136: break;
1137: case 20:
1138: #line 120 "parse.y"
1139: { yyval.s = mksnode(3,S_PFDEF,yyvsp[-7].p,yyvsp[-5].n,yyvsp[-1].f); NOPR; }
1140: break;
1141: case 21:
1142: #line 122 "parse.y"
1143: { yyval.s = mksnode(3,S_PFDEF,yyvsp[-3].p,yyvsp[-1].n,0); NOPR; }
1144: break;
1145: case 22:
1146: #line 123 "parse.y"
1147: { mkpvs(); }
1148: break;
1149: case 23:
1150: #line 124 "parse.y"
1151: {
1152: mkuf(yyvsp[-8].p,asir_infile->name,yyvsp[-5].n,
1153: mksnode(1,S_CPLX,yyvsp[-1].n),yyvsp[-9].i,asir_infile->ln,yyvsp[-3].p);
1154: yyval.s = 0; NOPR;
1155: }
1156: break;
1157: case 24:
1158: #line 130 "parse.y"
1159: { yyerrok; yyval.s = 0; }
1160: break;
1161: case 25:
1162: #line 133 "parse.y"
1163: { if ( main_parser ) prresult = 1; }
1164: break;
1165: case 26:
1166: #line 135 "parse.y"
1167: { if ( main_parser ) prresult = 0; }
1168: break;
1169: case 27:
1170: #line 137 "parse.y"
1171: { yyval.p = 0; }
1172: break;
1173: case 28:
1174: #line 139 "parse.y"
1175: { yyval.p = yyvsp[0].p; }
1176: break;
1177: case 29:
1178: #line 142 "parse.y"
1179: { yyval.s = mksnode(1,S_CPLX,yyvsp[-1].n); }
1180: break;
1181: case 30:
1182: #line 145 "parse.y"
1183: { yyval.n = 0; }
1184: break;
1185: case 31:
1186: #line 147 "parse.y"
1187: { MKNODE(a,0,yyvsp[-1].n); appendtonode(yyvsp[-2].n,(pointer)a,&yyval.n); }
1188: break;
1189: case 32:
1190: #line 149 "parse.y"
1191: { MKNODE(a,yyvsp[-2].p,yyvsp[-1].n); appendtonode(yyvsp[-4].n,(pointer)a,&yyval.n); }
1192: break;
1193: case 33:
1194: #line 152 "parse.y"
1195: { MKNODE(yyval.n,yyvsp[0].p,0); }
1196: break;
1197: case 34:
1198: #line 154 "parse.y"
1199: { appendtonode(yyvsp[-2].n,yyvsp[0].p,&yyval.n); }
1200: break;
1201: case 35:
1202: #line 157 "parse.y"
1203: { val = (pointer)makepvar(yyvsp[0].p); MKNODE(yyval.n,val,0); }
1204: break;
1205: case 36:
1206: #line 159 "parse.y"
1207: { appendtonode(yyvsp[-2].n,(pointer)makepvar(yyvsp[0].p),&yyval.n); }
1208: break;
1209: case 37:
1210: #line 162 "parse.y"
1211: { yyval.n = 0; }
1212: break;
1213: case 38:
1214: #line 164 "parse.y"
1215: { appendtonode(yyvsp[-1].n,(pointer)yyvsp[0].s,&yyval.n); }
1216: break;
1217: case 39:
1218: #line 167 "parse.y"
1219: { yyval.n = 0; }
1220: break;
1221: case 40:
1222: #line 169 "parse.y"
1223: { yyval.n = yyvsp[0].n; }
1224: break;
1225: case 41:
1226: #line 172 "parse.y"
1227: { MKNODE(yyval.n,yyvsp[0].f,0); }
1228: break;
1229: case 42:
1230: #line 174 "parse.y"
1231: { appendtonode(yyvsp[-2].n,(pointer)yyvsp[0].f,&yyval.n); }
1232: break;
1233: case 43:
1234: #line 177 "parse.y"
1235: { MKNODE(yyval.n,yyvsp[0].f,0); }
1236: break;
1237: case 44:
1238: #line 179 "parse.y"
1239: { appendtonode(yyvsp[-2].n,(pointer)yyvsp[0].f,&yyval.n); }
1240: break;
1241: case 45:
1242: #line 182 "parse.y"
1243: { yyval.p = yyvsp[0].p; }
1244: break;
1245: case 46:
1246: #line 184 "parse.y"
1247: { yyval.p = yyvsp[0].p; }
1248: break;
1249: case 47:
1250: #line 187 "parse.y"
1251: { yyval.f = mkfnode(2,I_OPT,yyvsp[-2].p,yyvsp[0].f); }
1252: break;
1253: case 48:
1254: #line 190 "parse.y"
1255: { yyval.f = mkfnode(1,I_STR,yyvsp[0].p); }
1256: break;
1257: case 49:
1258: #line 192 "parse.y"
1259: { yyval.f = mkfnode(1,I_FORMULA,yyvsp[0].p); }
1260: break;
1261: case 50:
1262: #line 194 "parse.y"
1263: { yyval.f = mkfnode(1,I_ANS,yyvsp[0].i); }
1264: break;
1265: case 51:
1266: #line 196 "parse.y"
1267: { yyval.f = mkfnode(0,I_GF2NGEN); }
1268: break;
1269: case 52:
1270: #line 198 "parse.y"
1271: { yyval.f = mkfnode(0,I_GFPNGEN); }
1272: break;
1273: case 53:
1274: #line 200 "parse.y"
1275: {
1276: FUNC f;
1277:
1278: searchf(noargsysf,yyvsp[0].p,&f);
1279: if ( f )
1280: yyval.f = mkfnode(2,I_FUNC,f,0);
1281: else {
1282: searchc(yyvsp[0].p,&f);
1283: if ( f )
1284: yyval.f = mkfnode(2,I_FUNC,f,mkfnode(1,I_LIST,0));
1285: else {
1286: searchf(sysf,yyvsp[0].p,&f);
1287: if ( !f )
1288: searchf(ubinf,yyvsp[0].p,&f);
1289: if ( !f )
1290: searchpf(yyvsp[0].p,&f);
1291: if ( !f )
1292: searchf(usrf,yyvsp[0].p,&f);
1293: if ( f )
1294: makesrvar(f,(P *)&val);
1295: else
1296: makevar(yyvsp[0].p,(P *)&val);
1297: yyval.f = mkfnode(1,I_FORMULA,val);
1298: }
1299: }
1300: }
1301: break;
1302: case 54:
1303: #line 227 "parse.y"
1304: {
1305: searchf(sysf,yyvsp[-3].p,(FUNC *)&val);
1306: if ( !val )
1307: searchf(ubinf,yyvsp[-3].p,(FUNC *)&val);
1308: if ( !val )
1309: searchpf(yyvsp[-3].p,(FUNC *)&val);
1310: if ( !val )
1311: searchf(usrf,yyvsp[-3].p,(FUNC *)&val);
1312: if ( !val )
1313: appenduf(yyvsp[-3].p,(FUNC *)&val);
1314: yyval.f = mkfnode(2,I_FUNC,val,mkfnode(1,I_LIST,yyvsp[-1].n));
1315: }
1316: break;
1317: case 55:
1318: #line 241 "parse.y"
1319: {
1320: searchf(sysf,yyvsp[-5].p,(FUNC *)&val);
1321: if ( !val )
1322: searchf(ubinf,yyvsp[-5].p,(FUNC *)&val);
1323: if ( !val )
1324: searchpf(yyvsp[-5].p,(FUNC *)&val);
1325: if ( !val )
1326: searchf(usrf,yyvsp[-5].p,(FUNC *)&val);
1327: if ( !val )
1328: appenduf(yyvsp[-5].p,(FUNC *)&val);
1329: yyval.f = mkfnode(3,I_FUNC_OPT,val,
1330: mkfnode(1,I_LIST,yyvsp[-3].n),mkfnode(1,I_LIST,yyvsp[-1].n));
1331: }
1332: break;
1333: case 56:
1334: #line 255 "parse.y"
1335: {
1336: searchpf(yyvsp[-6].p,(FUNC *)&val);
1337: yyval.f = mkfnode(2,I_PFDERIV,val,mkfnode(1,I_LIST,yyvsp[-1].n),mkfnode(1,I_LIST,yyvsp[-4].n));
1338: }
1339: break;
1340: case 57:
1341: #line 260 "parse.y"
1342: {
1343: yyval.f = mkfnode(2,I_GETOPT,yyvsp[-1].p);
1344: }
1345: break;
1346: case 58:
1347: #line 264 "parse.y"
1348: {
1349: searchf(sysf,yyvsp[-3].p,(FUNC *)&val);
1350: if ( !val )
1351: searchf(ubinf,yyvsp[-3].p,(FUNC *)&val);
1352: if ( !val )
1353: searchpf(yyvsp[-3].p,(FUNC *)&val);
1354: if ( !val )
1355: searchf(usrf,yyvsp[-3].p,(FUNC *)&val);
1356: if ( !val )
1357: appenduf(yyvsp[-3].p,(FUNC *)&val);
1358: yyval.f = mkfnode(2,I_MAP,val,mkfnode(1,I_LIST,yyvsp[-1].n));
1359: }
1360: break;
1361: case 59:
1362: #line 277 "parse.y"
1363: {
1364: yyval.f = mkfnode(3,I_TIMER,yyvsp[-5].f,yyvsp[-3].f,yyvsp[-1].f);
1365: }
1366: break;
1367: case 60:
1368: #line 281 "parse.y"
1369: {
1370: searchf(parif,yyvsp[-3].p,(FUNC *)&val);
1371: if ( !val )
1372: mkparif(yyvsp[-3].p,(FUNC *)&val);
1373: yyval.f = mkfnode(2,I_FUNC,val,mkfnode(1,I_LIST,yyvsp[-1].n));
1374: }
1375: break;
1376: case 61:
1377: #line 288 "parse.y"
1378: {
1379: yyval.f = mkfnode(2,I_IFUNC,yyvsp[-4].f,mkfnode(1,I_LIST,yyvsp[-1].n));
1380: }
1381: break;
1382: case 62:
1383: #line 292 "parse.y"
1384: { yyval.f = mkfnode(1,I_CAR,yyvsp[-1].f); }
1385: break;
1386: case 63:
1387: #line 294 "parse.y"
1388: { yyval.f = mkfnode(1,I_CDR,yyvsp[-1].f); }
1389: break;
1390: case 64:
1391: #line 296 "parse.y"
1392: { yyval.f = yyvsp[-1].f; }
1393: break;
1394: case 65:
1395: #line 298 "parse.y"
1396: {
1397: if ( main_parser )
1398: yyval.f = mkfnode(2,I_PVAR,makepvar(yyvsp[0].p),0);
1399: else {
1400: ind = searchpvar(yyvsp[0].p);
1401: if ( ind == -1 ) {
1402: fprintf(stderr,"%s : no such variable.\n",yyvsp[0].p);
1403: YYABORT;
1404: } else
1405: yyval.f = mkfnode(2,I_PVAR,ind,0);
1406: }
1407: }
1408: break;
1409: case 66:
1410: #line 311 "parse.y"
1411: {
1412: if ( yyvsp[-3].f->id == I_PVAR || yyvsp[-3].f->id == I_INDEX ) {
1413: appendtonode((NODE)yyvsp[-3].f->arg[1],(pointer)yyvsp[-1].f,&a);
1414: yyvsp[-3].f->arg[1] = (pointer)a; yyval.f = yyvsp[-3].f;
1415: } else {
1416: MKNODE(a,yyvsp[-1].f,0);
1417: yyval.f = mkfnode(2,I_INDEX,(pointer)yyvsp[-3].f,a);
1418: }
1419: }
1420: break;
1421: case 67:
1422: #line 321 "parse.y"
1423: { memberofstruct(yyvsp[-2].f,yyvsp[0].p,&yyval.f); }
1424: break;
1425: case 68:
1426: #line 324 "parse.y"
1427: { yyval.f = yyvsp[0].f; }
1428: break;
1429: case 69:
1430: #line 326 "parse.y"
1431: { yyval.f = mkfnode(3,I_CAST,structtoindex(yyvsp[-2].p),yyvsp[0].f,0); }
1432: break;
1433: case 70:
1434: #line 328 "parse.y"
1435: { yyval.f = mkfnode(2,I_ASSPVAR,yyvsp[-2].f,yyvsp[0].f); }
1436: break;
1437: case 71:
1438: #line 330 "parse.y"
1439: { yyval.f = mkfnode(2,I_ASSPVAR,yyvsp[-2].f,mkfnode(3,I_BOP,yyvsp[-1].p,yyvsp[-2].f,yyvsp[0].f)); }
1440: break;
1441: case 72:
1442: #line 332 "parse.y"
1443: { yyval.f = mkfnode(2,I_POSTSELF,yyvsp[0].p,yyvsp[-1].f); }
1444: break;
1445: case 73:
1446: #line 334 "parse.y"
1447: { yyval.f = mkfnode(2,I_PRESELF,yyvsp[-1].p,yyvsp[0].f); }
1448: break;
1449: case 74:
1450: #line 336 "parse.y"
1451: { yyval.f = mkfnode(1,I_LIST,yyvsp[-1].n); }
1452: break;
1453: case 75:
1454: #line 338 "parse.y"
1455: { yyval.f = yyvsp[0].f; }
1456: break;
1457: case 76:
1458: #line 340 "parse.y"
1459: { yyval.f = mkfnode(3,I_BOP,yyvsp[-1].p,0,yyvsp[0].f); }
1460: break;
1461: case 77:
1462: #line 342 "parse.y"
1463: { yyval.f = mkfnode(3,I_BOP,yyvsp[-1].p,yyvsp[-2].f,yyvsp[0].f); }
1464: break;
1465: case 78:
1466: #line 344 "parse.y"
1467: { yyval.f = mkfnode(3,I_BOP,yyvsp[-1].p,yyvsp[-2].f,yyvsp[0].f); }
1468: break;
1469: case 79:
1470: #line 346 "parse.y"
1471: { yyval.f = mkfnode(3,I_BOP,yyvsp[-1].p,yyvsp[-2].f,yyvsp[0].f); }
1472: break;
1473: case 80:
1474: #line 348 "parse.y"
1475: { yyval.f = mkfnode(3,I_BOP,yyvsp[-1].p,yyvsp[-2].f,yyvsp[0].f); }
1476: break;
1477: case 81:
1478: #line 350 "parse.y"
1479: { yyval.f = mkfnode(3,I_BOP,yyvsp[-1].p,yyvsp[-2].f,yyvsp[0].f); }
1480: break;
1481: case 82:
1482: #line 352 "parse.y"
1483: { yyval.f = mkfnode(3,I_BOP,yyvsp[-1].p,yyvsp[-2].f,yyvsp[0].f); }
1484: break;
1485: case 83:
1486: #line 354 "parse.y"
1487: { yyval.f = mkfnode(3,I_COP,yyvsp[-1].i,yyvsp[-2].f,yyvsp[0].f); }
1488: break;
1489: case 84:
1490: #line 356 "parse.y"
1491: { yyval.f = mkfnode(1,I_NOT,yyvsp[0].f); }
1492: break;
1493: case 85:
1494: #line 358 "parse.y"
1495: { yyval.f = mkfnode(2,I_OR,yyvsp[-2].f,yyvsp[0].f); }
1496: break;
1497: case 86:
1498: #line 360 "parse.y"
1499: { yyval.f = mkfnode(2,I_AND,yyvsp[-2].f,yyvsp[0].f); }
1500: break;
1501: case 87:
1502: #line 362 "parse.y"
1503: { yyval.f = mkfnode(3,I_LOP,yyvsp[-1].i,yyvsp[0].f,0); }
1504: break;
1505: case 88:
1506: #line 364 "parse.y"
1507: { yyval.f = mkfnode(3,I_LOP,yyvsp[-1].i,yyvsp[-2].f,yyvsp[0].f); }
1508: break;
1509: case 89:
1510: #line 366 "parse.y"
1511: { yyval.f = mkfnode(3,I_LOP,yyvsp[-1].i,yyvsp[-2].f,yyvsp[0].f); }
1512: break;
1513: case 90:
1514: #line 368 "parse.y"
1515: { yyval.f = mkfnode(3,I_LOP,yyvsp[-1].i,yyvsp[-2].f,yyvsp[0].f); }
1516: break;
1517: case 91:
1518: #line 370 "parse.y"
1519: { yyval.f = mkfnode(3,I_LOP,yyvsp[-1].i,yyvsp[-2].f,yyvsp[0].f); }
1520: break;
1521: case 92:
1522: #line 372 "parse.y"
1523: { yyval.f = mkfnode(3,I_LOP,yyvsp[-1].i,yyvsp[-2].f,yyvsp[0].f); }
1524: break;
1525: case 93:
1526: #line 374 "parse.y"
1527: { yyval.f = mkfnode(3,I_LOP,yyvsp[-1].i,yyvsp[-2].f,yyvsp[0].f); }
1528: break;
1529: case 94:
1530: #line 376 "parse.y"
1531: { yyval.f = mkfnode(3,I_CE,yyvsp[-4].f,yyvsp[-2].f,yyvsp[0].f); }
1532: break;
1533: case 95:
1534: #line 378 "parse.y"
1535: { yyval.f = mkfnode(1,I_EV,yyvsp[-1].n); }
1536: break;
1537: case 96:
1538: #line 380 "parse.y"
1539: { yyval.f = mkfnode(1,I_NEWCOMP,(int)structtoindex(yyvsp[-1].p)); }
1540: break;
1541: #line 1540 "y.tab.c"
1542: }
1543: yyssp -= yym;
1544: yystate = *yyssp;
1545: yyvsp -= yym;
1546: yym = yylhs[yyn];
1547: if (yystate == 0 && yym == 0)
1548: {
1549: #if YYDEBUG
1550: if (yydebug)
1551: printf("%sdebug: after reduction, shifting from state 0 to\
1552: state %d\n", YYPREFIX, YYFINAL);
1553: #endif
1554: yystate = YYFINAL;
1555: *++yyssp = YYFINAL;
1556: *++yyvsp = yyval;
1557: if (yychar < 0)
1558: {
1559: if ((yychar = yylex()) < 0) yychar = 0;
1560: #if YYDEBUG
1561: if (yydebug)
1562: {
1563: yys = 0;
1564: if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
1565: if (!yys) yys = "illegal-symbol";
1566: printf("%sdebug: state %d, reading %d (%s)\n",
1567: YYPREFIX, YYFINAL, yychar, yys);
1568: }
1569: #endif
1570: }
1571: if (yychar == 0) goto yyaccept;
1572: goto yyloop;
1573: }
1574: if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
1575: yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
1576: yystate = yytable[yyn];
1577: else
1578: yystate = yydgoto[yym];
1579: #if YYDEBUG
1580: if (yydebug)
1581: printf("%sdebug: after reduction, shifting from state %d \
1582: to state %d\n", YYPREFIX, *yyssp, yystate);
1583: #endif
1584: if (yyssp >= yysslim && yygrowstack())
1585: {
1586: goto yyoverflow;
1587: }
1588: *++yyssp = yystate;
1589: *++yyvsp = yyval;
1590: goto yyloop;
1591: yyoverflow:
1592: yyerror("yacc stack overflow");
1593: yyabort:
1594: return (1);
1595: yyaccept:
1596: return (0);
1597: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>