2 #line 26 "/n/fs/fac/bwk/awk/awkgram.y"
7 void checkdup(Node
*list
, Cell
*item
);
8 int yywrap(void) { return(1); }
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"
26 #define YYMAXDEPTH 150
30 #define FIRSTTOKEN 57346
39 #define NOTMATCH 57355
66 #define CONTINUE 57382
77 #define MATCHFCN 57393
79 #define NEXTFILE 57395
98 #define CONDEXPR 57414
99 #define POSTINCR 57415
100 #define PREINCR 57416
101 #define POSTDECR 57417
102 #define PREDECR 57418
109 #define REGEXPR 57425
110 #define GETLINE 57426
121 #define INDIRECT 57437
122 #define LASTTOKEN 57438
126 #line 445 "/n/fs/fac/bwk/awk/awkgram.y"
129 void setfname(Cell
*p
)
132 SYNTAX("%s is an array, not a function", p
->nval
);
134 SYNTAX("you can't define function %s more than once", 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
)
151 case LE
: case LT
: case EQ
: case NE
: case GT
: case GE
:
152 case BOR
: case AND
: case NOT
:
155 return op2(NE
, n
, nullnode
);
159 void checkdup(Node
*vl
, Cell
*cp
) /* check if name already in list */
162 for ( ; vl
; vl
= vl
->nnext
) {
163 if (strcmp(s
, ((Cell
*)(vl
->narg
[0]))->nval
) == 0) {
164 SYNTAX("duplicate argument %s", s
);
169 static const short yyexca
[] =
297 #define YYPRIVATE 57344
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,
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,
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,
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,
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
[] =
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
963 static const char* yytoknames
[1]; /* for debugging */
964 static const char* yystates
[1]; /* for debugging */
967 /* parser for yacc output */
969 #define yynerrs yyarg->yynerrs
970 #define yyerrflag yyarg->yyerrflag
971 #define yyval yyarg->yyval
972 #define yylval yyarg->yylval
974 int yynerrs
= 0; /* number of errors */
975 int yyerrflag
= 0; /* error recovery flag */
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
);
995 if(yys
>= 0 && yys
< sizeof(yystates
)/sizeof(yystates
[0]))
997 return yystates
[yys
];
998 sprintf(x
, "<%d>\n", yys
);
1004 yylex1(struct Yyarg
*yyarg
)
1014 yychar
= yylex(yyarg
);
1022 if(yychar
< sizeof(yytok1
)/sizeof(yytok1
[0])) {
1026 if(yychar
>= YYPRIVATE
)
1027 if(yychar
< YYPRIVATE
+sizeof(yytok2
)/sizeof(yytok2
[0])) {
1028 c
= yytok2
[yychar
-YYPRIVATE
];
1031 for(t3p
=yytok3
;; t3p
+=2) {
1044 c
= yytok2
[1]; /* unknown char */
1046 printf("lex %.4lX %s\n", yychar
, yytokname(c
));
1052 yyparse(struct Yyarg
*yyarg
)
1061 } yys
[YYMAXDEPTH
], *yyp
, *yypt
;
1063 int yyj
, yym
, yystate
, yyn
, yyg
;
1066 YYSTYPE save1
, save2
;
1100 /* put a state and value onto the stack */
1102 printf("char %s in %s", yytokname(yychar
), yystatname(yystate
));
1105 if(yyp
>= &yys
[YYMAXDEPTH
]) {
1106 yyerror("yacc stack overflow");
1113 yyn
= yypact
[yystate
];
1115 goto yydefault
; /* simple state */
1118 yychar
= yylex1(yyarg
);
1123 if(yyn
< 0 || yyn
>= YYLAST
)
1126 if(yychk
[yyn
] == yychar
) { /* valid shift */
1136 /* default state action */
1137 yyn
= yydef
[yystate
];
1141 yychar
= yylex1(yyarg
);
1146 /* look through exception table */
1147 for(yyxi
=yyexca
;; yyxi
+=2)
1148 if(yyxi
[0] == -1 && yyxi
[1] == yystate
)
1150 for(yyxi
+= 2;; yyxi
+= 2) {
1152 if(yyn
< 0 || yyn
== yychar
)
1160 /* error ... attempt to resume parsing */
1162 case 0: /* brand new error */
1163 yyerror("syntax error");
1165 printf("%s", yystatname(yystate
));
1166 printf("saw %s\n", yytokname(yychar
));
1173 case 2: /* incompletely recovered error ... try again */
1176 /* find a state where "error" is a legal shift action */
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
)
1185 /* the current yyp has no shift onn "error", pop stack */
1187 printf("error recovery pops state %d, uncovers %d\n",
1188 yyp
->yys
, (yyp
-1)->yys
);
1191 /* there is no state on the stack with an error shift ... abort */
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
)
1200 goto yynewstate
; /* try again in the same state */
1204 /* reduction by production yyn */
1206 printf("reduce %d in:\n\t%s", yyn
, yystatname(yystate
));
1210 yyval
= (yyp
+1)->yyv
;
1213 /* consult goto table to find next state */
1216 yyj
= yyg
+ yyp
->yys
+ 1;
1218 if(yyj
>= YYLAST
|| yychk
[yystate
=yyact
[yyj
]] != -yyn
)
1219 yystate
= yyact
[yyg
];
1223 #line 98 "/n/fs/fac/bwk/awk/awkgram.y"
1225 winner
= (Node
*)stat3(PROGRAM
, beginloc
, yypt
[-0].yyv
.p
, endloc
); } break;
1227 #line 100 "/n/fs/fac/bwk/awk/awkgram.y"
1228 { yyclearin
; bracecheck(); SYNTAX("bailing out"); } break;
1230 #line 124 "/n/fs/fac/bwk/awk/awkgram.y"
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;
1236 #line 126 "/n/fs/fac/bwk/awk/awkgram.y"
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;
1242 #line 128 "/n/fs/fac/bwk/awk/awkgram.y"
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;
1248 #line 133 "/n/fs/fac/bwk/awk/awkgram.y"
1249 { setfname(yypt
[-0].yyv
.cp
); } break;
1251 #line 134 "/n/fs/fac/bwk/awk/awkgram.y"
1252 { setfname(yypt
[-0].yyv
.cp
); } break;
1254 #line 138 "/n/fs/fac/bwk/awk/awkgram.y"
1255 { yyval
.p
= notnull(yypt
[-1].yyv
.p
); } break;
1257 #line 150 "/n/fs/fac/bwk/awk/awkgram.y"
1258 { yyval
.i
= 0; } break;
1260 #line 155 "/n/fs/fac/bwk/awk/awkgram.y"
1261 { yyval
.i
= 0; } break;
1263 #line 161 "/n/fs/fac/bwk/awk/awkgram.y"
1264 { yyval
.p
= 0; } break;
1266 #line 166 "/n/fs/fac/bwk/awk/awkgram.y"
1267 { yyval
.p
= 0; } break;
1269 #line 167 "/n/fs/fac/bwk/awk/awkgram.y"
1270 { yyval
.p
= yypt
[-1].yyv
.p
; } break;
1272 #line 171 "/n/fs/fac/bwk/awk/awkgram.y"
1273 { yyval
.p
= notnull(yypt
[-0].yyv
.p
); } break;
1275 #line 175 "/n/fs/fac/bwk/awk/awkgram.y"
1276 { yyval
.p
= stat2(PASTAT
, yypt
[-0].yyv
.p
, stat2(PRINT
, rectonode(), NIL
)); } break;
1278 #line 176 "/n/fs/fac/bwk/awk/awkgram.y"
1279 { yyval
.p
= stat2(PASTAT
, yypt
[-3].yyv
.p
, yypt
[-1].yyv
.p
); } break;
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;
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;
1287 #line 179 "/n/fs/fac/bwk/awk/awkgram.y"
1288 { yyval
.p
= stat2(PASTAT
, NIL
, yypt
[-1].yyv
.p
); } break;
1290 #line 181 "/n/fs/fac/bwk/awk/awkgram.y"
1291 { beginloc
= linkum(beginloc
, yypt
[-1].yyv
.p
); yyval
.p
= 0; } break;
1293 #line 183 "/n/fs/fac/bwk/awk/awkgram.y"
1294 { endloc
= linkum(endloc
, yypt
[-1].yyv
.p
); yyval
.p
= 0; } break;
1296 #line 184 "/n/fs/fac/bwk/awk/awkgram.y"
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;
1302 #line 190 "/n/fs/fac/bwk/awk/awkgram.y"
1303 { yyval
.p
= linkum(yypt
[-2].yyv
.p
, yypt
[-0].yyv
.p
); } break;
1305 #line 195 "/n/fs/fac/bwk/awk/awkgram.y"
1306 { yyval
.p
= linkum(yypt
[-2].yyv
.p
, yypt
[-0].yyv
.p
); } break;
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;
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;
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;
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;
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;
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));
1327 yyval
.p
= op3(yypt
[-1].yyv
.i
, (Node
*)1, yypt
[-2].yyv
.p
, yypt
[-0].yyv
.p
); } break;
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;
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;
1335 #line 214 "/n/fs/fac/bwk/awk/awkgram.y"
1336 { yyval
.p
= op2(CAT
, yypt
[-1].yyv
.p
, yypt
[-0].yyv
.p
); } break;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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));
1375 yyval
.p
= op3(yypt
[-1].yyv
.i
, (Node
*)1, yypt
[-2].yyv
.p
, yypt
[-0].yyv
.p
); } break;
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;
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;
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;
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;
1393 #line 247 "/n/fs/fac/bwk/awk/awkgram.y"
1394 { yyval
.p
= op2(CAT
, yypt
[-1].yyv
.p
, yypt
[-0].yyv
.p
); } break;
1396 #line 253 "/n/fs/fac/bwk/awk/awkgram.y"
1397 { yyval
.p
= linkum(yypt
[-2].yyv
.p
, yypt
[-0].yyv
.p
); } break;
1399 #line 254 "/n/fs/fac/bwk/awk/awkgram.y"
1400 { yyval
.p
= linkum(yypt
[-2].yyv
.p
, yypt
[-0].yyv
.p
); } break;
1402 #line 259 "/n/fs/fac/bwk/awk/awkgram.y"
1403 { yyval
.p
= linkum(yypt
[-2].yyv
.p
, yypt
[-0].yyv
.p
); } break;
1405 #line 263 "/n/fs/fac/bwk/awk/awkgram.y"
1406 { yyval
.p
= rectonode(); } break;
1408 #line 265 "/n/fs/fac/bwk/awk/awkgram.y"
1409 { yyval
.p
= yypt
[-1].yyv
.p
; } break;
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;
1414 #line 283 "/n/fs/fac/bwk/awk/awkgram.y"
1415 { yyval
.p
= op1(NOT
, notnull(yypt
[-0].yyv
.p
)); } break;
1417 #line 287 "/n/fs/fac/bwk/awk/awkgram.y"
1418 {startreg();} break;
1420 #line 287 "/n/fs/fac/bwk/awk/awkgram.y"
1421 { yyval
.s
= yypt
[-1].yyv
.s
; } break;
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;
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;
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;
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;
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;
1444 #line 306 "/n/fs/fac/bwk/awk/awkgram.y"
1445 { yyval
.p
= stat2(DELETE
, makearr(yypt
[-0].yyv
.p
), 0); } break;
1447 #line 307 "/n/fs/fac/bwk/awk/awkgram.y"
1448 { yyval
.p
= exptostat(yypt
[-0].yyv
.p
); } break;
1450 #line 308 "/n/fs/fac/bwk/awk/awkgram.y"
1451 { yyclearin
; SYNTAX("illegal statement"); } break;
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;
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;
1461 #line 321 "/n/fs/fac/bwk/awk/awkgram.y"
1464 #line 321 "/n/fs/fac/bwk/awk/awkgram.y"
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;
1470 #line 323 "/n/fs/fac/bwk/awk/awkgram.y"
1471 { yyval
.p
= stat1(EXIT
, yypt
[-1].yyv
.p
); } break;
1473 #line 324 "/n/fs/fac/bwk/awk/awkgram.y"
1474 { yyval
.p
= stat1(EXIT
, NIL
); } break;
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;
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;
1482 #line 328 "/n/fs/fac/bwk/awk/awkgram.y"
1483 { yyval
.p
= yypt
[-1].yyv
.p
; } break;
1485 #line 329 "/n/fs/fac/bwk/awk/awkgram.y"
1487 SYNTAX("next is illegal inside a function");
1488 yyval
.p
= stat1(NEXT
, NIL
); } break;
1490 #line 332 "/n/fs/fac/bwk/awk/awkgram.y"
1492 SYNTAX("nextfile is illegal inside a function");
1493 yyval
.p
= stat1(NEXTFILE
, NIL
); } break;
1495 #line 335 "/n/fs/fac/bwk/awk/awkgram.y"
1496 { yyval
.p
= stat1(RETURN
, yypt
[-1].yyv
.p
); } break;
1498 #line 336 "/n/fs/fac/bwk/awk/awkgram.y"
1499 { yyval
.p
= stat1(RETURN
, NIL
); } break;
1501 #line 338 "/n/fs/fac/bwk/awk/awkgram.y"
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;
1507 #line 339 "/n/fs/fac/bwk/awk/awkgram.y"
1508 { yyval
.p
= 0; } break;
1510 #line 344 "/n/fs/fac/bwk/awk/awkgram.y"
1511 { yyval
.p
= linkum(yypt
[-1].yyv
.p
, yypt
[-0].yyv
.p
); } break;
1513 #line 352 "/n/fs/fac/bwk/awk/awkgram.y"
1514 { yyval
.p
= op2(DIVEQ
, yypt
[-3].yyv
.p
, yypt
[-0].yyv
.p
); } break;
1516 #line 353 "/n/fs/fac/bwk/awk/awkgram.y"
1517 { yyval
.p
= op2(ADD
, yypt
[-2].yyv
.p
, yypt
[-0].yyv
.p
); } break;
1519 #line 354 "/n/fs/fac/bwk/awk/awkgram.y"
1520 { yyval
.p
= op2(MINUS
, yypt
[-2].yyv
.p
, yypt
[-0].yyv
.p
); } break;
1522 #line 355 "/n/fs/fac/bwk/awk/awkgram.y"
1523 { yyval
.p
= op2(MULT
, yypt
[-2].yyv
.p
, yypt
[-0].yyv
.p
); } break;
1525 #line 356 "/n/fs/fac/bwk/awk/awkgram.y"
1526 { yyval
.p
= op2(DIVIDE
, yypt
[-2].yyv
.p
, yypt
[-0].yyv
.p
); } break;
1528 #line 357 "/n/fs/fac/bwk/awk/awkgram.y"
1529 { yyval
.p
= op2(MOD
, yypt
[-2].yyv
.p
, yypt
[-0].yyv
.p
); } break;
1531 #line 358 "/n/fs/fac/bwk/awk/awkgram.y"
1532 { yyval
.p
= op2(POWER
, yypt
[-2].yyv
.p
, yypt
[-0].yyv
.p
); } break;
1534 #line 359 "/n/fs/fac/bwk/awk/awkgram.y"
1535 { yyval
.p
= op1(UMINUS
, yypt
[-0].yyv
.p
); } break;
1537 #line 360 "/n/fs/fac/bwk/awk/awkgram.y"
1538 { yyval
.p
= yypt
[-0].yyv
.p
; } break;
1540 #line 361 "/n/fs/fac/bwk/awk/awkgram.y"
1541 { yyval
.p
= op1(NOT
, notnull(yypt
[-0].yyv
.p
)); } break;
1543 #line 362 "/n/fs/fac/bwk/awk/awkgram.y"
1544 { yyval
.p
= op2(BLTIN
, itonp(yypt
[-2].yyv
.i
), rectonode()); } break;
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;
1549 #line 364 "/n/fs/fac/bwk/awk/awkgram.y"
1550 { yyval
.p
= op2(BLTIN
, itonp(yypt
[-0].yyv
.i
), rectonode()); } break;
1552 #line 365 "/n/fs/fac/bwk/awk/awkgram.y"
1553 { yyval
.p
= op2(CALL
, celltonode(yypt
[-2].yyv
.cp
,CVAR
), NIL
); } break;
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;
1558 #line 367 "/n/fs/fac/bwk/awk/awkgram.y"
1559 { yyval
.p
= op1(CLOSE
, yypt
[-0].yyv
.p
); } break;
1561 #line 368 "/n/fs/fac/bwk/awk/awkgram.y"
1562 { yyval
.p
= op1(PREDECR
, yypt
[-0].yyv
.p
); } break;
1564 #line 369 "/n/fs/fac/bwk/awk/awkgram.y"
1565 { yyval
.p
= op1(PREINCR
, yypt
[-0].yyv
.p
); } break;
1567 #line 370 "/n/fs/fac/bwk/awk/awkgram.y"
1568 { yyval
.p
= op1(POSTDECR
, yypt
[-1].yyv
.p
); } break;
1570 #line 371 "/n/fs/fac/bwk/awk/awkgram.y"
1571 { yyval
.p
= op1(POSTINCR
, yypt
[-1].yyv
.p
); } break;
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;
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;
1579 #line 374 "/n/fs/fac/bwk/awk/awkgram.y"
1580 { yyval
.p
= op3(GETLINE
, yypt
[-0].yyv
.p
, NIL
, NIL
); } break;
1582 #line 375 "/n/fs/fac/bwk/awk/awkgram.y"
1583 { yyval
.p
= op3(GETLINE
, NIL
, NIL
, NIL
); } break;
1585 #line 377 "/n/fs/fac/bwk/awk/awkgram.y"
1586 { yyval
.p
= op2(INDEX
, yypt
[-3].yyv
.p
, yypt
[-1].yyv
.p
); } break;
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;
1592 #line 381 "/n/fs/fac/bwk/awk/awkgram.y"
1593 { yyval
.p
= yypt
[-1].yyv
.p
; } break;
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;
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));
1602 yyval
.p
= op3(MATCHFCN
, (Node
*)1, yypt
[-3].yyv
.p
, yypt
[-1].yyv
.p
); } break;
1604 #line 389 "/n/fs/fac/bwk/awk/awkgram.y"
1605 { yyval
.p
= celltonode(yypt
[-0].yyv
.cp
, CCON
); } break;
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;
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;
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;
1616 #line 396 "/n/fs/fac/bwk/awk/awkgram.y"
1617 { yyval
.p
= op1(yypt
[-3].yyv
.i
, yypt
[-1].yyv
.p
); } break;
1619 #line 397 "/n/fs/fac/bwk/awk/awkgram.y"
1620 { yyval
.p
= celltonode(yypt
[-0].yyv
.cp
, CCON
); } break;
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;
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());
1629 yyval
.p
= op4(yypt
[-5].yyv
.i
, (Node
*)1, yypt
[-3].yyv
.p
, yypt
[-1].yyv
.p
, rectonode()); } break;
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;
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
);
1638 yyval
.p
= op4(yypt
[-7].yyv
.i
, (Node
*)1, yypt
[-5].yyv
.p
, yypt
[-3].yyv
.p
, yypt
[-1].yyv
.p
); } break;
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;
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;
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;
1649 #line 422 "/n/fs/fac/bwk/awk/awkgram.y"
1650 { yyval
.p
= op1(INDIRECT
, celltonode(yypt
[-0].yyv
.cp
, CVAR
)); } break;
1652 #line 423 "/n/fs/fac/bwk/awk/awkgram.y"
1653 { yyval
.p
= op1(INDIRECT
, yypt
[-0].yyv
.p
); } break;
1655 #line 427 "/n/fs/fac/bwk/awk/awkgram.y"
1656 { arglist
= yyval
.p
= 0; } break;
1658 #line 428 "/n/fs/fac/bwk/awk/awkgram.y"
1659 { arglist
= yyval
.p
= celltonode(yypt
[-0].yyv
.cp
,CVAR
); } break;
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;
1666 #line 435 "/n/fs/fac/bwk/awk/awkgram.y"
1667 { yyval
.p
= celltonode(yypt
[-0].yyv
.cp
, CVAR
); } break;
1669 #line 436 "/n/fs/fac/bwk/awk/awkgram.y"
1670 { yyval
.p
= op1(ARG
, itonp(yypt
[-0].yyv
.i
)); } break;
1672 #line 437 "/n/fs/fac/bwk/awk/awkgram.y"
1673 { yyval
.p
= op1(VARNF
, (Node
*) yypt
[-0].yyv
.cp
); } break;
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 */