etc/services - sync with NetBSD-8
[minix.git] / external / historical / nawk / dist / ytab.c
blob8720de57c7f18ec016c6c003dc43f7429702e39f
2 #line 26 "/n/fs/fac/bwk/awk/awkgram.y"
3 #include <stdio.h>
4 #include <string.h>
5 #include "awk.h"
7 void checkdup(Node *list, Cell *item);
8 int yywrap(void) { return(1); }
10 Node *beginloc = 0;
11 Node *endloc = 0;
12 int infunc = 0; /* = 1 if in arglist or body of func */
13 int inloop = 0; /* = 1 if in while, for, do */
14 char *curfname = 0; /* current function name */
15 Node *arglist = 0; /* list of args for current function */
17 #line 41 "/n/fs/fac/bwk/awk/awkgram.y"
18 typedef union {
19 Node *p;
20 Cell *cp;
21 int i;
22 char *s;
23 } YYSTYPE;
24 extern int yyerrflag;
25 #ifndef YYMAXDEPTH
26 #define YYMAXDEPTH 150
27 #endif
28 YYSTYPE yylval;
29 YYSTYPE yyval;
30 #define FIRSTTOKEN 57346
31 #define PROGRAM 57347
32 #define PASTAT 57348
33 #define PASTAT2 57349
34 #define XBEGIN 57350
35 #define XEND 57351
36 #define NL 57352
37 #define ARRAY 57353
38 #define MATCH 57354
39 #define NOTMATCH 57355
40 #define MATCHOP 57356
41 #define FINAL 57357
42 #define DOT 57358
43 #define ALL 57359
44 #define CCL 57360
45 #define NCCL 57361
46 #define CHAR 57362
47 #define OR 57363
48 #define STAR 57364
49 #define QUEST 57365
50 #define PLUS 57366
51 #define EMPTYRE 57367
52 #define AND 57368
53 #define BOR 57369
54 #define APPEND 57370
55 #define EQ 57371
56 #define GE 57372
57 #define GT 57373
58 #define LE 57374
59 #define LT 57375
60 #define NE 57376
61 #define IN 57377
62 #define ARG 57378
63 #define BLTIN 57379
64 #define BREAK 57380
65 #define CLOSE 57381
66 #define CONTINUE 57382
67 #define DELETE 57383
68 #define DO 57384
69 #define EXIT 57385
70 #define FOR 57386
71 #define FUNC 57387
72 #define SUB 57388
73 #define GSUB 57389
74 #define IF 57390
75 #define INDEX 57391
76 #define LSUBSTR 57392
77 #define MATCHFCN 57393
78 #define NEXT 57394
79 #define NEXTFILE 57395
80 #define ADD 57396
81 #define MINUS 57397
82 #define MULT 57398
83 #define DIVIDE 57399
84 #define MOD 57400
85 #define ASSIGN 57401
86 #define ASGNOP 57402
87 #define ADDEQ 57403
88 #define SUBEQ 57404
89 #define MULTEQ 57405
90 #define DIVEQ 57406
91 #define MODEQ 57407
92 #define POWEQ 57408
93 #define PRINT 57409
94 #define PRINTF 57410
95 #define SPRINTF 57411
96 #define ELSE 57412
97 #define INTEST 57413
98 #define CONDEXPR 57414
99 #define POSTINCR 57415
100 #define PREINCR 57416
101 #define POSTDECR 57417
102 #define PREDECR 57418
103 #define VAR 57419
104 #define IVAR 57420
105 #define VARNF 57421
106 #define CALL 57422
107 #define NUMBER 57423
108 #define STRING 57424
109 #define REGEXPR 57425
110 #define GETLINE 57426
111 #define RETURN 57427
112 #define SPLIT 57428
113 #define SUBSTR 57429
114 #define WHILE 57430
115 #define CAT 57431
116 #define NOT 57432
117 #define UMINUS 57433
118 #define POWER 57434
119 #define DECR 57435
120 #define INCR 57436
121 #define INDIRECT 57437
122 #define LASTTOKEN 57438
123 #define YYEOFCODE 1
124 #define YYERRCODE 2
126 #line 445 "/n/fs/fac/bwk/awk/awkgram.y"
129 void setfname(Cell *p)
131 if (isarr(p))
132 SYNTAX("%s is an array, not a function", p->nval);
133 else if (isfcn(p))
134 SYNTAX("you can't define function %s more than once", p->nval);
135 curfname = p->nval;
138 int constnode(Node *p)
140 return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;
143 char *strnode(Node *p)
145 return ((Cell *)(p->narg[0]))->sval;
148 Node *notnull(Node *n)
150 switch (n->nobj) {
151 case LE: case LT: case EQ: case NE: case GT: case GE:
152 case BOR: case AND: case NOT:
153 return n;
154 default:
155 return op2(NE, n, nullnode);
159 void checkdup(Node *vl, Cell *cp) /* check if name already in list */
161 char *s = cp->nval;
162 for ( ; vl; vl = vl->nnext) {
163 if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {
164 SYNTAX("duplicate argument %s", s);
165 break;
169 static const short yyexca[] =
170 {-1, 0,
171 1, 28,
172 8, 28,
173 9, 28,
174 12, 28,
175 13, 28,
176 16, 28,
177 46, 28,
178 47, 28,
179 49, 28,
180 55, 28,
181 56, 28,
182 57, 28,
183 59, 28,
184 61, 28,
185 79, 28,
186 87, 28,
187 88, 28,
188 89, 28,
189 90, 28,
190 91, 28,
191 92, 28,
192 96, 28,
193 98, 28,
194 99, 28,
195 102, 28,
196 103, 28,
197 106, 28,
198 109, 28,
199 110, 28,
200 111, 28,
201 -2, 0,
202 -1, 1,
203 1, -1,
204 -2, 0,
205 -1, 157,
206 15, 30,
207 -2, 0,
208 -1, 176,
209 14, 0,
210 24, 0,
211 39, 0,
212 40, 0,
213 41, 0,
214 42, 0,
215 43, 0,
216 44, 0,
217 45, 0,
218 -2, 63,
219 -1, 177,
220 14, 0,
221 24, 0,
222 39, 0,
223 40, 0,
224 41, 0,
225 42, 0,
226 43, 0,
227 44, 0,
228 45, 0,
229 -2, 64,
230 -1, 178,
231 14, 0,
232 24, 0,
233 39, 0,
234 40, 0,
235 41, 0,
236 42, 0,
237 43, 0,
238 44, 0,
239 45, 0,
240 -2, 65,
241 -1, 179,
242 14, 0,
243 24, 0,
244 39, 0,
245 40, 0,
246 41, 0,
247 42, 0,
248 43, 0,
249 44, 0,
250 45, 0,
251 -2, 66,
252 -1, 180,
253 14, 0,
254 24, 0,
255 39, 0,
256 40, 0,
257 41, 0,
258 42, 0,
259 43, 0,
260 44, 0,
261 45, 0,
262 -2, 67,
263 -1, 181,
264 14, 0,
265 24, 0,
266 39, 0,
267 40, 0,
268 41, 0,
269 42, 0,
270 43, 0,
271 44, 0,
272 45, 0,
273 -2, 68,
274 -1, 183,
275 14, 0,
276 24, 0,
277 39, 0,
278 40, 0,
279 41, 0,
280 42, 0,
281 43, 0,
282 44, 0,
283 45, 0,
284 -2, 70,
285 -1, 289,
286 24, 0,
287 45, 0,
288 -2, 53,
289 -1, 334,
290 17, 30,
291 -2, 0,
292 -1, 356,
293 17, 30,
294 -2, 0,
296 #define YYNPROD 185
297 #define YYPRIVATE 57344
298 #define YYLAST 4442
299 static const short yyact[] =
301 17, 140, 66, 228, 200, 105, 43, 62, 277, 10,
302 125, 24, 11, 43, 253, 135, 100, 112, 51, 141,
303 79, 80, 308, 243, 100, 185, 100, 100, 100, 103,
304 104, 100, 122, 123, 124, 215, 82, 249, 54, 83,
305 102, 107, 43, 107, 253, 223, 9, 42, 22, 44,
306 43, 113, 314, 252, 42, 22, 44, 206, 11, 143,
307 253, 147, 103, 104, 244, 150, 151, 153, 154, 278,
308 113, 23, 136, 163, 353, 100, 190, 276, 23, 103,
309 104, 190, 336, 42, 156, 44, 190, 324, 136, 352,
310 134, 42, 22, 44, 190, 316, 43, 133, 85, 351,
311 100, 149, 321, 258, 320, 182, 269, 100, 100, 100,
312 100, 100, 100, 100, 232, 23, 86, 190, 168, 169,
313 275, 318, 332, 278, 203, 205, 100, 108, 109, 110,
314 111, 110, 111, 112, 211, 112, 170, 42, 233, 44,
315 190, 234, 212, 190, 190, 217, 284, 100, 221, 265,
316 260, 190, 167, 100, 226, 190, 3, 259, 219, 158,
317 230, 188, 136, 100, 6, 137, 137, 236, 6, 7,
318 142, 310, 100, 7, 100, 157, 100, 100, 100, 100,
319 100, 100, 100, 131, 100, 21, 251, 100, 100, 130,
320 48, 129, 128, 16, 100, 49, 127, 126, 120, 119,
321 52, 16, 100, 190, 312, 137, 274, 100, 218, 100,
322 100, 100, 144, 4, 100, 100, 155, 271, 145, 132,
323 317, 348, 50, 55, 362, 270, 365, 162, 1, 72,
324 40, 224, 100, 100, 100, 100, 163, 5, 163, 163,
325 163, 163, 20, 58, 163, 67, 100, 222, 61, 292,
326 60, 19, 288, 248, 293, 100, 100, 294, 96, 166,
327 81, 238, 8, 159, 160, 2, 114, 0, 116, 117,
328 118, 0, 0, 121, 300, 301, 0, 115, 139, 239,
329 184, 0, 0, 100, 0, 148, 100, 100, 100, 313,
330 100, 309, 100, 0, 0, 136, 0, 100, 0, 100,
331 100, 0, 0, 100, 0, 100, 100, 100, 0, 307,
332 0, 0, 0, 0, 0, 165, 163, 96, 0, 0,
333 335, 0, 0, 0, 164, 339, 334, 342, 0, 343,
334 136, 0, 0, 0, 100, 341, 0, 230, 347, 100,
335 0, 100, 116, 229, 0, 100, 100, 0, 0, 96,
336 194, 195, 196, 197, 198, 199, 357, 360, 139, 230,
337 361, 0, 356, 0, 0, 0, 136, 0, 207, 220,
338 363, 0, 0, 139, 0, 0, 0, 0, 349, 227,
339 0, 238, 0, 0, 238, 238, 238, 0, 238, 96,
340 238, 0, 139, 139, 0, 96, 0, 0, 0, 239,
341 0, 257, 239, 239, 239, 242, 239, 0, 239, 0,
342 0, 0, 0, 0, 96, 0, 96, 0, 96, 96,
343 96, 96, 96, 96, 96, 0, 96, 290, 0, 96,
344 96, 0, 0, 0, 0, 0, 256, 238, 297, 0,
345 0, 0, 0, 0, 96, 0, 273, 0, 0, 261,
346 303, 96, 96, 96, 0, 239, 96, 96, 0, 0,
347 0, 0, 311, 282, 0, 285, 286, 287, 289, 0,
348 0, 291, 0, 0, 96, 279, 280, 281, 165, 0,
349 165, 165, 165, 165, 0, 0, 165, 164, 96, 164,
350 164, 164, 164, 0, 0, 164, 0, 96, 96, 0,
351 337, 0, 0, 0, 0, 74, 0, 189, 191, 0,
352 15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
353 0, 0, 0, 0, 106, 242, 0, 0, 242, 242,
354 242, 139, 242, 0, 242, 0, 0, 0, 0, 96,
355 0, 96, 96, 338, 0, 96, 0, 96, 96, 96,
356 0, 0, 0, 0, 0, 0, 15, 0, 165, 0,
357 0, 0, 235, 0, 0, 146, 0, 164, 0, 0,
358 0, 152, 358, 139, 0, 0, 96, 0, 0, 0,
359 0, 242, 0, 96, 0, 0, 364, 96, 96, 366,
360 171, 173, 175, 176, 177, 178, 179, 180, 181, 183,
361 0, 0, 0, 0, 0, 0, 0, 186, 187, 0,
362 262, 263, 264, 0, 266, 267, 268, 0, 0, 201,
363 0, 0, 0, 0, 0, 201, 201, 0, 0, 0,
364 0, 0, 208, 209, 210, 201, 213, 214, 189, 0,
365 0, 15, 0, 0, 0, 0, 190, 0, 101, 95,
366 295, 0, 330, 0, 0, 0, 0, 0, 0, 93,
367 0, 0, 0, 0, 231, 0, 0, 106, 0, 0,
368 0, 98, 97, 245, 87, 88, 89, 90, 91, 92,
369 94, 43, 28, 0, 30, 0, 0, 0, 0, 0,
370 0, 46, 47, 0, 34, 254, 35, 255, 0, 0,
371 0, 0, 0, 0, 0, 323, 326, 328, 329, 0,
372 0, 0, 0, 0, 38, 189, 0, 0, 0, 0,
373 0, 0, 42, 22, 44, 29, 36, 39, 0, 84,
374 0, 33, 0, 37, 41, 0, 0, 27, 26, 0,
375 0, 99, 0, 0, 31, 32, 23, 0, 0, 0,
376 201, 0, 0, 0, 0, 0, 296, 0, 0, 0,
377 0, 0, 0, 298, 0, 0, 0, 0, 299, 302,
378 0, 0, 304, 305, 306, 0, 0, 0, 0, 0,
379 0, 0, 0, 0, 0, 0, 0, 0, 0, 106,
380 0, 0, 0, 0, 0, 75, 0, 0, 0, 0,
381 0, 0, 0, 0, 0, 16, 18, 0, 68, 45,
382 0, 359, 0, 0, 0, 333, 0, 0, 0, 0,
383 0, 0, 0, 0, 0, 0, 0, 0, 0, 340,
384 0, 0, 0, 0, 0, 344, 0, 0, 345, 43,
385 28, 56, 30, 57, 73, 69, 59, 70, 0, 46,
386 47, 71, 34, 0, 35, 63, 64, 0, 0, 0,
387 0, 0, 0, 0, 0, 75, 0, 0, 0, 0,
388 77, 78, 38, 53, 0, 16, 18, 0, 68, 45,
389 42, 22, 44, 29, 36, 39, 0, 0, 0, 33,
390 65, 37, 41, 76, 0, 27, 26, 0, 0, 25,
391 0, 0, 31, 32, 23, 0, 0, 0, 0, 43,
392 28, 56, 30, 57, 73, 69, 59, 70, 0, 46,
393 47, 71, 34, 0, 35, 63, 64, 0, 0, 0,
394 0, 0, 0, 75, 0, 0, 0, 0, 0, 0,
395 77, 78, 38, 16, 18, 0, 68, 45, 0, 331,
396 42, 22, 44, 29, 36, 39, 0, 0, 0, 33,
397 65, 37, 41, 76, 0, 27, 26, 0, 0, 25,
398 0, 0, 31, 32, 23, 0, 0, 43, 28, 56,
399 30, 57, 73, 69, 59, 70, 0, 46, 47, 71,
400 34, 0, 35, 63, 64, 0, 0, 0, 0, 0,
401 0, 0, 0, 75, 0, 0, 0, 0, 77, 78,
402 38, 272, 0, 16, 18, 0, 68, 45, 42, 22,
403 44, 29, 36, 39, 0, 0, 0, 33, 65, 37,
404 41, 76, 0, 27, 26, 0, 0, 25, 0, 0,
405 31, 32, 23, 0, 0, 0, 0, 43, 28, 56,
406 30, 57, 73, 69, 59, 70, 0, 46, 47, 71,
407 34, 0, 35, 63, 64, 0, 0, 0, 0, 0,
408 0, 75, 0, 0, 0, 0, 0, 0, 77, 78,
409 38, 16, 18, 0, 68, 45, 0, 247, 42, 22,
410 44, 29, 36, 39, 0, 0, 0, 33, 65, 37,
411 41, 76, 0, 27, 26, 0, 0, 25, 0, 0,
412 31, 32, 23, 0, 0, 43, 28, 56, 30, 57,
413 73, 69, 59, 70, 0, 46, 47, 71, 34, 0,
414 35, 63, 64, 0, 0, 0, 0, 0, 0, 75,
415 0, 0, 0, 0, 0, 0, 77, 78, 38, 16,
416 18, 0, 68, 45, 0, 246, 42, 22, 44, 29,
417 36, 39, 0, 0, 0, 33, 65, 37, 41, 76,
418 0, 27, 26, 0, 0, 25, 0, 0, 31, 32,
419 23, 0, 0, 43, 28, 56, 30, 57, 73, 69,
420 59, 70, 0, 46, 47, 71, 34, 0, 35, 63,
421 64, 0, 0, 0, 0, 0, 0, 75, 0, 0,
422 0, 0, 0, 0, 77, 78, 38, 16, 18, 0,
423 68, 45, 0, 225, 42, 22, 44, 29, 36, 39,
424 0, 0, 0, 33, 65, 37, 41, 76, 0, 27,
425 26, 0, 0, 25, 0, 0, 31, 32, 23, 0,
426 0, 43, 28, 56, 30, 57, 73, 69, 59, 70,
427 0, 46, 47, 71, 34, 0, 35, 63, 64, 0,
428 0, 0, 0, 0, 0, 75, 0, 0, 0, 0,
429 0, 0, 77, 78, 38, 16, 18, 0, 68, 45,
430 0, 216, 42, 22, 44, 29, 36, 39, 0, 0,
431 0, 33, 65, 37, 41, 76, 0, 27, 26, 0,
432 0, 25, 0, 0, 31, 32, 23, 0, 0, 43,
433 28, 56, 30, 57, 73, 69, 59, 70, 0, 46,
434 47, 71, 34, 0, 35, 63, 64, 0, 0, 0,
435 0, 0, 0, 75, 0, 0, 0, 0, 0, 0,
436 77, 78, 38, 16, 18, 0, 68, 45, 0, 138,
437 42, 22, 44, 29, 36, 39, 0, 0, 0, 33,
438 65, 37, 41, 76, 0, 27, 26, 0, 0, 25,
439 0, 0, 31, 32, 23, 0, 0, 43, 28, 56,
440 30, 57, 73, 69, 59, 70, 0, 46, 47, 71,
441 34, 0, 35, 63, 64, 0, 0, 0, 0, 0,
442 0, 75, 0, 0, 0, 0, 0, 0, 77, 78,
443 38, 16, 18, 0, 68, 45, 0, 0, 42, 22,
444 44, 29, 36, 39, 0, 0, 0, 33, 65, 37,
445 41, 76, 0, 27, 26, 0, 0, 25, 0, 0,
446 31, 32, 23, 0, 0, 43, 28, 56, 30, 57,
447 73, 69, 59, 70, 0, 46, 47, 71, 34, 0,
448 35, 63, 64, 0, 0, 0, 0, 0, 0, 0,
449 0, 0, 0, 0, 0, 0, 77, 78, 38, 0,
450 0, 0, 0, 0, 0, 0, 42, 22, 44, 29,
451 36, 39, 0, 0, 0, 33, 65, 37, 41, 76,
452 0, 27, 26, 0, 0, 25, 0, 0, 31, 32,
453 23, 190, 0, 101, 95, 0, 0, 327, 0, 0,
454 0, 0, 0, 0, 93, 0, 0, 0, 0, 0,
455 0, 0, 0, 0, 0, 0, 98, 97, 0, 87,
456 88, 89, 90, 91, 92, 94, 43, 28, 0, 30,
457 0, 0, 0, 0, 0, 0, 46, 47, 0, 34,
458 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
459 0, 0, 0, 0, 0, 0, 0, 0, 0, 38,
460 0, 0, 0, 0, 0, 0, 0, 42, 22, 44,
461 29, 36, 39, 0, 84, 0, 33, 0, 37, 41,
462 0, 0, 27, 26, 0, 0, 99, 0, 0, 31,
463 32, 23, 190, 0, 101, 95, 0, 0, 325, 0,
464 0, 0, 0, 0, 0, 93, 0, 0, 0, 0,
465 0, 0, 0, 0, 0, 0, 0, 98, 97, 0,
466 87, 88, 89, 90, 91, 92, 94, 43, 28, 0,
467 30, 0, 0, 0, 0, 0, 0, 46, 47, 0,
468 34, 0, 35, 0, 0, 0, 0, 0, 0, 0,
469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
470 38, 0, 0, 0, 0, 0, 0, 0, 42, 22,
471 44, 29, 36, 39, 0, 84, 0, 33, 0, 37,
472 41, 0, 0, 27, 26, 0, 0, 99, 0, 0,
473 31, 32, 23, 137, 0, 0, 101, 95, 142, 0,
474 0, 0, 0, 0, 0, 0, 0, 93, 0, 0,
475 0, 0, 0, 0, 0, 0, 0, 0, 0, 98,
476 97, 0, 87, 88, 89, 90, 91, 92, 94, 43,
477 28, 0, 30, 0, 0, 0, 0, 0, 0, 46,
478 47, 0, 34, 0, 35, 0, 0, 0, 0, 0,
479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
480 0, 0, 38, 0, 0, 0, 0, 0, 0, 0,
481 42, 22, 44, 29, 36, 39, 0, 84, 0, 33,
482 0, 37, 41, 0, 0, 27, 26, 0, 0, 99,
483 0, 0, 31, 32, 23, 190, 0, 101, 95, 0,
484 0, 192, 0, 0, 0, 0, 0, 0, 93, 0,
485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
486 98, 97, 0, 87, 88, 89, 90, 91, 92, 94,
487 43, 28, 0, 30, 0, 0, 0, 0, 0, 0,
488 46, 47, 0, 34, 0, 35, 0, 0, 0, 0,
489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
490 0, 0, 0, 38, 0, 0, 0, 0, 0, 0,
491 0, 42, 22, 44, 29, 36, 39, 0, 84, 0,
492 33, 0, 37, 41, 0, 0, 27, 26, 101, 95,
493 99, 0, 355, 31, 32, 23, 0, 0, 0, 93,
494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
495 0, 98, 97, 0, 87, 88, 89, 90, 91, 92,
496 94, 43, 28, 0, 30, 0, 0, 0, 0, 0,
497 0, 46, 47, 0, 34, 0, 35, 0, 0, 0,
498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
499 0, 0, 0, 0, 38, 0, 0, 0, 0, 0,
500 0, 0, 42, 22, 44, 29, 36, 39, 0, 84,
501 0, 33, 0, 37, 41, 0, 0, 27, 26, 101,
502 95, 99, 0, 354, 31, 32, 23, 0, 0, 0,
503 93, 0, 0, 0, 0, 0, 0, 0, 0, 0,
504 0, 0, 98, 97, 0, 87, 88, 89, 90, 91,
505 92, 94, 43, 28, 0, 30, 0, 0, 0, 0,
506 0, 0, 46, 47, 0, 34, 0, 35, 0, 0,
507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
508 0, 0, 0, 0, 0, 38, 0, 0, 0, 0,
509 0, 0, 0, 42, 22, 44, 29, 36, 39, 0,
510 84, 0, 33, 0, 37, 41, 0, 0, 27, 26,
511 101, 95, 99, 0, 350, 31, 32, 23, 0, 0,
512 0, 93, 0, 0, 0, 0, 0, 0, 0, 0,
513 0, 0, 0, 98, 97, 0, 87, 88, 89, 90,
514 91, 92, 94, 43, 28, 0, 30, 0, 0, 0,
515 0, 0, 0, 46, 47, 0, 34, 0, 35, 0,
516 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
517 0, 0, 0, 0, 0, 0, 38, 0, 0, 0,
518 0, 0, 0, 0, 42, 22, 44, 29, 36, 39,
519 0, 84, 0, 33, 0, 37, 41, 0, 0, 27,
520 26, 0, 0, 99, 0, 0, 31, 32, 23, 101,
521 95, 346, 0, 0, 0, 0, 0, 0, 0, 0,
522 93, 0, 0, 0, 0, 0, 0, 0, 0, 0,
523 0, 0, 98, 97, 0, 87, 88, 89, 90, 91,
524 92, 94, 43, 28, 0, 30, 0, 0, 0, 0,
525 0, 0, 46, 47, 0, 34, 0, 35, 0, 0,
526 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
527 0, 0, 0, 0, 0, 38, 0, 0, 0, 0,
528 0, 0, 0, 42, 22, 44, 29, 36, 39, 0,
529 84, 0, 33, 0, 37, 41, 0, 0, 27, 26,
530 101, 95, 99, 0, 322, 31, 32, 23, 0, 0,
531 0, 93, 0, 0, 0, 0, 0, 0, 0, 0,
532 0, 0, 0, 98, 97, 0, 87, 88, 89, 90,
533 91, 92, 94, 43, 28, 0, 30, 0, 0, 0,
534 0, 0, 0, 46, 47, 0, 34, 0, 35, 0,
535 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
536 0, 0, 0, 0, 0, 0, 38, 0, 0, 0,
537 0, 0, 0, 0, 42, 22, 44, 29, 36, 39,
538 0, 84, 0, 33, 0, 37, 41, 0, 0, 27,
539 26, 101, 95, 99, 0, 319, 31, 32, 23, 0,
540 0, 0, 93, 0, 0, 0, 0, 0, 0, 0,
541 0, 0, 0, 0, 98, 97, 0, 87, 88, 89,
542 90, 91, 92, 94, 43, 28, 0, 30, 0, 0,
543 0, 0, 0, 0, 46, 47, 0, 34, 0, 35,
544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
545 0, 0, 0, 0, 0, 0, 0, 38, 0, 0,
546 0, 0, 0, 0, 0, 42, 22, 44, 29, 36,
547 39, 0, 84, 0, 33, 0, 37, 41, 0, 0,
548 27, 26, 101, 95, 99, 0, 278, 31, 32, 23,
549 0, 0, 0, 93, 0, 0, 0, 0, 0, 0,
550 0, 0, 0, 0, 0, 98, 97, 0, 87, 88,
551 89, 90, 91, 92, 94, 43, 28, 0, 30, 0,
552 0, 0, 0, 0, 0, 46, 47, 0, 34, 0,
553 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
554 0, 0, 0, 0, 0, 0, 0, 0, 38, 0,
555 0, 0, 0, 0, 0, 0, 42, 22, 44, 29,
556 36, 39, 0, 84, 0, 33, 0, 37, 41, 0,
557 0, 27, 26, 0, 190, 99, 101, 95, 31, 32,
558 23, 0, 0, 0, 0, 0, 0, 93, 0, 0,
559 0, 0, 0, 0, 0, 0, 0, 0, 0, 98,
560 97, 0, 87, 88, 89, 90, 91, 92, 94, 43,
561 28, 0, 30, 0, 0, 0, 0, 0, 0, 46,
562 47, 0, 34, 0, 35, 0, 0, 0, 0, 0,
563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
564 0, 0, 38, 0, 0, 0, 0, 0, 0, 0,
565 42, 22, 44, 29, 36, 39, 0, 84, 0, 33,
566 0, 37, 41, 0, 0, 27, 26, 101, 95, 99,
567 0, 192, 31, 32, 23, 0, 0, 0, 93, 0,
568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
569 98, 97, 0, 87, 88, 89, 90, 91, 92, 94,
570 43, 28, 0, 30, 0, 0, 0, 0, 0, 0,
571 46, 47, 0, 34, 0, 35, 0, 0, 0, 0,
572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
573 0, 0, 0, 38, 0, 0, 0, 0, 0, 0,
574 0, 42, 22, 44, 29, 36, 39, 0, 84, 0,
575 33, 0, 37, 41, 0, 0, 27, 26, 101, 95,
576 99, 0, 0, 31, 32, 23, 0, 0, 0, 93,
577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
578 0, 98, 97, 0, 87, 88, 89, 90, 91, 92,
579 94, 43, 28, 0, 30, 0, 0, 0, 0, 0,
580 0, 46, 47, 0, 34, 0, 35, 0, 0, 0,
581 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
582 0, 0, 0, 0, 38, 0, 0, 0, 0, 0,
583 0, 0, 42, 22, 44, 29, 36, 39, 0, 84,
584 250, 33, 0, 37, 41, 0, 0, 27, 26, 101,
585 95, 99, 0, 0, 31, 32, 23, 0, 0, 0,
586 93, 0, 0, 0, 0, 0, 0, 0, 0, 0,
587 0, 0, 98, 97, 0, 87, 88, 89, 90, 91,
588 92, 94, 43, 28, 0, 30, 0, 0, 0, 0,
589 0, 0, 46, 47, 0, 34, 0, 35, 0, 0,
590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
591 0, 0, 0, 0, 0, 38, 0, 0, 0, 0,
592 0, 0, 0, 42, 22, 44, 29, 36, 39, 0,
593 84, 0, 33, 0, 37, 41, 0, 0, 27, 26,
594 101, 95, 99, 0, 0, 31, 32, 23, 0, 0,
595 0, 93, 0, 0, 0, 0, 0, 0, 0, 0,
596 0, 0, 0, 98, 0, 0, 87, 88, 89, 90,
597 91, 92, 94, 43, 28, 0, 30, 0, 0, 0,
598 0, 0, 0, 46, 47, 0, 34, 0, 35, 0,
599 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
600 0, 0, 0, 0, 0, 0, 38, 0, 0, 0,
601 0, 0, 0, 0, 42, 22, 44, 29, 36, 39,
602 101, 95, 0, 33, 0, 37, 41, 0, 0, 27,
603 26, 93, 0, 99, 0, 0, 31, 32, 23, 0,
604 0, 0, 0, 0, 0, 0, 87, 88, 89, 90,
605 91, 92, 94, 43, 28, 0, 30, 0, 0, 0,
606 0, 0, 0, 46, 47, 0, 34, 0, 35, 0,
607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
608 0, 0, 0, 0, 0, 0, 38, 0, 0, 0,
609 0, 101, 0, 0, 42, 22, 44, 29, 36, 39,
610 0, 0, 240, 33, 0, 37, 41, 0, 0, 27,
611 26, 0, 0, 99, 98, 97, 31, 32, 23, 0,
612 0, 0, 0, 241, 43, 28, 0, 30, 0, 0,
613 0, 0, 0, 0, 46, 47, 0, 34, 0, 35,
614 0, 0, 0, 0, 0, 0, 0, 75, 0, 0,
615 0, 0, 0, 0, 0, 0, 0, 38, 18, 0,
616 0, 45, 0, 0, 0, 42, 22, 44, 29, 36,
617 39, 0, 237, 315, 33, 0, 37, 41, 0, 0,
618 27, 26, 0, 0, 99, 0, 0, 31, 32, 23,
619 0, 43, 28, 0, 30, 0, 73, 0, 0, 0,
620 0, 46, 47, 0, 34, 0, 35, 0, 0, 0,
621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
622 0, 0, 77, 78, 38, 0, 0, 0, 0, 101,
623 0, 0, 42, 22, 44, 29, 36, 39, 0, 0,
624 240, 33, 0, 37, 41, 0, 0, 27, 26, 0,
625 0, 25, 98, 97, 31, 32, 23, 0, 0, 0,
626 0, 241, 43, 28, 0, 30, 0, 0, 0, 0,
627 0, 0, 46, 47, 0, 34, 0, 35, 0, 0,
628 0, 0, 12, 13, 0, 0, 16, 18, 0, 0,
629 45, 0, 0, 0, 0, 38, 0, 0, 0, 0,
630 0, 0, 0, 42, 22, 44, 29, 36, 39, 0,
631 237, 0, 33, 0, 37, 41, 0, 0, 27, 26,
632 43, 28, 99, 30, 0, 31, 32, 23, 0, 14,
633 46, 47, 0, 34, 0, 35, 0, 0, 0, 0,
634 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
635 0, 0, 0, 38, 0, 0, 101, 0, 0, 0,
636 0, 42, 22, 44, 29, 36, 39, 240, 0, 0,
637 33, 0, 37, 41, 0, 0, 27, 26, 0, 98,
638 25, 0, 0, 31, 32, 23, 0, 0, 241, 43,
639 28, 0, 30, 0, 0, 0, 0, 0, 0, 46,
640 47, 0, 34, 0, 35, 0, 0, 0, 0, 0,
641 0, 137, 0, 0, 18, 0, 142, 45, 0, 0,
642 0, 0, 38, 0, 0, 0, 0, 0, 0, 0,
643 42, 22, 44, 29, 36, 39, 0, 0, 0, 33,
644 0, 37, 41, 0, 0, 27, 26, 43, 28, 99,
645 30, 0, 31, 32, 23, 0, 0, 46, 47, 0,
646 34, 0, 35, 0, 0, 0, 0, 0, 0, 253,
647 0, 0, 18, 0, 0, 45, 0, 0, 0, 0,
648 38, 0, 0, 0, 0, 0, 0, 0, 42, 22,
649 44, 29, 36, 39, 0, 0, 0, 33, 0, 37,
650 41, 0, 0, 27, 26, 43, 28, 25, 30, 0,
651 31, 32, 23, 0, 0, 46, 47, 0, 34, 0,
652 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
653 0, 0, 0, 0, 0, 0, 0, 0, 38, 0,
654 0, 101, 0, 0, 0, 0, 42, 22, 44, 29,
655 36, 39, 240, 0, 0, 33, 0, 37, 41, 0,
656 0, 27, 26, 0, 0, 25, 0, 0, 31, 32,
657 23, 0, 0, 241, 43, 28, 0, 30, 0, 0,
658 0, 0, 0, 0, 46, 47, 0, 34, 0, 35,
659 0, 0, 0, 0, 0, 0, 174, 0, 0, 283,
660 0, 0, 45, 0, 0, 0, 0, 38, 0, 0,
661 0, 0, 0, 0, 0, 42, 22, 44, 29, 36,
662 39, 0, 0, 0, 33, 0, 37, 41, 0, 0,
663 27, 26, 43, 28, 99, 30, 0, 31, 32, 23,
664 0, 0, 46, 47, 0, 34, 0, 35, 0, 0,
665 0, 0, 0, 0, 172, 0, 0, 283, 0, 0,
666 45, 0, 0, 0, 0, 38, 0, 0, 0, 0,
667 0, 0, 0, 42, 22, 44, 29, 36, 39, 0,
668 0, 0, 33, 0, 37, 41, 0, 0, 27, 26,
669 43, 28, 25, 30, 0, 31, 32, 23, 0, 0,
670 46, 47, 0, 34, 0, 35, 0, 0, 0, 0,
671 0, 0, 253, 0, 0, 283, 0, 0, 45, 0,
672 0, 0, 0, 38, 0, 0, 0, 0, 0, 0,
673 0, 42, 22, 44, 29, 36, 39, 0, 0, 0,
674 33, 0, 37, 41, 0, 0, 27, 26, 43, 28,
675 25, 30, 0, 31, 32, 23, 0, 0, 46, 47,
676 0, 34, 0, 35, 0, 0, 0, 0, 0, 0,
677 0, 0, 0, 18, 0, 0, 45, 204, 0, 0,
678 0, 38, 0, 0, 0, 0, 0, 0, 0, 42,
679 22, 44, 29, 36, 39, 0, 0, 0, 33, 0,
680 37, 41, 0, 0, 27, 26, 43, 28, 25, 30,
681 0, 31, 32, 23, 0, 0, 46, 47, 0, 34,
682 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
683 0, 18, 0, 0, 45, 202, 0, 0, 0, 38,
684 0, 0, 0, 0, 0, 0, 0, 42, 22, 44,
685 29, 36, 39, 0, 0, 0, 33, 0, 37, 41,
686 0, 0, 27, 26, 43, 28, 25, 30, 0, 31,
687 32, 23, 0, 0, 46, 47, 0, 34, 0, 35,
688 0, 0, 0, 0, 0, 0, 174, 0, 0, 18,
689 0, 0, 45, 0, 0, 0, 0, 38, 0, 0,
690 0, 0, 0, 0, 0, 42, 22, 44, 29, 36,
691 39, 0, 0, 0, 33, 0, 37, 41, 0, 0,
692 27, 26, 43, 28, 25, 30, 0, 31, 32, 23,
693 0, 0, 46, 47, 0, 34, 0, 35, 0, 0,
694 0, 0, 0, 0, 172, 0, 0, 18, 0, 0,
695 45, 0, 0, 0, 0, 38, 0, 0, 0, 0,
696 0, 0, 0, 42, 22, 44, 29, 36, 39, 0,
697 0, 0, 33, 0, 37, 41, 0, 0, 27, 26,
698 43, 28, 25, 30, 0, 31, 32, 23, 0, 0,
699 46, 47, 0, 34, 0, 35, 0, 0, 0, 0,
700 0, 0, 0, 0, 0, 18, 0, 0, 45, 0,
701 0, 0, 0, 38, 0, 0, 0, 0, 0, 0,
702 0, 42, 22, 44, 29, 36, 39, 0, 0, 0,
703 33, 0, 37, 41, 0, 0, 27, 26, 43, 28,
704 25, 30, 0, 31, 32, 23, 0, 0, 46, 47,
705 0, 34, 0, 35, 0, 0, 0, 0, 0, 0,
706 0, 0, 0, 283, 0, 0, 45, 0, 0, 0,
707 0, 38, 0, 0, 0, 0, 0, 0, 0, 42,
708 22, 44, 29, 36, 39, 0, 0, 0, 33, 0,
709 37, 41, 0, 0, 27, 26, 43, 28, 25, 30,
710 0, 31, 32, 23, 0, 0, 46, 47, 0, 34,
711 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
712 0, 101, 0, 0, 0, 0, 0, 0, 0, 38,
713 0, 0, 0, 0, 0, 0, 0, 42, 22, 44,
714 29, 36, 39, 0, 0, 0, 33, 0, 37, 41,
715 0, 0, 27, 26, 43, 28, 25, 30, 0, 31,
716 32, 23, 0, 0, 46, 47, 0, 34, 0, 35,
717 0, 0, 0, 0, 0, 0, 0, 0, 193, 161,
718 0, 0, 45, 0, 0, 0, 0, 38, 0, 0,
719 0, 0, 0, 0, 0, 42, 22, 44, 29, 36,
720 39, 0, 0, 0, 33, 0, 37, 41, 0, 0,
721 27, 26, 43, 28, 99, 30, 0, 31, 32, 23,
722 0, 0, 46, 47, 0, 34, 0, 35, 0, 0,
723 0, 0, 0, 0, 0, 0, 0, 101, 0, 0,
724 45, 0, 0, 0, 0, 38, 0, 0, 0, 0,
725 0, 0, 0, 42, 22, 44, 29, 36, 39, 0,
726 0, 0, 33, 0, 37, 41, 0, 0, 27, 26,
727 43, 28, 25, 30, 0, 31, 32, 23, 0, 0,
728 46, 47, 0, 34, 0, 35, 0, 0, 0, 0,
729 0, 0, 0, 0, 0, 101, 0, 0, 0, 0,
730 0, 0, 0, 38, 0, 0, 0, 0, 0, 0,
731 0, 42, 22, 44, 29, 36, 39, 0, 0, 0,
732 33, 0, 37, 41, 0, 0, 27, 26, 43, 28,
733 25, 30, 0, 31, 32, 23, 0, 0, 46, 47,
734 0, 34, 0, 35, 0, 0, 0, 0, 0, 0,
735 0, 0, 0, 101, 0, 0, 0, 0, 0, 0,
736 0, 38, 0, 0, 0, 0, 0, 0, 0, 42,
737 22, 44, 29, 36, 39, 0, 0, 0, 33, 0,
738 37, 41, 0, 0, 27, 26, 43, 28, 99, 30,
739 0, 31, 32, 23, 0, 0, 46, 47, 0, 34,
740 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
741 0, 0, 0, 0, 0, 0, 0, 0, 0, 38,
742 0, 0, 0, 0, 0, 0, 0, 42, 22, 44,
743 29, 36, 39, 0, 0, 0, 0, 0, 37, 41,
744 0, 0, 27, 26, 0, 0, 99, 0, 0, 31,
745 32, 23
747 static const short yypact[] =
749 154,-1000,-1000,-1000,3264, 180,-1000,-1000, 158,-1000,
750 189, 863, 181, 181, -51,2826,-1000, -30,3982,-1000,
751 25, 51,-1000,4272,-1000,4214,4272,4272, 186, 185,
752 4272, -40, -40, -33, 184, 183,-1000, 179, 178,-1000,
753 176, 170,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
754 3264, 863, 195,-1000,1341,-1000, 155, 155, 202,3391,
755 -1000,1409, 863, 155, 155,3391, 155,-1000, 195,-1000,
756 162, 146,4156, -4,2826,-1000, 139,-1000,-1000, 863,
757 863, 123,-1000,-1000,3982,3924,3866,3982,3982,3982,
758 3982,3982,3982,3982, -4, -71, 25,-1000,-1000,4272,
759 -80,3982,3982,-1000,-1000, 144,1814,4098,4272,4272,
760 4272,4272,4272,3982,-1000,-1000, -91, -91, -91,3808,
761 3750, 25,-1000,-1000, 14,4272,3982,3982,3982,3982,
762 3982,3982, -58,-1000,1273,3982, 198,-1000,-1000,-1000,
763 -1000, 198, 195,-1000,-1000,1409,1713,-1000, -35,1205,
764 -1000,-1000,1713,-1000,-1000,1409,-1000,3135,3982, 100,
765 192,3982,3206, -47,-1000, 25, 45,3982,1137,1069,
766 -50,2735,-1000,2917,-1000,2997,4330,4330,4330,4330,
767 4330,4330,-1000,4330,-1000, -40,2644,2826, 8,3449,
768 -1000,3449,-1000,4272, -91, 27, 27, -91, -91, -91,
769 83,2826,-1000, 140,-1000, 133,4272, 25,2553,2553,
770 2553, 132, 192,2553,2553, 90,-1000, 181,-1000,-1000,
771 -1000,-1000,1001,-1000, 196,-1000,-1000,-1000, 105, 32,
772 -1000,2459,4272,4272,4272,3692, 129,4040,3634,3576,
773 4040, -4, 25,4040,3982,2459,-1000,-1000, 106,-1000,
774 3982,-1000, -4,-1000,2826,2826, 25,3449,-1000,-1000,
775 -1000, 25,3449,3449, 50,-1000,3449,3449,3449,-1000,
776 863, -78,-1000,-1000,-1000, 156, -4, 194,-1000, 25,
777 25, 25,3206,3982, 7,3068,3333,3518,-1000,4330,
778 -1000,3206, 75, 194, 194, 34,2826,-1000,2826,2368,
779 87, 85,2277, 70,1611,1510, 635, 931, 109,3982,
780 195, 52,-1000, 65, -4,4040,-1000, 181,-1000,-1000,
781 -1000,-1000,-1000,3449,-1000,-1000, 4,-1000, 4,3449,
782 -1000,-1000,3982,2186,3135, 194, 7,-1000,3206, 863,
783 2087, 82, 72, 57,1996,1905, 195, 52,1409, 793,
784 -1000,-1000,-1000,-1000,-1000, 155,3135, 194,-1000,-1000,
785 -1000, 52,1409, 194,-1000,1409,-1000
787 static const short yypgo[] =
789 0, 265, 505, 227, 5, 264, 4, 263, 242, 251,
790 9, 46, 262, 11, 2, 3, 223, 38, 0, 185,
791 260, 253, 250, 248, 247, 245, 243, 1, 237, 213,
792 7, 231, 8, 401, 19, 15, 116, 98, 230, 229,
793 228, 226, 224, 221, 220, 219, 218, 217, 216
795 static const short yyr1[] =
797 0, 40, 40, 36, 36, 37, 37, 33, 33, 26,
798 26, 24, 24, 41, 22, 42, 22, 43, 22, 20,
799 20, 23, 30, 30, 34, 34, 35, 35, 29, 29,
800 15, 15, 1, 1, 10, 11, 11, 11, 11, 11,
801 11, 11, 44, 11, 12, 12, 6, 6, 3, 3,
802 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
803 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
804 2, 2, 2, 2, 2, 2, 2, 2, 4, 4,
805 5, 5, 7, 7, 7, 39, 39, 28, 28, 28,
806 28, 31, 31, 9, 9, 45, 13, 32, 32, 14,
807 14, 14, 14, 14, 14, 14, 14, 27, 27, 16,
808 16, 46, 47, 16, 16, 16, 16, 16, 16, 16,
809 16, 16, 16, 16, 16, 48, 16, 16, 17, 17,
810 38, 38, 8, 8, 8, 8, 8, 8, 8, 8,
811 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
812 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
813 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
814 8, 8, 8, 8, 18, 18, 18, 18, 21, 21,
815 21, 19, 19, 19, 25
817 static const short yyr2[] =
819 0, 1, 1, 1, 2, 1, 2, 1, 2, 1,
820 2, 1, 2, 0, 12, 0, 10, 0, 8, 1,
821 1, 4, 1, 2, 1, 2, 0, 1, 0, 1,
822 0, 1, 1, 3, 1, 1, 4, 4, 7, 3,
823 4, 4, 0, 9, 1, 3, 1, 3, 3, 5,
824 3, 3, 3, 3, 3, 5, 2, 1, 1, 3,
825 5, 3, 3, 3, 3, 3, 3, 3, 3, 3,
826 3, 3, 5, 4, 3, 2, 1, 1, 3, 3,
827 1, 3, 0, 1, 3, 1, 1, 1, 1, 2,
828 2, 1, 2, 1, 2, 0, 4, 1, 2, 4,
829 4, 4, 2, 5, 2, 1, 1, 1, 2, 2,
830 2, 0, 0, 9, 3, 2, 1, 4, 2, 3,
831 2, 2, 3, 2, 2, 0, 3, 2, 1, 2,
832 1, 1, 4, 3, 3, 3, 3, 3, 3, 2,
833 2, 2, 3, 4, 1, 3, 4, 2, 2, 2,
834 2, 2, 4, 3, 2, 1, 6, 6, 3, 6,
835 6, 1, 8, 8, 6, 4, 1, 6, 6, 8,
836 8, 8, 6, 1, 1, 4, 1, 2, 0, 1,
837 3, 1, 1, 1, 4
839 static const short yychk[] =
841 -1000, -40, -1, 2, -29, -28, 10, 15, -12, -11,
842 -10, -30, 8, 9, 55, -2, 12, -18, 13, -9,
843 -8, -19, 88, 111, -13, 106, 103, 102, 47, 90,
844 49, 109, 110, 96, 59, 61, 91, 98, 79, 92,
845 -38, 99, 87, 46, 89, 16, 56, 57, 10, 15,
846 -29, -30, 11, 10, -17, -16, 48, 50, -26, 53,
847 -22, -23, -30, 62, 63, 97, -14, -25, 15, 52,
848 54, 58, -39, 51, -2, 2, 100, 77, 78, -30,
849 -30, -20, 87, 90, 94, -37, -36, 39, 40, 41,
850 42, 43, 44, 24, 45, 14, -8, 37, 36, 106,
851 -18, 13, 70, 109, 110, -4, -2, 16, 102, 103,
852 104, 105, 108, 19, -8, -9, -8, -8, -8, 13,
853 13, -8, -18, -18, -18, 43, 13, 13, 13, 13,
854 13, 13, -45, -11, -17, -35, -34, 10, 18, -16,
855 -27, -34, 15, -27, 10, -46, -2, -27, -16, -17,
856 -27, -27, -2, -27, -27, -48, -35, 13, 13, -7,
857 -5, 13, -3, -18, -9, -8, -19, 13, -17, -17,
858 13, -2, 10, -2, 10, -2, -2, -2, -2, -2,
859 -2, -2, -13, -2, -19, 96, -2, -2, 17, -33,
860 11, -33, 17, 70, -8, -8, -8, -8, -8, -8,
861 -6, -2, 17, -6, 17, -6, 43, -8, -2, -2,
862 -2, -6, -13, -2, -2, 93, 18, -10, 10, -35,
863 -16, -27, -24, 80, -31, 18, -27, -16, -15, -19,
864 -14, -2, 14, 38, 41, -33, -4, 94, -37, -36,
865 24, 45, -8, 70, 19, -2, 18, 18, -21, 87,
866 95, -18, 45, 10, -2, -2, -8, -33, 20, 17,
867 17, -8, -33, -33, -33, 17, -33, -33, -33, 16,
868 -30, -47, 10, -16, 10, 15, 45, -32, 17, -8,
869 -8, -8, -3, 13, 17, -3, -3, -3, -13, -3,
870 -19, -3, -6, -32, -32, -33, -2, -19, -2, -2,
871 -13, -13, -2, -19, -2, -2, -2, -17, 100, -35,
872 15, -19, 10, -4, 45, 95, 20, -44, 87, 17,
873 17, 17, 17, -33, 17, 17, -33, 17, -33, -33,
874 17, 18, 13, -2, -35, -32, 17, -19, -3, -30,
875 -2, -13, -18, -18, -2, -2, 15, -15, -43, -17,
876 17, 17, 17, 17, 17, 17, -35, -32, -16, 18,
877 -27, -15, -42, -32, -16, -41, -16
879 static const short yydef[] =
881 -2, -2, 1, 2, 32, 29, 87, 88, 28, 44,
882 35, 0, 0, 0, 0, 34, 22, 173, 0, 76,
883 77, 174, 176, 0, 93, 0, 0, 0, 144, 0,
884 0, 0, 0, 155, 0, 0, 161, 0, 0, 166,
885 0, 0, 181, 182, 183, 95, 130, 131, 89, 90,
886 33, 0, 26, 23, 0, 128, 0, 0, 111, 0,
887 116, 0, 0, 0, 0, 0, 0, 125, 26, 9,
888 0, 0, 82, 0, 105, 106, 0, 85, 86, 0,
889 0, 0, 19, 20, 0, 0, 0, 0, 0, 0,
890 0, 0, 0, 0, 0, 0, 75, 5, 3, 0,
891 173, 0, 0, 150, 151, 0, 0, 0, 0, 0,
892 0, 0, 0, 0, 177, 94, 141, 139, 140, 0,
893 0, 147, 148, 149, 154, 0, 0, 0, 0, 0,
894 0, 0, 0, 45, 0, 0, 27, 24, 39, 129,
895 109, 107, 26, 110, 10, 0, 0, 115, 118, 0,
896 120, 121, 0, 123, 124, 0, 127, -2, 0, 102,
897 83, 0, 80, 173, 57, 58, 104, 0, 0, 0,
898 178, 0, 6, 61, 4, 62, -2, -2, -2, -2,
899 -2, -2, 69, -2, 71, 74, 0, 59, 0, 0,
900 7, 0, 158, 0, 136, 133, 134, 135, 137, 138,
901 0, 46, 142, 0, 145, 0, 0, 153, 0, 0,
902 0, 0, 93, 0, 0, 0, 36, 37, 25, 108,
903 112, 114, 0, 11, 119, 91, 122, 126, 0, 174,
904 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
905 0, 0, 56, 0, 0, 0, 40, 41, 0, 179,
906 0, 73, 0, 8, 79, 78, 132, 0, 175, 143,
907 146, 152, 0, 0, 0, 165, 0, 0, 0, 96,
908 0, 0, 12, 117, 92, 26, 0, 21, 97, 99,
909 100, 101, 81, 0, 84, 0, 50, 51, 52, -2,
910 54, 48, 0, 184, 42, 0, 60, 72, 47, 0,
911 93, 93, 0, 0, 0, 0, 0, 0, 0, 0,
912 26, 0, 98, 0, 0, 0, 103, 0, 180, 156,
913 157, 159, 160, 0, 164, 167, 0, 168, 0, 0,
914 172, 38, 0, 0, -2, 17, 0, 55, 49, 0,
915 0, 93, 0, 0, 0, 0, 26, 0, 0, 0,
916 162, 163, 169, 170, 171, 0, -2, 15, 18, 43,
917 113, 0, 0, 13, 16, 0, 14
919 static const short yytok1[] =
921 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
924 0, 0, 0, 0, 0, 0, 0, 105, 0, 0,
925 13, 17, 104, 102, 11, 103, 0, 16, 0, 0,
926 0, 0, 0, 0, 0, 0, 0, 0, 95, 15,
927 0, 0, 0, 94, 0, 0, 0, 0, 0, 0,
928 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
930 0, 19, 0, 20, 0, 0, 0, 0, 0, 0,
931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
933 0, 0, 0, 12, 14, 18
935 static const short yytok2[] =
937 2, 3, 4, 5, 6, 7, 8, 9, 10, 21,
938 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
939 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
940 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
941 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
942 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
943 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
944 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
945 92, 93, 96, 97, 98, 99, 100, 101, 106, 107,
946 108, 109, 110, 111, 112
948 static const long yytok3[] =
952 #define YYFLAG -1000
953 #define YYERROR goto yyerrlab
954 #define YYACCEPT return(0)
955 #define YYABORT return(1)
956 #define yyclearin yychar = -1
957 #define yyerrok yyerrflag = 0
959 #ifdef yydebug
960 #include "y.debug"
961 #else
962 #define yydebug 0
963 static const char* yytoknames[1]; /* for debugging */
964 static const char* yystates[1]; /* for debugging */
965 #endif
967 /* parser for yacc output */
968 #ifdef YYARG
969 #define yynerrs yyarg->yynerrs
970 #define yyerrflag yyarg->yyerrflag
971 #define yyval yyarg->yyval
972 #define yylval yyarg->yylval
973 #else
974 int yynerrs = 0; /* number of errors */
975 int yyerrflag = 0; /* error recovery flag */
976 #endif
978 static const char*
979 yytokname(int yyc)
981 static char x[10];
983 if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
984 if(yytoknames[yyc-1])
985 return yytoknames[yyc-1];
986 sprintf(x, "<%d>", yyc);
987 return x;
990 static const char*
991 yystatname(int yys)
993 static char x[10];
995 if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
996 if(yystates[yys])
997 return yystates[yys];
998 sprintf(x, "<%d>\n", yys);
999 return x;
1002 static long
1003 #ifdef YYARG
1004 yylex1(struct Yyarg *yyarg)
1005 #else
1006 yylex1(void)
1007 #endif
1009 long yychar;
1010 const long *t3p;
1011 int c;
1013 #ifdef YYARG
1014 yychar = yylex(yyarg);
1015 #else
1016 yychar = yylex();
1017 #endif
1018 if(yychar <= 0) {
1019 c = yytok1[0];
1020 goto out;
1022 if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) {
1023 c = yytok1[yychar];
1024 goto out;
1026 if(yychar >= YYPRIVATE)
1027 if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) {
1028 c = yytok2[yychar-YYPRIVATE];
1029 goto out;
1031 for(t3p=yytok3;; t3p+=2) {
1032 c = t3p[0];
1033 if(c == yychar) {
1034 c = t3p[1];
1035 goto out;
1037 if(c == 0)
1038 break;
1040 c = 0;
1042 out:
1043 if(c == 0)
1044 c = yytok2[1]; /* unknown char */
1045 if(yydebug >= 3)
1046 printf("lex %.4lX %s\n", yychar, yytokname(c));
1047 return c;
1051 #ifdef YYARG
1052 yyparse(struct Yyarg *yyarg)
1053 #else
1054 yyparse(void)
1055 #endif
1057 struct
1059 YYSTYPE yyv;
1060 int yys;
1061 } yys[YYMAXDEPTH], *yyp, *yypt;
1062 const short *yyxi;
1063 int yyj, yym, yystate, yyn, yyg;
1064 long yychar;
1065 #ifndef YYARG
1066 YYSTYPE save1, save2;
1067 int save3, save4;
1069 save1 = yylval;
1070 save2 = yyval;
1071 save3 = yynerrs;
1072 save4 = yyerrflag;
1073 #endif
1075 yystate = 0;
1076 yychar = -1;
1077 yynerrs = 0;
1078 yyerrflag = 0;
1079 yyp = &yys[-1];
1080 goto yystack;
1082 ret0:
1083 yyn = 0;
1084 goto ret;
1086 ret1:
1087 yyn = 1;
1088 goto ret;
1090 ret:
1091 #ifndef YYARG
1092 yylval = save1;
1093 yyval = save2;
1094 yynerrs = save3;
1095 yyerrflag = save4;
1096 #endif
1097 return yyn;
1099 yystack:
1100 /* put a state and value onto the stack */
1101 if(yydebug >= 4)
1102 printf("char %s in %s", yytokname(yychar), yystatname(yystate));
1104 yyp++;
1105 if(yyp >= &yys[YYMAXDEPTH]) {
1106 yyerror("yacc stack overflow");
1107 goto ret1;
1109 yyp->yys = yystate;
1110 yyp->yyv = yyval;
1112 yynewstate:
1113 yyn = yypact[yystate];
1114 if(yyn <= YYFLAG)
1115 goto yydefault; /* simple state */
1116 if(yychar < 0)
1117 #ifdef YYARG
1118 yychar = yylex1(yyarg);
1119 #else
1120 yychar = yylex1();
1121 #endif
1122 yyn += yychar;
1123 if(yyn < 0 || yyn >= YYLAST)
1124 goto yydefault;
1125 yyn = yyact[yyn];
1126 if(yychk[yyn] == yychar) { /* valid shift */
1127 yychar = -1;
1128 yyval = yylval;
1129 yystate = yyn;
1130 if(yyerrflag > 0)
1131 yyerrflag--;
1132 goto yystack;
1135 yydefault:
1136 /* default state action */
1137 yyn = yydef[yystate];
1138 if(yyn == -2) {
1139 if(yychar < 0)
1140 #ifdef YYARG
1141 yychar = yylex1(yyarg);
1142 #else
1143 yychar = yylex1();
1144 #endif
1146 /* look through exception table */
1147 for(yyxi=yyexca;; yyxi+=2)
1148 if(yyxi[0] == -1 && yyxi[1] == yystate)
1149 break;
1150 for(yyxi += 2;; yyxi += 2) {
1151 yyn = yyxi[0];
1152 if(yyn < 0 || yyn == yychar)
1153 break;
1155 yyn = yyxi[1];
1156 if(yyn < 0)
1157 goto ret0;
1159 if(yyn == 0) {
1160 /* error ... attempt to resume parsing */
1161 switch(yyerrflag) {
1162 case 0: /* brand new error */
1163 yyerror("syntax error");
1164 if(yydebug >= 1) {
1165 printf("%s", yystatname(yystate));
1166 printf("saw %s\n", yytokname(yychar));
1168 goto yyerrlab;
1169 yyerrlab:
1170 yynerrs++;
1172 case 1:
1173 case 2: /* incompletely recovered error ... try again */
1174 yyerrflag = 3;
1176 /* find a state where "error" is a legal shift action */
1177 while(yyp >= yys) {
1178 yyn = yypact[yyp->yys] + YYERRCODE;
1179 if(yyn >= 0 && yyn < YYLAST) {
1180 yystate = yyact[yyn]; /* simulate a shift of "error" */
1181 if(yychk[yystate] == YYERRCODE)
1182 goto yystack;
1185 /* the current yyp has no shift onn "error", pop stack */
1186 if(yydebug >= 2)
1187 printf("error recovery pops state %d, uncovers %d\n",
1188 yyp->yys, (yyp-1)->yys );
1189 yyp--;
1191 /* there is no state on the stack with an error shift ... abort */
1192 goto ret1;
1194 case 3: /* no shift yet; clobber input char */
1195 if(yydebug >= YYEOFCODE)
1196 printf("error recovery discards %s\n", yytokname(yychar));
1197 if(yychar == YYEOFCODE)
1198 goto ret1;
1199 yychar = -1;
1200 goto yynewstate; /* try again in the same state */
1204 /* reduction by production yyn */
1205 if(yydebug >= 2)
1206 printf("reduce %d in:\n\t%s", yyn, yystatname(yystate));
1208 yypt = yyp;
1209 yyp -= yyr2[yyn];
1210 yyval = (yyp+1)->yyv;
1211 yym = yyn;
1213 /* consult goto table to find next state */
1214 yyn = yyr1[yyn];
1215 yyg = yypgo[yyn];
1216 yyj = yyg + yyp->yys + 1;
1218 if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn)
1219 yystate = yyact[yyg];
1220 switch(yym) {
1222 case 1:
1223 #line 98 "/n/fs/fac/bwk/awk/awkgram.y"
1224 { if (errorflag==0)
1225 winner = (Node *)stat3(PROGRAM, beginloc, yypt[-0].yyv.p, endloc); } break;
1226 case 2:
1227 #line 100 "/n/fs/fac/bwk/awk/awkgram.y"
1228 { yyclearin; bracecheck(); SYNTAX("bailing out"); } break;
1229 case 13:
1230 #line 124 "/n/fs/fac/bwk/awk/awkgram.y"
1231 {inloop++;} break;
1232 case 14:
1233 #line 125 "/n/fs/fac/bwk/awk/awkgram.y"
1234 { --inloop; yyval.p = stat4(FOR, yypt[-9].yyv.p, notnull(yypt[-6].yyv.p), yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
1235 case 15:
1236 #line 126 "/n/fs/fac/bwk/awk/awkgram.y"
1237 {inloop++;} break;
1238 case 16:
1239 #line 127 "/n/fs/fac/bwk/awk/awkgram.y"
1240 { --inloop; yyval.p = stat4(FOR, yypt[-7].yyv.p, NIL, yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
1241 case 17:
1242 #line 128 "/n/fs/fac/bwk/awk/awkgram.y"
1243 {inloop++;} break;
1244 case 18:
1245 #line 129 "/n/fs/fac/bwk/awk/awkgram.y"
1246 { --inloop; yyval.p = stat3(IN, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), yypt[-0].yyv.p); } break;
1247 case 19:
1248 #line 133 "/n/fs/fac/bwk/awk/awkgram.y"
1249 { setfname(yypt[-0].yyv.cp); } break;
1250 case 20:
1251 #line 134 "/n/fs/fac/bwk/awk/awkgram.y"
1252 { setfname(yypt[-0].yyv.cp); } break;
1253 case 21:
1254 #line 138 "/n/fs/fac/bwk/awk/awkgram.y"
1255 { yyval.p = notnull(yypt[-1].yyv.p); } break;
1256 case 26:
1257 #line 150 "/n/fs/fac/bwk/awk/awkgram.y"
1258 { yyval.i = 0; } break;
1259 case 28:
1260 #line 155 "/n/fs/fac/bwk/awk/awkgram.y"
1261 { yyval.i = 0; } break;
1262 case 30:
1263 #line 161 "/n/fs/fac/bwk/awk/awkgram.y"
1264 { yyval.p = 0; } break;
1265 case 32:
1266 #line 166 "/n/fs/fac/bwk/awk/awkgram.y"
1267 { yyval.p = 0; } break;
1268 case 33:
1269 #line 167 "/n/fs/fac/bwk/awk/awkgram.y"
1270 { yyval.p = yypt[-1].yyv.p; } break;
1271 case 34:
1272 #line 171 "/n/fs/fac/bwk/awk/awkgram.y"
1273 { yyval.p = notnull(yypt[-0].yyv.p); } break;
1274 case 35:
1275 #line 175 "/n/fs/fac/bwk/awk/awkgram.y"
1276 { yyval.p = stat2(PASTAT, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break;
1277 case 36:
1278 #line 176 "/n/fs/fac/bwk/awk/awkgram.y"
1279 { yyval.p = stat2(PASTAT, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1280 case 37:
1281 #line 177 "/n/fs/fac/bwk/awk/awkgram.y"
1282 { yyval.p = pa2stat(yypt[-3].yyv.p, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break;
1283 case 38:
1284 #line 178 "/n/fs/fac/bwk/awk/awkgram.y"
1285 { yyval.p = pa2stat(yypt[-6].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1286 case 39:
1287 #line 179 "/n/fs/fac/bwk/awk/awkgram.y"
1288 { yyval.p = stat2(PASTAT, NIL, yypt[-1].yyv.p); } break;
1289 case 40:
1290 #line 181 "/n/fs/fac/bwk/awk/awkgram.y"
1291 { beginloc = linkum(beginloc, yypt[-1].yyv.p); yyval.p = 0; } break;
1292 case 41:
1293 #line 183 "/n/fs/fac/bwk/awk/awkgram.y"
1294 { endloc = linkum(endloc, yypt[-1].yyv.p); yyval.p = 0; } break;
1295 case 42:
1296 #line 184 "/n/fs/fac/bwk/awk/awkgram.y"
1297 {infunc++;} break;
1298 case 43:
1299 #line 185 "/n/fs/fac/bwk/awk/awkgram.y"
1300 { infunc--; curfname=0; defn((Cell *)yypt[-7].yyv.p, yypt[-5].yyv.p, yypt[-1].yyv.p); yyval.p = 0; } break;
1301 case 45:
1302 #line 190 "/n/fs/fac/bwk/awk/awkgram.y"
1303 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1304 case 47:
1305 #line 195 "/n/fs/fac/bwk/awk/awkgram.y"
1306 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1307 case 48:
1308 #line 199 "/n/fs/fac/bwk/awk/awkgram.y"
1309 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1310 case 49:
1311 #line 201 "/n/fs/fac/bwk/awk/awkgram.y"
1312 { yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1313 case 50:
1314 #line 203 "/n/fs/fac/bwk/awk/awkgram.y"
1315 { yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
1316 case 51:
1317 #line 205 "/n/fs/fac/bwk/awk/awkgram.y"
1318 { yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
1319 case 52:
1320 #line 206 "/n/fs/fac/bwk/awk/awkgram.y"
1321 { yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
1322 case 53:
1323 #line 208 "/n/fs/fac/bwk/awk/awkgram.y"
1324 { if (constnode(yypt[-0].yyv.p))
1325 yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(strnode(yypt[-0].yyv.p), 0));
1326 else
1327 yyval.p = op3(yypt[-1].yyv.i, (Node *)1, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1328 case 54:
1329 #line 212 "/n/fs/fac/bwk/awk/awkgram.y"
1330 { yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break;
1331 case 55:
1332 #line 213 "/n/fs/fac/bwk/awk/awkgram.y"
1333 { yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break;
1334 case 56:
1335 #line 214 "/n/fs/fac/bwk/awk/awkgram.y"
1336 { yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
1337 case 59:
1338 #line 220 "/n/fs/fac/bwk/awk/awkgram.y"
1339 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1340 case 60:
1341 #line 222 "/n/fs/fac/bwk/awk/awkgram.y"
1342 { yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1343 case 61:
1344 #line 224 "/n/fs/fac/bwk/awk/awkgram.y"
1345 { yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
1346 case 62:
1347 #line 226 "/n/fs/fac/bwk/awk/awkgram.y"
1348 { yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
1349 case 63:
1350 #line 227 "/n/fs/fac/bwk/awk/awkgram.y"
1351 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1352 case 64:
1353 #line 228 "/n/fs/fac/bwk/awk/awkgram.y"
1354 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1355 case 65:
1356 #line 229 "/n/fs/fac/bwk/awk/awkgram.y"
1357 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1358 case 66:
1359 #line 230 "/n/fs/fac/bwk/awk/awkgram.y"
1360 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1361 case 67:
1362 #line 231 "/n/fs/fac/bwk/awk/awkgram.y"
1363 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1364 case 68:
1365 #line 232 "/n/fs/fac/bwk/awk/awkgram.y"
1366 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1367 case 69:
1368 #line 233 "/n/fs/fac/bwk/awk/awkgram.y"
1369 { yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
1370 case 70:
1371 #line 235 "/n/fs/fac/bwk/awk/awkgram.y"
1372 { if (constnode(yypt[-0].yyv.p))
1373 yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(strnode(yypt[-0].yyv.p), 0));
1374 else
1375 yyval.p = op3(yypt[-1].yyv.i, (Node *)1, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1376 case 71:
1377 #line 239 "/n/fs/fac/bwk/awk/awkgram.y"
1378 { yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break;
1379 case 72:
1380 #line 240 "/n/fs/fac/bwk/awk/awkgram.y"
1381 { yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break;
1382 case 73:
1383 #line 241 "/n/fs/fac/bwk/awk/awkgram.y"
1385 if (safe) SYNTAX("cmd | getline is unsafe");
1386 else yyval.p = op3(GETLINE, yypt[-0].yyv.p, itonp(yypt[-2].yyv.i), yypt[-3].yyv.p); } break;
1387 case 74:
1388 #line 244 "/n/fs/fac/bwk/awk/awkgram.y"
1390 if (safe) SYNTAX("cmd | getline is unsafe");
1391 else yyval.p = op3(GETLINE, (Node*)0, itonp(yypt[-1].yyv.i), yypt[-2].yyv.p); } break;
1392 case 75:
1393 #line 247 "/n/fs/fac/bwk/awk/awkgram.y"
1394 { yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
1395 case 78:
1396 #line 253 "/n/fs/fac/bwk/awk/awkgram.y"
1397 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1398 case 79:
1399 #line 254 "/n/fs/fac/bwk/awk/awkgram.y"
1400 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1401 case 81:
1402 #line 259 "/n/fs/fac/bwk/awk/awkgram.y"
1403 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1404 case 82:
1405 #line 263 "/n/fs/fac/bwk/awk/awkgram.y"
1406 { yyval.p = rectonode(); } break;
1407 case 84:
1408 #line 265 "/n/fs/fac/bwk/awk/awkgram.y"
1409 { yyval.p = yypt[-1].yyv.p; } break;
1410 case 93:
1411 #line 282 "/n/fs/fac/bwk/awk/awkgram.y"
1412 { yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
1413 case 94:
1414 #line 283 "/n/fs/fac/bwk/awk/awkgram.y"
1415 { yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break;
1416 case 95:
1417 #line 287 "/n/fs/fac/bwk/awk/awkgram.y"
1418 {startreg();} break;
1419 case 96:
1420 #line 287 "/n/fs/fac/bwk/awk/awkgram.y"
1421 { yyval.s = yypt[-1].yyv.s; } break;
1422 case 99:
1423 #line 295 "/n/fs/fac/bwk/awk/awkgram.y"
1425 if (safe) SYNTAX("print | is unsafe");
1426 else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
1427 case 100:
1428 #line 298 "/n/fs/fac/bwk/awk/awkgram.y"
1430 if (safe) SYNTAX("print >> is unsafe");
1431 else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
1432 case 101:
1433 #line 301 "/n/fs/fac/bwk/awk/awkgram.y"
1435 if (safe) SYNTAX("print > is unsafe");
1436 else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
1437 case 102:
1438 #line 304 "/n/fs/fac/bwk/awk/awkgram.y"
1439 { yyval.p = stat3(yypt[-1].yyv.i, yypt[-0].yyv.p, NIL, NIL); } break;
1440 case 103:
1441 #line 305 "/n/fs/fac/bwk/awk/awkgram.y"
1442 { yyval.p = stat2(DELETE, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break;
1443 case 104:
1444 #line 306 "/n/fs/fac/bwk/awk/awkgram.y"
1445 { yyval.p = stat2(DELETE, makearr(yypt[-0].yyv.p), 0); } break;
1446 case 105:
1447 #line 307 "/n/fs/fac/bwk/awk/awkgram.y"
1448 { yyval.p = exptostat(yypt[-0].yyv.p); } break;
1449 case 106:
1450 #line 308 "/n/fs/fac/bwk/awk/awkgram.y"
1451 { yyclearin; SYNTAX("illegal statement"); } break;
1452 case 109:
1453 #line 317 "/n/fs/fac/bwk/awk/awkgram.y"
1454 { if (!inloop) SYNTAX("break illegal outside of loops");
1455 yyval.p = stat1(BREAK, NIL); } break;
1456 case 110:
1457 #line 319 "/n/fs/fac/bwk/awk/awkgram.y"
1458 { if (!inloop) SYNTAX("continue illegal outside of loops");
1459 yyval.p = stat1(CONTINUE, NIL); } break;
1460 case 111:
1461 #line 321 "/n/fs/fac/bwk/awk/awkgram.y"
1462 {inloop++;} break;
1463 case 112:
1464 #line 321 "/n/fs/fac/bwk/awk/awkgram.y"
1465 {--inloop;} break;
1466 case 113:
1467 #line 322 "/n/fs/fac/bwk/awk/awkgram.y"
1468 { yyval.p = stat2(DO, yypt[-6].yyv.p, notnull(yypt[-2].yyv.p)); } break;
1469 case 114:
1470 #line 323 "/n/fs/fac/bwk/awk/awkgram.y"
1471 { yyval.p = stat1(EXIT, yypt[-1].yyv.p); } break;
1472 case 115:
1473 #line 324 "/n/fs/fac/bwk/awk/awkgram.y"
1474 { yyval.p = stat1(EXIT, NIL); } break;
1475 case 117:
1476 #line 326 "/n/fs/fac/bwk/awk/awkgram.y"
1477 { yyval.p = stat3(IF, yypt[-3].yyv.p, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1478 case 118:
1479 #line 327 "/n/fs/fac/bwk/awk/awkgram.y"
1480 { yyval.p = stat3(IF, yypt[-1].yyv.p, yypt[-0].yyv.p, NIL); } break;
1481 case 119:
1482 #line 328 "/n/fs/fac/bwk/awk/awkgram.y"
1483 { yyval.p = yypt[-1].yyv.p; } break;
1484 case 120:
1485 #line 329 "/n/fs/fac/bwk/awk/awkgram.y"
1486 { if (infunc)
1487 SYNTAX("next is illegal inside a function");
1488 yyval.p = stat1(NEXT, NIL); } break;
1489 case 121:
1490 #line 332 "/n/fs/fac/bwk/awk/awkgram.y"
1491 { if (infunc)
1492 SYNTAX("nextfile is illegal inside a function");
1493 yyval.p = stat1(NEXTFILE, NIL); } break;
1494 case 122:
1495 #line 335 "/n/fs/fac/bwk/awk/awkgram.y"
1496 { yyval.p = stat1(RETURN, yypt[-1].yyv.p); } break;
1497 case 123:
1498 #line 336 "/n/fs/fac/bwk/awk/awkgram.y"
1499 { yyval.p = stat1(RETURN, NIL); } break;
1500 case 125:
1501 #line 338 "/n/fs/fac/bwk/awk/awkgram.y"
1502 {inloop++;} break;
1503 case 126:
1504 #line 338 "/n/fs/fac/bwk/awk/awkgram.y"
1505 { --inloop; yyval.p = stat2(WHILE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1506 case 127:
1507 #line 339 "/n/fs/fac/bwk/awk/awkgram.y"
1508 { yyval.p = 0; } break;
1509 case 129:
1510 #line 344 "/n/fs/fac/bwk/awk/awkgram.y"
1511 { yyval.p = linkum(yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
1512 case 132:
1513 #line 352 "/n/fs/fac/bwk/awk/awkgram.y"
1514 { yyval.p = op2(DIVEQ, yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
1515 case 133:
1516 #line 353 "/n/fs/fac/bwk/awk/awkgram.y"
1517 { yyval.p = op2(ADD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1518 case 134:
1519 #line 354 "/n/fs/fac/bwk/awk/awkgram.y"
1520 { yyval.p = op2(MINUS, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1521 case 135:
1522 #line 355 "/n/fs/fac/bwk/awk/awkgram.y"
1523 { yyval.p = op2(MULT, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1524 case 136:
1525 #line 356 "/n/fs/fac/bwk/awk/awkgram.y"
1526 { yyval.p = op2(DIVIDE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1527 case 137:
1528 #line 357 "/n/fs/fac/bwk/awk/awkgram.y"
1529 { yyval.p = op2(MOD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1530 case 138:
1531 #line 358 "/n/fs/fac/bwk/awk/awkgram.y"
1532 { yyval.p = op2(POWER, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1533 case 139:
1534 #line 359 "/n/fs/fac/bwk/awk/awkgram.y"
1535 { yyval.p = op1(UMINUS, yypt[-0].yyv.p); } break;
1536 case 140:
1537 #line 360 "/n/fs/fac/bwk/awk/awkgram.y"
1538 { yyval.p = yypt[-0].yyv.p; } break;
1539 case 141:
1540 #line 361 "/n/fs/fac/bwk/awk/awkgram.y"
1541 { yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break;
1542 case 142:
1543 #line 362 "/n/fs/fac/bwk/awk/awkgram.y"
1544 { yyval.p = op2(BLTIN, itonp(yypt[-2].yyv.i), rectonode()); } break;
1545 case 143:
1546 #line 363 "/n/fs/fac/bwk/awk/awkgram.y"
1547 { yyval.p = op2(BLTIN, itonp(yypt[-3].yyv.i), yypt[-1].yyv.p); } break;
1548 case 144:
1549 #line 364 "/n/fs/fac/bwk/awk/awkgram.y"
1550 { yyval.p = op2(BLTIN, itonp(yypt[-0].yyv.i), rectonode()); } break;
1551 case 145:
1552 #line 365 "/n/fs/fac/bwk/awk/awkgram.y"
1553 { yyval.p = op2(CALL, celltonode(yypt[-2].yyv.cp,CVAR), NIL); } break;
1554 case 146:
1555 #line 366 "/n/fs/fac/bwk/awk/awkgram.y"
1556 { yyval.p = op2(CALL, celltonode(yypt[-3].yyv.cp,CVAR), yypt[-1].yyv.p); } break;
1557 case 147:
1558 #line 367 "/n/fs/fac/bwk/awk/awkgram.y"
1559 { yyval.p = op1(CLOSE, yypt[-0].yyv.p); } break;
1560 case 148:
1561 #line 368 "/n/fs/fac/bwk/awk/awkgram.y"
1562 { yyval.p = op1(PREDECR, yypt[-0].yyv.p); } break;
1563 case 149:
1564 #line 369 "/n/fs/fac/bwk/awk/awkgram.y"
1565 { yyval.p = op1(PREINCR, yypt[-0].yyv.p); } break;
1566 case 150:
1567 #line 370 "/n/fs/fac/bwk/awk/awkgram.y"
1568 { yyval.p = op1(POSTDECR, yypt[-1].yyv.p); } break;
1569 case 151:
1570 #line 371 "/n/fs/fac/bwk/awk/awkgram.y"
1571 { yyval.p = op1(POSTINCR, yypt[-1].yyv.p); } break;
1572 case 152:
1573 #line 372 "/n/fs/fac/bwk/awk/awkgram.y"
1574 { yyval.p = op3(GETLINE, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
1575 case 153:
1576 #line 373 "/n/fs/fac/bwk/awk/awkgram.y"
1577 { yyval.p = op3(GETLINE, NIL, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
1578 case 154:
1579 #line 374 "/n/fs/fac/bwk/awk/awkgram.y"
1580 { yyval.p = op3(GETLINE, yypt[-0].yyv.p, NIL, NIL); } break;
1581 case 155:
1582 #line 375 "/n/fs/fac/bwk/awk/awkgram.y"
1583 { yyval.p = op3(GETLINE, NIL, NIL, NIL); } break;
1584 case 156:
1585 #line 377 "/n/fs/fac/bwk/awk/awkgram.y"
1586 { yyval.p = op2(INDEX, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1587 case 157:
1588 #line 379 "/n/fs/fac/bwk/awk/awkgram.y"
1589 { SYNTAX("index() doesn't permit regular expressions");
1590 yyval.p = op2(INDEX, yypt[-3].yyv.p, (Node*)yypt[-1].yyv.s); } break;
1591 case 158:
1592 #line 381 "/n/fs/fac/bwk/awk/awkgram.y"
1593 { yyval.p = yypt[-1].yyv.p; } break;
1594 case 159:
1595 #line 383 "/n/fs/fac/bwk/awk/awkgram.y"
1596 { yyval.p = op3(MATCHFCN, NIL, yypt[-3].yyv.p, (Node*)makedfa(yypt[-1].yyv.s, 1)); } break;
1597 case 160:
1598 #line 385 "/n/fs/fac/bwk/awk/awkgram.y"
1599 { if (constnode(yypt[-1].yyv.p))
1600 yyval.p = op3(MATCHFCN, NIL, yypt[-3].yyv.p, (Node*)makedfa(strnode(yypt[-1].yyv.p), 1));
1601 else
1602 yyval.p = op3(MATCHFCN, (Node *)1, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1603 case 161:
1604 #line 389 "/n/fs/fac/bwk/awk/awkgram.y"
1605 { yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break;
1606 case 162:
1607 #line 391 "/n/fs/fac/bwk/awk/awkgram.y"
1608 { yyval.p = op4(SPLIT, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p, (Node*)STRING); } break;
1609 case 163:
1610 #line 393 "/n/fs/fac/bwk/awk/awkgram.y"
1611 { yyval.p = op4(SPLIT, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), (Node*)makedfa(yypt[-1].yyv.s, 1), (Node *)REGEXPR); } break;
1612 case 164:
1613 #line 395 "/n/fs/fac/bwk/awk/awkgram.y"
1614 { yyval.p = op4(SPLIT, yypt[-3].yyv.p, makearr(yypt[-1].yyv.p), NIL, (Node*)STRING); } break;
1615 case 165:
1616 #line 396 "/n/fs/fac/bwk/awk/awkgram.y"
1617 { yyval.p = op1(yypt[-3].yyv.i, yypt[-1].yyv.p); } break;
1618 case 166:
1619 #line 397 "/n/fs/fac/bwk/awk/awkgram.y"
1620 { yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break;
1621 case 167:
1622 #line 399 "/n/fs/fac/bwk/awk/awkgram.y"
1623 { yyval.p = op4(yypt[-5].yyv.i, NIL, (Node*)makedfa(yypt[-3].yyv.s, 1), yypt[-1].yyv.p, rectonode()); } break;
1624 case 168:
1625 #line 401 "/n/fs/fac/bwk/awk/awkgram.y"
1626 { if (constnode(yypt[-3].yyv.p))
1627 yyval.p = op4(yypt[-5].yyv.i, NIL, (Node*)makedfa(strnode(yypt[-3].yyv.p), 1), yypt[-1].yyv.p, rectonode());
1628 else
1629 yyval.p = op4(yypt[-5].yyv.i, (Node *)1, yypt[-3].yyv.p, yypt[-1].yyv.p, rectonode()); } break;
1630 case 169:
1631 #line 406 "/n/fs/fac/bwk/awk/awkgram.y"
1632 { yyval.p = op4(yypt[-7].yyv.i, NIL, (Node*)makedfa(yypt[-5].yyv.s, 1), yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1633 case 170:
1634 #line 408 "/n/fs/fac/bwk/awk/awkgram.y"
1635 { if (constnode(yypt[-5].yyv.p))
1636 yyval.p = op4(yypt[-7].yyv.i, NIL, (Node*)makedfa(strnode(yypt[-5].yyv.p), 1), yypt[-3].yyv.p, yypt[-1].yyv.p);
1637 else
1638 yyval.p = op4(yypt[-7].yyv.i, (Node *)1, yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1639 case 171:
1640 #line 413 "/n/fs/fac/bwk/awk/awkgram.y"
1641 { yyval.p = op3(SUBSTR, yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1642 case 172:
1643 #line 415 "/n/fs/fac/bwk/awk/awkgram.y"
1644 { yyval.p = op3(SUBSTR, yypt[-3].yyv.p, yypt[-1].yyv.p, NIL); } break;
1645 case 175:
1646 #line 421 "/n/fs/fac/bwk/awk/awkgram.y"
1647 { yyval.p = op2(ARRAY, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break;
1648 case 176:
1649 #line 422 "/n/fs/fac/bwk/awk/awkgram.y"
1650 { yyval.p = op1(INDIRECT, celltonode(yypt[-0].yyv.cp, CVAR)); } break;
1651 case 177:
1652 #line 423 "/n/fs/fac/bwk/awk/awkgram.y"
1653 { yyval.p = op1(INDIRECT, yypt[-0].yyv.p); } break;
1654 case 178:
1655 #line 427 "/n/fs/fac/bwk/awk/awkgram.y"
1656 { arglist = yyval.p = 0; } break;
1657 case 179:
1658 #line 428 "/n/fs/fac/bwk/awk/awkgram.y"
1659 { arglist = yyval.p = celltonode(yypt[-0].yyv.cp,CVAR); } break;
1660 case 180:
1661 #line 429 "/n/fs/fac/bwk/awk/awkgram.y"
1663 checkdup(yypt[-2].yyv.p, yypt[-0].yyv.cp);
1664 arglist = yyval.p = linkum(yypt[-2].yyv.p,celltonode(yypt[-0].yyv.cp,CVAR)); } break;
1665 case 181:
1666 #line 435 "/n/fs/fac/bwk/awk/awkgram.y"
1667 { yyval.p = celltonode(yypt[-0].yyv.cp, CVAR); } break;
1668 case 182:
1669 #line 436 "/n/fs/fac/bwk/awk/awkgram.y"
1670 { yyval.p = op1(ARG, itonp(yypt[-0].yyv.i)); } break;
1671 case 183:
1672 #line 437 "/n/fs/fac/bwk/awk/awkgram.y"
1673 { yyval.p = op1(VARNF, (Node *) yypt[-0].yyv.cp); } break;
1674 case 184:
1675 #line 442 "/n/fs/fac/bwk/awk/awkgram.y"
1676 { yyval.p = notnull(yypt[-1].yyv.p); } break;
1678 goto yystack; /* stack new state and value */