diff options
-rw-r--r-- | perl.h | 1 | ||||
-rw-r--r-- | perly.act | 556 | ||||
-rw-r--r-- | perly.h | 2 | ||||
-rw-r--r-- | perly.tab | 1227 | ||||
-rw-r--r-- | perly.y | 42 | ||||
-rw-r--r-- | toke.c | 47 |
6 files changed, 1010 insertions, 865 deletions
@@ -4662,6 +4662,7 @@ typedef enum { XATTRBLOCK, XATTRTERM, XTERMBLOCK, + XPOSTDEREF, XTERMORDORDOR /* evil hack */ /* update exp_name[] in toke.c if adding to this enum */ } expectation; @@ -5,14 +5,14 @@ */ case 2: -#line 141 "perly.y" +#line 142 "perly.y" { PL_parser->expect = XSTATE; ;} break; case 3: -#line 145 "perly.y" +#line 146 "perly.y" { newPROG(block_end((ps[(3) - (4)].val.ival),(ps[(4) - (4)].val.opval))); (yyval.ival) = 0; @@ -20,14 +20,14 @@ case 2: break; case 4: -#line 150 "perly.y" +#line 151 "perly.y" { parser->expect = XTERM; ;} break; case 5: -#line 154 "perly.y" +#line 155 "perly.y" { PL_eval_root = (ps[(3) - (3)].val.opval); (yyval.ival) = 0; @@ -35,14 +35,14 @@ case 2: break; case 6: -#line 159 "perly.y" +#line 160 "perly.y" { parser->expect = XBLOCK; ;} break; case 7: -#line 163 "perly.y" +#line 164 "perly.y" { PL_pad_reset_pending = TRUE; PL_eval_root = (ps[(3) - (3)].val.opval); @@ -53,14 +53,14 @@ case 2: break; case 8: -#line 171 "perly.y" +#line 172 "perly.y" { parser->expect = XSTATE; ;} break; case 9: -#line 175 "perly.y" +#line 176 "perly.y" { PL_pad_reset_pending = TRUE; PL_eval_root = (ps[(3) - (3)].val.opval); @@ -71,14 +71,14 @@ case 2: break; case 10: -#line 183 "perly.y" +#line 184 "perly.y" { parser->expect = XSTATE; ;} break; case 11: -#line 187 "perly.y" +#line 188 "perly.y" { PL_pad_reset_pending = TRUE; PL_eval_root = (ps[(3) - (3)].val.opval); @@ -89,14 +89,14 @@ case 2: break; case 12: -#line 195 "perly.y" +#line 196 "perly.y" { parser->expect = XSTATE; ;} break; case 13: -#line 199 "perly.y" +#line 200 "perly.y" { PL_eval_root = (ps[(3) - (3)].val.opval); (yyval.ival) = 0; @@ -104,7 +104,7 @@ case 2: break; case 14: -#line 207 "perly.y" +#line 208 "perly.y" { if (PL_parser->copline > (line_t)IVAL((ps[(1) - (4)].val.i_tkval))) PL_parser->copline = (line_t)IVAL((ps[(1) - (4)].val.i_tkval)); (yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval)); @@ -114,7 +114,7 @@ case 2: break; case 15: -#line 217 "perly.y" +#line 218 "perly.y" { if (PL_parser->copline > (line_t)IVAL((ps[(1) - (7)].val.i_tkval))) PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval)); (yyval.opval) = block_end((ps[(2) - (7)].val.ival), (ps[(5) - (7)].val.opval)); @@ -124,12 +124,12 @@ case 2: break; case 16: -#line 226 "perly.y" +#line 227 "perly.y" { (yyval.ival) = block_start(TRUE); ;} break; case 17: -#line 230 "perly.y" +#line 231 "perly.y" { if (PL_parser->copline > (line_t)IVAL((ps[(1) - (4)].val.i_tkval))) PL_parser->copline = (line_t)IVAL((ps[(1) - (4)].val.i_tkval)); (yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval)); @@ -139,17 +139,17 @@ case 2: break; case 18: -#line 239 "perly.y" +#line 240 "perly.y" { (yyval.ival) = block_start(FALSE); ;} break; case 19: -#line 244 "perly.y" +#line 245 "perly.y" { (yyval.opval) = (OP*)NULL; ;} break; case 20: -#line 246 "perly.y" +#line 247 "perly.y" { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval)); PL_pad_reset_pending = TRUE; if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval)) @@ -158,12 +158,12 @@ case 2: break; case 21: -#line 255 "perly.y" +#line 256 "perly.y" { (yyval.opval) = (OP*)NULL; ;} break; case 22: -#line 257 "perly.y" +#line 258 "perly.y" { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval)); PL_pad_reset_pending = TRUE; if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval)) @@ -172,7 +172,7 @@ case 2: break; case 23: -#line 266 "perly.y" +#line 267 "perly.y" { if((ps[(1) - (1)].val.opval)) { (yyval.opval) = newSTATEOP(0, NULL, (ps[(1) - (1)].val.opval)); @@ -183,12 +183,12 @@ case 2: break; case 24: -#line 274 "perly.y" +#line 275 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 25: -#line 278 "perly.y" +#line 279 "perly.y" { (yyval.opval) = newSTATEOP(SVf_UTF8 * PVAL((ps[(1) - (2)].val.p_tkval))[strlen(PVAL((ps[(1) - (2)].val.p_tkval)))+1], @@ -199,7 +199,7 @@ case 2: break; case 26: -#line 286 "perly.y" +#line 287 "perly.y" { (yyval.opval) = newSTATEOP(SVf_UTF8 * PVAL((ps[(1) - (2)].val.p_tkval))[strlen(PVAL((ps[(1) - (2)].val.p_tkval)))+1], @@ -209,12 +209,12 @@ case 2: break; case 27: -#line 296 "perly.y" +#line 297 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 28: -#line 298 "perly.y" +#line 299 "perly.y" { (yyval.opval) = newOP(OP_NULL,0); TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'p'); @@ -222,7 +222,7 @@ case 2: break; case 29: -#line 303 "perly.y" +#line 304 "perly.y" { CV *fmtcv = PL_compcv; #ifdef MAD @@ -242,7 +242,7 @@ case 2: break; case 30: -#line 320 "perly.y" +#line 321 "perly.y" { if ((ps[(2) - (3)].val.opval)->op_type == OP_CONST) { const char *const name = @@ -267,7 +267,7 @@ case 2: break; case 31: -#line 342 "perly.y" +#line 343 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); #ifdef MAD @@ -298,7 +298,7 @@ case 2: break; case 32: -#line 370 "perly.y" +#line 371 "perly.y" { #ifdef MAD (yyval.opval) = package((ps[(3) - (4)].val.opval)); @@ -316,12 +316,12 @@ case 2: break; case 33: -#line 385 "perly.y" +#line 386 "perly.y" { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;} break; case 34: -#line 387 "perly.y" +#line 388 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); #ifdef MAD @@ -339,7 +339,7 @@ case 2: break; case 35: -#line 402 "perly.y" +#line 403 "perly.y" { (yyval.opval) = block_end((ps[(3) - (7)].val.ival), newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval))); @@ -351,7 +351,7 @@ case 2: break; case 36: -#line 411 "perly.y" +#line 412 "perly.y" { (yyval.opval) = block_end((ps[(3) - (7)].val.ival), newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval))); @@ -363,7 +363,7 @@ case 2: break; case 37: -#line 420 "perly.y" +#line 421 "perly.y" { const PADOFFSET offset = pad_findmy_pvs("$_", 0); (yyval.opval) = block_end((ps[(3) - (6)].val.ival), @@ -377,17 +377,17 @@ case 2: break; case 38: -#line 431 "perly.y" +#line 432 "perly.y" { (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newWHENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)))); ;} break; case 39: -#line 433 "perly.y" +#line 434 "perly.y" { (yyval.opval) = newWHENOP(0, op_scope((ps[(2) - (2)].val.opval))); ;} break; case 40: -#line 435 "perly.y" +#line 436 "perly.y" { (yyval.opval) = block_end((ps[(3) - (8)].val.ival), newWHILEOP(0, 1, (LOOP*)(OP*)NULL, @@ -400,7 +400,7 @@ case 2: break; case 41: -#line 445 "perly.y" +#line 446 "perly.y" { (yyval.opval) = block_end((ps[(3) - (8)].val.ival), newWHILEOP(0, 1, (LOOP*)(OP*)NULL, @@ -413,7 +413,7 @@ case 2: break; case 42: -#line 456 "perly.y" +#line 457 "perly.y" { OP *initop = IF_MAD((ps[(4) - (11)].val.opval) ? (ps[(4) - (11)].val.opval) : newOP(OP_NULL, 0), (ps[(4) - (11)].val.opval)); OP *forop = newWHILEOP(0, 1, (LOOP*)(OP*)NULL, @@ -436,7 +436,7 @@ case 2: break; case 43: -#line 476 "perly.y" +#line 477 "perly.y" { (yyval.opval) = block_end((ps[(3) - (9)].val.ival), newFOROP(0, (ps[(4) - (9)].val.opval), (ps[(6) - (9)].val.opval), (ps[(8) - (9)].val.opval), (ps[(9) - (9)].val.opval))); TOKEN_GETMAD((ps[(1) - (9)].val.i_tkval),(yyval.opval),'W'); @@ -448,7 +448,7 @@ case 2: break; case 44: -#line 485 "perly.y" +#line 486 "perly.y" { (yyval.opval) = block_end((ps[(4) - (8)].val.ival), newFOROP(0, op_lvalue((ps[(2) - (8)].val.opval), OP_ENTERLOOP), (ps[(5) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval))); @@ -460,7 +460,7 @@ case 2: break; case 45: -#line 494 "perly.y" +#line 495 "perly.y" { (yyval.opval) = block_end((ps[(3) - (7)].val.ival), newFOROP(0, (OP*)NULL, (ps[(4) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval))); @@ -472,7 +472,7 @@ case 2: break; case 46: -#line 503 "perly.y" +#line 504 "perly.y" { /* a block is a loop that happens once */ (yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL, @@ -481,7 +481,7 @@ case 2: break; case 47: -#line 509 "perly.y" +#line 510 "perly.y" { package((ps[(3) - (5)].val.opval)); if ((ps[(2) - (5)].val.opval)) { @@ -491,7 +491,7 @@ case 2: break; case 48: -#line 516 "perly.y" +#line 517 "perly.y" { /* a block is a loop that happens once */ (yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL, @@ -504,7 +504,7 @@ case 2: break; case 49: -#line 526 "perly.y" +#line 527 "perly.y" { PL_parser->expect = XSTATE; (yyval.opval) = (ps[(1) - (2)].val.opval); @@ -513,7 +513,7 @@ case 2: break; case 50: -#line 532 "perly.y" +#line 533 "perly.y" { PL_parser->expect = XSTATE; (yyval.opval) = IF_MAD(newOP(OP_NULL, 0), (OP*)NULL); @@ -523,7 +523,7 @@ case 2: break; case 51: -#line 542 "perly.y" +#line 543 "perly.y" { OP *list; if ((ps[(2) - (2)].val.opval)) { OP *term = (ps[(2) - (2)].val.opval); @@ -547,55 +547,55 @@ case 2: break; case 52: -#line 565 "perly.y" +#line 566 "perly.y" { (yyval.opval) = NULL; ;} break; case 53: -#line 567 "perly.y" +#line 568 "perly.y" { (yyval.opval) = op_unscope((ps[(2) - (3)].val.opval)); ;} break; case 54: -#line 572 "perly.y" +#line 573 "perly.y" { (yyval.opval) = (OP*)NULL; ;} break; case 55: -#line 574 "perly.y" +#line 575 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 56: -#line 576 "perly.y" +#line 577 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'i'); ;} break; case 57: -#line 580 "perly.y" +#line 581 "perly.y" { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'i'); ;} break; case 58: -#line 584 "perly.y" +#line 585 "perly.y" { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[(3) - (3)].val.opval)), (ps[(1) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w'); ;} break; case 59: -#line 588 "perly.y" +#line 589 "perly.y" { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w'); ;} break; case 60: -#line 592 "perly.y" +#line 593 "perly.y" { (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval), (OP*)NULL); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w'); PL_parser->copline = (line_t)IVAL((ps[(2) - (3)].val.i_tkval)); @@ -603,17 +603,17 @@ case 2: break; case 61: -#line 597 "perly.y" +#line 598 "perly.y" { (yyval.opval) = newWHENOP((ps[(3) - (3)].val.opval), op_scope((ps[(1) - (3)].val.opval))); ;} break; case 62: -#line 602 "perly.y" +#line 603 "perly.y" { (yyval.opval) = (OP*)NULL; ;} break; case 63: -#line 604 "perly.y" +#line 605 "perly.y" { ((ps[(2) - (2)].val.opval))->op_flags |= OPf_PARENS; (yyval.opval) = op_scope((ps[(2) - (2)].val.opval)); @@ -622,7 +622,7 @@ case 2: break; case 64: -#line 610 "perly.y" +#line 611 "perly.y" { PL_parser->copline = (line_t)IVAL((ps[(1) - (6)].val.i_tkval)); (yyval.opval) = newCONDOP(0, newSTATEOP(OPf_SPECIAL,NULL,(ps[(3) - (6)].val.opval)), @@ -635,12 +635,12 @@ case 2: break; case 65: -#line 623 "perly.y" +#line 624 "perly.y" { (yyval.opval) = (OP*)NULL; ;} break; case 66: -#line 625 "perly.y" +#line 626 "perly.y" { (yyval.opval) = op_scope((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); @@ -648,91 +648,91 @@ case 2: break; case 67: -#line 633 "perly.y" +#line 634 "perly.y" { (yyval.ival) = (PL_min_intro_pending && PL_max_intro_pending >= PL_min_intro_pending); intro_my(); ;} break; case 68: -#line 639 "perly.y" +#line 640 "perly.y" { (yyval.opval) = (OP*)NULL; ;} break; case 70: -#line 645 "perly.y" +#line 646 "perly.y" { YYSTYPE tmplval; (void)scan_num("1", &tmplval); (yyval.opval) = tmplval.opval; ;} break; case 72: -#line 653 "perly.y" +#line 654 "perly.y" { (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); ;} break; case 73: -#line 658 "perly.y" +#line 659 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;} break; case 74: -#line 662 "perly.y" +#line 663 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;} break; case 75: -#line 666 "perly.y" +#line 667 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;} break; case 76: -#line 669 "perly.y" +#line 670 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 77: -#line 670 "perly.y" +#line 671 "perly.y" { (yyval.opval) = (OP*)NULL; ;} break; case 78: -#line 674 "perly.y" +#line 675 "perly.y" { (yyval.ival) = start_subparse(FALSE, 0); SAVEFREESV(PL_compcv); ;} break; case 79: -#line 680 "perly.y" +#line 681 "perly.y" { (yyval.ival) = start_subparse(FALSE, CVf_ANON); SAVEFREESV(PL_compcv); ;} break; case 80: -#line 685 "perly.y" +#line 686 "perly.y" { (yyval.ival) = start_subparse(TRUE, 0); SAVEFREESV(PL_compcv); ;} break; case 83: -#line 696 "perly.y" +#line 697 "perly.y" { (yyval.opval) = (OP*)NULL; ;} break; case 85: -#line 702 "perly.y" +#line 703 "perly.y" { (yyval.opval) = (OP*)NULL; ;} break; case 86: -#line 704 "perly.y" +#line 705 "perly.y" { (yyval.opval) = (ps[(2) - (2)].val.opval); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':'); ;} break; case 87: -#line 708 "perly.y" +#line 709 "perly.y" { (yyval.opval) = IF_MAD( newOP(OP_NULL, 0), (OP*)NULL @@ -742,14 +742,14 @@ case 2: break; case 88: -#line 718 "perly.y" +#line 719 "perly.y" { (yyval.opval) = (ps[(2) - (2)].val.opval); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':'); ;} break; case 89: -#line 722 "perly.y" +#line 723 "perly.y" { (yyval.opval) = IF_MAD( newOP(OP_NULL, 0), (OP*)NULL @@ -759,12 +759,12 @@ case 2: break; case 90: -#line 731 "perly.y" +#line 732 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 91: -#line 732 "perly.y" +#line 733 "perly.y" { (yyval.opval) = IF_MAD( newOP(OP_NULL,0), (OP*)NULL @@ -775,28 +775,28 @@ case 2: break; case 92: -#line 743 "perly.y" +#line 744 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 93: -#line 747 "perly.y" +#line 748 "perly.y" { (yyval.opval) = newLOGOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 94: -#line 751 "perly.y" +#line 752 "perly.y" { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 96: -#line 759 "perly.y" +#line 760 "perly.y" { #ifdef MAD OP* op = newNULLLIST(); @@ -809,7 +809,7 @@ case 2: break; case 97: -#line 769 "perly.y" +#line 770 "perly.y" { OP* term = (ps[(3) - (3)].val.opval); DO_MAD( @@ -821,7 +821,7 @@ case 2: break; case 99: -#line 782 "perly.y" +#line 783 "perly.y" { (yyval.opval) = convert(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_STACKED, op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (3)].val.i_tkval)),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) ); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o'); @@ -829,7 +829,7 @@ case 2: break; case 100: -#line 787 "perly.y" +#line 788 "perly.y" { (yyval.opval) = convert(IVAL((ps[(1) - (5)].val.i_tkval)), OPf_STACKED, op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (5)].val.i_tkval)),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) ); TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o'); @@ -839,7 +839,7 @@ case 2: break; case 101: -#line 794 "perly.y" +#line 795 "perly.y" { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)), @@ -851,7 +851,7 @@ case 2: break; case 102: -#line 803 "perly.y" +#line 804 "perly.y" { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)), newUNOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval)))); @@ -860,7 +860,7 @@ case 2: break; case 103: -#line 809 "perly.y" +#line 810 "perly.y" { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)), @@ -869,7 +869,7 @@ case 2: break; case 104: -#line 815 "perly.y" +#line 816 "perly.y" { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)), @@ -880,14 +880,14 @@ case 2: break; case 105: -#line 823 "perly.y" +#line 824 "perly.y" { (yyval.opval) = convert(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 106: -#line 827 "perly.y" +#line 828 "perly.y" { (yyval.opval) = convert(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval)); TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o'); TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'('); @@ -896,13 +896,13 @@ case 2: break; case 107: -#line 833 "perly.y" +#line 834 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); ;} break; case 108: -#line 836 "perly.y" +#line 837 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval))); @@ -910,7 +910,7 @@ case 2: break; case 111: -#line 851 "perly.y" +#line 852 "perly.y" { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval))); PL_parser->expect = XOPERATOR; TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{'); @@ -920,7 +920,7 @@ case 2: break; case 112: -#line 858 "perly.y" +#line 859 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval))); TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'['); TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']'); @@ -928,7 +928,7 @@ case 2: break; case 113: -#line 863 "perly.y" +#line 864 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV), scalar((ps[(4) - (5)].val.opval))); @@ -939,7 +939,7 @@ case 2: break; case 114: -#line 871 "perly.y" +#line 872 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV), scalar((ps[(3) - (4)].val.opval))); @@ -949,7 +949,7 @@ case 2: break; case 115: -#line 878 "perly.y" +#line 879 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval))); PL_parser->expect = XOPERATOR; TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{'); @@ -959,7 +959,7 @@ case 2: break; case 116: -#line 885 "perly.y" +#line 886 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV), jmaybe((ps[(4) - (6)].val.opval))); @@ -972,7 +972,7 @@ case 2: break; case 117: -#line 895 "perly.y" +#line 896 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV), jmaybe((ps[(3) - (5)].val.opval))); @@ -984,7 +984,7 @@ case 2: break; case 118: -#line 904 "perly.y" +#line 905 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[(1) - (4)].val.opval)))); TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'a'); @@ -994,7 +994,7 @@ case 2: break; case 119: -#line 911 "perly.y" +#line 912 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[(4) - (5)].val.opval), newCVREF(0, scalar((ps[(1) - (5)].val.opval))))); @@ -1005,7 +1005,7 @@ case 2: break; case 120: -#line 920 "perly.y" +#line 921 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval), newCVREF(0, scalar((ps[(1) - (4)].val.opval))))); @@ -1015,7 +1015,7 @@ case 2: break; case 121: -#line 927 "perly.y" +#line 928 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[(1) - (3)].val.opval)))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'('); @@ -1024,7 +1024,7 @@ case 2: break; case 122: -#line 933 "perly.y" +#line 934 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval)); TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),')'); @@ -1034,7 +1034,7 @@ case 2: break; case 123: -#line 940 "perly.y" +#line 941 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - (4)].val.opval)); TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'['); TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']'); @@ -1042,7 +1042,7 @@ case 2: break; case 124: -#line 945 "perly.y" +#line 946 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL); TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),')'); @@ -1052,21 +1052,21 @@ case 2: break; case 125: -#line 955 "perly.y" +#line 956 "perly.y" { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 126: -#line 959 "perly.y" +#line 960 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 127: -#line 963 "perly.y" +#line 964 "perly.y" { if (IVAL((ps[(2) - (3)].val.i_tkval)) != OP_REPEAT) scalar((ps[(1) - (3)].val.opval)); (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval))); @@ -1075,49 +1075,49 @@ case 2: break; case 128: -#line 969 "perly.y" +#line 970 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 129: -#line 973 "perly.y" +#line 974 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 130: -#line 977 "perly.y" +#line 978 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 131: -#line 981 "perly.y" +#line 982 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 132: -#line 985 "perly.y" +#line 986 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 133: -#line 989 "perly.y" +#line 990 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 134: -#line 993 "perly.y" +#line 994 "perly.y" { (yyval.opval) = newRANGE(IVAL((ps[(2) - (3)].val.i_tkval)), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); DO_MAD({ @@ -1132,28 +1132,28 @@ case 2: break; case 135: -#line 1005 "perly.y" +#line 1006 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 136: -#line 1009 "perly.y" +#line 1010 "perly.y" { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 137: -#line 1013 "perly.y" +#line 1014 "perly.y" { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 138: -#line 1017 "perly.y" +#line 1018 "perly.y" { (yyval.opval) = bind_match(IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval), ((yyval.opval)->op_type == OP_NOT @@ -1163,14 +1163,14 @@ case 2: break; case 139: -#line 1027 "perly.y" +#line 1028 "perly.y" { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 140: -#line 1031 "perly.y" +#line 1032 "perly.y" { (yyval.opval) = IF_MAD( newUNOP(OP_NULL, 0, (ps[(2) - (2)].val.opval)), (ps[(2) - (2)].val.opval) @@ -1180,21 +1180,21 @@ case 2: break; case 141: -#line 1038 "perly.y" +#line 1039 "perly.y" { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 142: -#line 1042 "perly.y" +#line 1043 "perly.y" { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((ps[(2) - (2)].val.opval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 143: -#line 1046 "perly.y" +#line 1047 "perly.y" { (yyval.opval) = newUNOP(OP_POSTINC, 0, op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC)); TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o'); @@ -1202,7 +1202,7 @@ case 2: break; case 144: -#line 1051 "perly.y" +#line 1052 "perly.y" { (yyval.opval) = newUNOP(OP_POSTDEC, 0, op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC)); TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o'); @@ -1210,7 +1210,7 @@ case 2: break; case 145: -#line 1056 "perly.y" +#line 1057 "perly.y" { (yyval.opval) = newUNOP(OP_PREINC, 0, op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREINC)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); @@ -1218,7 +1218,7 @@ case 2: break; case 146: -#line 1061 "perly.y" +#line 1062 "perly.y" { (yyval.opval) = newUNOP(OP_PREDEC, 0, op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); @@ -1226,7 +1226,7 @@ case 2: break; case 147: -#line 1070 "perly.y" +#line 1071 "perly.y" { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval)); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'['); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),']'); @@ -1234,7 +1234,7 @@ case 2: break; case 148: -#line 1075 "perly.y" +#line 1076 "perly.y" { (yyval.opval) = newANONLIST((OP*)NULL); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'['); TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),']'); @@ -1242,7 +1242,7 @@ case 2: break; case 149: -#line 1080 "perly.y" +#line 1081 "perly.y" { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval)); TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{'); TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),';'); @@ -1251,7 +1251,7 @@ case 2: break; case 150: -#line 1086 "perly.y" +#line 1087 "perly.y" { (yyval.opval) = newANONHASH((OP*)NULL); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'{'); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),';'); @@ -1260,7 +1260,7 @@ case 2: break; case 151: -#line 1092 "perly.y" +#line 1093 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)); TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o'); @@ -1270,21 +1270,21 @@ case 2: break; case 152: -#line 1103 "perly.y" +#line 1104 "perly.y" { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), IVAL((ps[(1) - (2)].val.i_tkval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 153: -#line 1107 "perly.y" +#line 1108 "perly.y" { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - (2)].val.opval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'D'); ;} break; case 154: -#line 1111 "perly.y" +#line 1112 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, op_prepend_elem(OP_LIST, @@ -1299,7 +1299,7 @@ case 2: break; case 155: -#line 1123 "perly.y" +#line 1124 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, op_append_elem(OP_LIST, @@ -1315,7 +1315,7 @@ case 2: break; case 156: -#line 1136 "perly.y" +#line 1137 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, op_prepend_elem(OP_LIST, scalar(newCVREF(0,scalar((ps[(2) - (4)].val.opval)))), (OP*)NULL)); dep(); @@ -1326,7 +1326,7 @@ case 2: break; case 157: -#line 1144 "perly.y" +#line 1145 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, op_prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), @@ -1338,7 +1338,7 @@ case 2: break; case 162: -#line 1160 "perly.y" +#line 1161 "perly.y" { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval)); TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'?'); TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),':'); @@ -1346,26 +1346,26 @@ case 2: break; case 163: -#line 1165 "perly.y" +#line 1166 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, op_lvalue((ps[(2) - (2)].val.opval),OP_REFGEN)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 164: -#line 1169 "perly.y" +#line 1170 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 165: -#line 1171 "perly.y" +#line 1172 "perly.y" { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'k'); ;} break; case 166: -#line 1175 "perly.y" +#line 1176 "perly.y" { (yyval.opval) = sawparens(IF_MAD(newUNOP(OP_NULL,0,(ps[(2) - (3)].val.opval)), (ps[(2) - (3)].val.opval))); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')'); @@ -1373,12 +1373,12 @@ case 2: break; case 167: -#line 1180 "perly.y" +#line 1181 "perly.y" { (yyval.opval) = IF_MAD(newUNOP(OP_NULL,0,(ps[(1) - (1)].val.opval)), (ps[(1) - (1)].val.opval)); ;} break; case 168: -#line 1182 "perly.y" +#line 1183 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')'); @@ -1386,37 +1386,37 @@ case 2: break; case 169: -#line 1187 "perly.y" +#line 1188 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 170: -#line 1189 "perly.y" +#line 1190 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 171: -#line 1191 "perly.y" +#line 1192 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 172: -#line 1193 "perly.y" +#line 1194 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 173: -#line 1195 "perly.y" +#line 1196 "perly.y" { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;} break; case 174: -#line 1197 "perly.y" +#line 1198 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 175: -#line 1199 "perly.y" +#line 1200 "perly.y" { (yyval.opval) = op_prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, @@ -1431,7 +1431,7 @@ case 2: break; case 176: -#line 1211 "perly.y" +#line 1212 "perly.y" { (yyval.opval) = op_prepend_elem(OP_KVASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVASLICE, 0, @@ -1446,7 +1446,7 @@ case 2: break; case 177: -#line 1223 "perly.y" +#line 1224 "perly.y" { (yyval.opval) = op_prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -1463,7 +1463,7 @@ case 2: break; case 178: -#line 1237 "perly.y" +#line 1238 "perly.y" { (yyval.opval) = op_prepend_elem(OP_KVHSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVHSLICE, 0, @@ -1480,17 +1480,17 @@ case 2: break; case 179: -#line 1251 "perly.y" +#line 1252 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 180: -#line 1253 "perly.y" +#line 1254 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); ;} break; case 181: -#line 1255 "perly.y" +#line 1256 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')'); @@ -1498,7 +1498,7 @@ case 2: break; case 182: -#line 1260 "perly.y" +#line 1261 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval)))); @@ -1514,7 +1514,7 @@ case 2: break; case 183: -#line 1273 "perly.y" +#line 1274 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval)))); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o'); @@ -1522,82 +1522,118 @@ case 2: break; case 184: -#line 1278 "perly.y" +#line 1279 "perly.y" + { (yyval.opval) = newSVREF((ps[(1) - (4)].val.opval)); + TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'$'); + ;} + break; + + case 185: +#line 1283 "perly.y" + { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); + TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'@'); + ;} + break; + + case 186: +#line 1287 "perly.y" + { (yyval.opval) = newHVREF((ps[(1) - (4)].val.opval)); + TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'%'); + ;} + break; + + case 187: +#line 1291 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, + scalar(newCVREF(IVAL((ps[(3) - (4)].val.i_tkval)),(ps[(1) - (4)].val.opval)))); + TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'&'); + ;} + break; + + case 188: +#line 1296 "perly.y" + { (yyval.opval) = newGVREF(0,(ps[(1) - (4)].val.opval)); + TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'*'); + ;} + break; + + case 189: +#line 1300 "perly.y" { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o'); ;} break; - case 185: -#line 1283 "perly.y" + case 190: +#line 1305 "perly.y" { (yyval.opval) = newLOOPEX(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; - case 186: -#line 1287 "perly.y" + case 191: +#line 1309 "perly.y" { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; - case 187: -#line 1291 "perly.y" + case 192: +#line 1313 "perly.y" { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0); TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o'); ;} break; - case 188: -#line 1295 "perly.y" + case 193: +#line 1317 "perly.y" { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; - case 189: -#line 1299 "perly.y" + case 194: +#line 1321 "perly.y" { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; - case 190: -#line 1303 "perly.y" + case 195: +#line 1325 "perly.y" { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.i_tkval) ? OPf_SPECIAL : 0); TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o'); ;} break; - case 191: -#line 1307 "perly.y" + case 196: +#line 1329 "perly.y" { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.i_tkval) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; - case 192: -#line 1311 "perly.y" + case 197: +#line 1333 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;} break; - case 193: -#line 1313 "perly.y" + case 198: +#line 1335 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); ;} break; - case 194: -#line 1316 "perly.y" + case 199: +#line 1338 "perly.y" { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0); TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o'); ;} break; - case 195: -#line 1320 "perly.y" + case 200: +#line 1342 "perly.y" { (yyval.opval) = newOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o'); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'('); @@ -1605,27 +1641,27 @@ case 2: ;} break; - case 196: -#line 1326 "perly.y" + case 201: +#line 1348 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; - case 197: -#line 1328 "perly.y" + case 202: +#line 1350 "perly.y" { (yyval.opval) = (ps[(1) - (3)].val.opval); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')'); ;} break; - case 198: -#line 1333 "perly.y" + case 203: +#line 1355 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;} break; - case 199: -#line 1336 "perly.y" + case 204: +#line 1358 "perly.y" { (yyval.opval) = (IVAL((ps[(1) - (3)].val.i_tkval)) == OP_NOT) ? newUNOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0, newSVOP(OP_CONST, 0, newSViv(0))) : newOP(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_SPECIAL); @@ -1636,8 +1672,8 @@ case 2: ;} break; - case 200: -#line 1345 "perly.y" + case 205: +#line 1367 "perly.y" { (yyval.opval) = newUNOP(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval)); TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o'); TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'('); @@ -1645,8 +1681,8 @@ case 2: ;} break; - case 201: -#line 1351 "perly.y" + case 206: +#line 1373 "perly.y" { if ( (ps[(1) - (1)].val.opval)->op_type != OP_TRANS && (ps[(1) - (1)].val.opval)->op_type != OP_TRANSR @@ -1659,16 +1695,16 @@ case 2: ;} break; - case 202: -#line 1362 "perly.y" + case 207: +#line 1384 "perly.y" { (yyval.opval) = pmruntime((ps[(1) - (5)].val.opval), (ps[(4) - (5)].val.opval), 1, (ps[(2) - (5)].val.ival)); TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')'); ;} break; - case 205: -#line 1369 "perly.y" + case 210: +#line 1391 "perly.y" { (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0), newSVOP(OP_CONST, 0, newSVpvs("Unimplemented"))); @@ -1676,8 +1712,8 @@ case 2: ;} break; - case 207: -#line 1379 "perly.y" + case 212: +#line 1401 "perly.y" { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval)); DO_MAD( token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'d'); @@ -1687,130 +1723,144 @@ case 2: ;} break; - case 208: -#line 1387 "perly.y" + case 213: +#line 1409 "perly.y" { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'d'); ;} break; - case 209: -#line 1394 "perly.y" + case 214: +#line 1416 "perly.y" { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')'); ;} break; - case 210: -#line 1399 "perly.y" + case 215: +#line 1421 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')'); ;} break; - case 211: -#line 1404 "perly.y" + case 216: +#line 1426 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; - case 212: -#line 1406 "perly.y" + case 217: +#line 1428 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; - case 213: -#line 1408 "perly.y" + case 218: +#line 1430 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; - case 214: -#line 1413 "perly.y" + case 219: +#line 1435 "perly.y" { (yyval.opval) = (OP*)NULL; ;} break; - case 215: -#line 1415 "perly.y" + case 220: +#line 1437 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; - case 216: -#line 1419 "perly.y" + case 221: +#line 1441 "perly.y" { (yyval.opval) = (OP*)NULL; ;} break; - case 217: -#line 1421 "perly.y" + case 222: +#line 1443 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; - case 218: -#line 1427 "perly.y" + case 223: +#line 1449 "perly.y" { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;} break; - case 219: -#line 1431 "perly.y" + case 224: +#line 1453 "perly.y" { (yyval.opval) = newCVREF(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'&'); ;} break; - case 220: -#line 1437 "perly.y" + case 225: +#line 1459 "perly.y" { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'$'); ;} break; - case 221: -#line 1443 "perly.y" + case 226: +#line 1465 "perly.y" { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= IVAL((ps[(1) - (2)].val.i_tkval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'@'); ;} break; - case 222: -#line 1450 "perly.y" + case 227: +#line 1472 "perly.y" { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= IVAL((ps[(1) - (2)].val.i_tkval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'%'); ;} break; - case 223: -#line 1457 "perly.y" + case 228: +#line 1479 "perly.y" { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'l'); ;} break; - case 224: -#line 1463 "perly.y" + case 229: +#line 1485 "perly.y" { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'*'); ;} break; - case 225: -#line 1470 "perly.y" + case 231: +#line 1492 "perly.y" + { (yyval.opval) = newAVREF((ps[(1) - (3)].val.opval)); + TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'@'); + ;} + break; + + case 233: +#line 1499 "perly.y" + { (yyval.opval) = newGVREF(0,(ps[(1) - (3)].val.opval)); + TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'*'); + ;} + break; + + case 234: +#line 1506 "perly.y" { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;} break; - case 226: -#line 1472 "perly.y" + case 235: +#line 1508 "perly.y" { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;} break; - case 227: -#line 1474 "perly.y" + case 236: +#line 1510 "perly.y" { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); ;} break; - case 228: -#line 1477 "perly.y" + case 237: +#line 1513 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; @@ -1821,6 +1871,6 @@ case 2: /* Generated from: - * 5b290f371f373fb17e073f602c676e436e9d457a1d4db67d192e3cfa0eeb36d7 perly.y + * 3291ccd173f79d1ee1490bd5e07445713edcf8cbb091ae54165016bd846e2682 perly.y * 5c9d2a0262457fe9b70073fc8ad6c188f812f38ad57712b7e2f53daa01b297cc regen_perly.pl * ex: set ro: */ @@ -266,6 +266,6 @@ typedef union YYSTYPE /* Generated from: - * 5b290f371f373fb17e073f602c676e436e9d457a1d4db67d192e3cfa0eeb36d7 perly.y + * 3291ccd173f79d1ee1490bd5e07445713edcf8cbb091ae54165016bd846e2682 perly.y * 5c9d2a0262457fe9b70073fc8ad6c188f812f38ad57712b7e2f53daa01b297cc regen_perly.pl * ex: set ro: */ @@ -6,16 +6,16 @@ #define YYFINAL 14 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2872 +#define YYLAST 2884 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 104 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 66 +#define YYNNTS 68 /* YYNRULES -- Number of rules. */ -#define YYNRULES 228 +#define YYNRULES 237 /* YYNRULES -- Number of states. */ -#define YYNSTATES 462 +#define YYNSTATES 474 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -86,11 +86,12 @@ static const yytype_uint16 yyprhs[] = 550, 554, 560, 563, 566, 571, 577, 582, 588, 590, 592, 594, 596, 602, 605, 607, 610, 614, 616, 619, 621, 623, 625, 627, 629, 631, 636, 641, 647, 653, - 655, 657, 661, 666, 670, 672, 675, 678, 680, 683, - 686, 688, 691, 693, 696, 698, 702, 704, 708, 710, - 714, 719, 720, 726, 728, 730, 732, 734, 738, 741, - 745, 748, 750, 752, 754, 755, 757, 758, 760, 762, - 765, 768, 771, 774, 777, 780, 782, 784, 786 + 655, 657, 661, 666, 670, 675, 680, 685, 690, 695, + 697, 700, 703, 705, 708, 711, 713, 716, 718, 721, + 723, 727, 729, 733, 735, 739, 744, 745, 751, 753, + 755, 757, 759, 763, 766, 770, 773, 775, 777, 779, + 780, 782, 783, 785, 787, 790, 793, 796, 799, 802, + 805, 807, 811, 813, 817, 819, 821, 823 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -129,11 +130,11 @@ static const yytype_int16 yyrhs[] = 72, -1, 112, -1, 20, -1, 146, 78, 146, -1, 146, 77, 146, -1, 146, 76, 146, -1, 147, -1, 147, 80, -1, 147, 80, 156, -1, 156, -1, 60, - 169, 147, -1, 58, 102, 169, 146, 101, -1, 156, + 171, 147, -1, 58, 102, 171, 146, 101, -1, 156, 100, 150, 102, 161, 101, -1, 156, 100, 150, -1, - 24, 169, 160, -1, 25, 169, 102, 161, 101, -1, + 24, 171, 160, -1, 25, 171, 102, 161, 101, -1, 60, 160, -1, 58, 102, 161, 101, -1, -1, 33, - 139, 112, 149, 160, -1, 24, -1, 164, -1, 168, + 139, 112, 149, 160, -1, 24, -1, 164, -1, 170, 9, 146, 20, 10, -1, 164, 11, 146, 12, -1, 156, 100, 11, 146, 12, -1, 151, 11, 146, 12, -1, 164, 9, 146, 20, 10, -1, 156, 100, 9, @@ -159,50 +160,55 @@ static const yytype_int16 yyrhs[] = 156, -1, 93, 156, -1, 158, -1, 69, 156, -1, 102, 146, 101, -1, 29, -1, 102, 101, -1, 164, -1, 168, -1, 166, -1, 165, -1, 167, -1, 151, - -1, 165, 11, 146, 12, -1, 166, 11, 146, 12, - -1, 165, 9, 146, 20, 10, -1, 166, 9, 146, + -1, 169, 11, 146, 12, -1, 166, 11, 146, 12, + -1, 169, 9, 146, 20, 10, -1, 166, 9, 146, 20, 10, -1, 26, -1, 163, -1, 163, 102, 101, -1, 163, 102, 146, 101, -1, 68, 141, 160, -1, - 53, -1, 53, 156, -1, 79, 147, -1, 59, -1, - 59, 112, -1, 59, 156, -1, 71, -1, 71, 156, - -1, 32, -1, 32, 156, -1, 56, -1, 56, 102, - 101, -1, 30, -1, 30, 102, 101, -1, 31, -1, - 57, 102, 101, -1, 57, 102, 146, 101, -1, -1, - 27, 157, 102, 147, 101, -1, 23, -1, 148, -1, - 55, -1, 34, -1, 70, 159, 144, -1, 70, 159, - -1, 102, 146, 101, -1, 102, 101, -1, 164, -1, - 166, -1, 165, -1, -1, 147, -1, -1, 146, -1, - 164, -1, 19, 169, -1, 15, 169, -1, 16, 169, - -1, 17, 169, -1, 65, 169, -1, 18, 169, -1, - 23, -1, 164, -1, 112, -1, 28, -1 + 156, 100, 15, 18, -1, 156, 100, 16, 18, -1, + 156, 100, 17, 18, -1, 156, 100, 19, 18, -1, + 156, 100, 18, 18, -1, 53, -1, 53, 156, -1, + 79, 147, -1, 59, -1, 59, 112, -1, 59, 156, + -1, 71, -1, 71, 156, -1, 32, -1, 32, 156, + -1, 56, -1, 56, 102, 101, -1, 30, -1, 30, + 102, 101, -1, 31, -1, 57, 102, 101, -1, 57, + 102, 146, 101, -1, -1, 27, 157, 102, 147, 101, + -1, 23, -1, 148, -1, 55, -1, 34, -1, 70, + 159, 144, -1, 70, 159, -1, 102, 146, 101, -1, + 102, 101, -1, 164, -1, 166, -1, 165, -1, -1, + 147, -1, -1, 146, -1, 164, -1, 19, 171, -1, + 15, 171, -1, 16, 171, -1, 17, 171, -1, 65, + 171, -1, 18, 171, -1, 165, -1, 156, 100, 16, + -1, 168, -1, 156, 100, 18, -1, 23, -1, 164, + -1, 112, -1, 28, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 141, 141, 140, 150, 149, 159, 158, 171, 170, - 183, 182, 195, 194, 206, 216, 226, 229, 239, 244, - 245, 255, 256, 265, 273, 277, 285, 295, 297, 302, - 320, 319, 369, 385, 384, 401, 410, 419, 430, 432, - 434, 444, 454, 475, 484, 493, 502, 509, 508, 525, - 531, 541, 565, 566, 571, 573, 575, 579, 583, 587, - 591, 596, 602, 603, 609, 623, 624, 633, 639, 640, - 645, 648, 652, 657, 661, 665, 669, 670, 674, 680, - 685, 690, 691, 696, 697, 702, 703, 707, 717, 721, - 731, 732, 742, 746, 750, 754, 758, 768, 777, 781, - 786, 793, 802, 808, 814, 822, 826, 833, 832, 843, - 844, 848, 857, 862, 870, 877, 884, 894, 903, 910, - 919, 926, 932, 939, 944, 954, 958, 962, 968, 972, - 976, 980, 984, 988, 992, 1004, 1008, 1012, 1016, 1026, - 1030, 1037, 1041, 1045, 1050, 1055, 1060, 1069, 1074, 1079, - 1085, 1091, 1102, 1106, 1110, 1122, 1135, 1143, 1155, 1156, - 1157, 1158, 1159, 1164, 1168, 1170, 1174, 1179, 1181, 1186, - 1188, 1190, 1192, 1194, 1196, 1198, 1210, 1222, 1236, 1250, - 1252, 1254, 1259, 1272, 1277, 1282, 1286, 1290, 1294, 1298, - 1302, 1306, 1310, 1312, 1315, 1319, 1325, 1327, 1332, 1335, - 1344, 1351, 1350, 1366, 1367, 1368, 1374, 1378, 1386, 1393, - 1398, 1403, 1405, 1407, 1412, 1414, 1419, 1420, 1426, 1430, - 1436, 1442, 1449, 1456, 1462, 1469, 1471, 1473, 1476 + 0, 142, 142, 141, 151, 150, 160, 159, 172, 171, + 184, 183, 196, 195, 207, 217, 227, 230, 240, 245, + 246, 256, 257, 266, 274, 278, 286, 296, 298, 303, + 321, 320, 370, 386, 385, 402, 411, 420, 431, 433, + 435, 445, 455, 476, 485, 494, 503, 510, 509, 526, + 532, 542, 566, 567, 572, 574, 576, 580, 584, 588, + 592, 597, 603, 604, 610, 624, 625, 634, 640, 641, + 646, 649, 653, 658, 662, 666, 670, 671, 675, 681, + 686, 691, 692, 697, 698, 703, 704, 708, 718, 722, + 732, 733, 743, 747, 751, 755, 759, 769, 778, 782, + 787, 794, 803, 809, 815, 823, 827, 834, 833, 844, + 845, 849, 858, 863, 871, 878, 885, 895, 904, 911, + 920, 927, 933, 940, 945, 955, 959, 963, 969, 973, + 977, 981, 985, 989, 993, 1005, 1009, 1013, 1017, 1027, + 1031, 1038, 1042, 1046, 1051, 1056, 1061, 1070, 1075, 1080, + 1086, 1092, 1103, 1107, 1111, 1123, 1136, 1144, 1156, 1157, + 1158, 1159, 1160, 1165, 1169, 1171, 1175, 1180, 1182, 1187, + 1189, 1191, 1193, 1195, 1197, 1199, 1211, 1223, 1237, 1251, + 1253, 1255, 1260, 1273, 1278, 1282, 1286, 1290, 1295, 1299, + 1304, 1308, 1312, 1316, 1320, 1324, 1328, 1332, 1334, 1337, + 1341, 1347, 1349, 1354, 1357, 1366, 1373, 1372, 1388, 1389, + 1390, 1396, 1400, 1408, 1415, 1420, 1425, 1427, 1429, 1434, + 1436, 1441, 1442, 1448, 1452, 1458, 1464, 1471, 1478, 1484, + 1490, 1491, 1497, 1498, 1505, 1507, 1509, 1512 }; #endif @@ -235,7 +241,7 @@ static const char *const yytname[] = "listop", "@10", "method", "subscripted", "termbinop", "termunop", "anonymous", "termdo", "term", "@11", "myattrterm", "myterm", "optlistexpr", "optexpr", "my_scalar", "amper", "scalar", "ary", "hsh", - "arylen", "star", "indirob", 0 + "arylen", "star", "sliceme", "gelem", "indirob", 0 }; #endif @@ -281,9 +287,10 @@ static const yytype_uint8 yyr1[] = 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 157, 156, 156, 156, 156, 156, 158, 158, 159, - 159, 159, 159, 159, 160, 160, 161, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 169, 169, 169 + 156, 156, 156, 156, 156, 156, 157, 156, 156, 156, + 156, 156, 158, 158, 159, 159, 159, 159, 159, 160, + 160, 161, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 169, 170, 170, 171, 171, 171, 171 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -307,11 +314,12 @@ static const yytype_uint8 yyr2[] = 3, 5, 2, 2, 4, 5, 4, 5, 1, 1, 1, 1, 5, 2, 1, 2, 3, 1, 2, 1, 1, 1, 1, 1, 1, 4, 4, 5, 5, 1, - 1, 3, 4, 3, 1, 2, 2, 1, 2, 2, - 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, - 4, 0, 5, 1, 1, 1, 1, 3, 2, 3, - 2, 1, 1, 1, 0, 1, 0, 1, 1, 2, - 2, 2, 2, 2, 2, 1, 1, 1, 1 + 1, 3, 4, 3, 4, 4, 4, 4, 4, 1, + 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, + 3, 1, 3, 1, 3, 4, 0, 5, 1, 1, + 1, 1, 3, 2, 3, 2, 1, 1, 1, 0, + 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, + 1, 3, 1, 3, 1, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -319,349 +327,343 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 2, 4, 6, 8, 10, 12, 0, 16, 216, + 0, 2, 4, 6, 8, 10, 12, 0, 16, 221, 0, 0, 0, 19, 1, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 203, 0, 0, 179, 201, 167, - 196, 198, 192, 79, 206, 79, 184, 205, 194, 0, - 0, 187, 214, 0, 0, 0, 0, 0, 0, 190, - 0, 0, 0, 0, 0, 0, 0, 217, 95, 204, + 0, 0, 0, 0, 208, 0, 0, 179, 206, 167, + 201, 203, 197, 79, 211, 79, 189, 210, 199, 0, + 0, 192, 219, 0, 0, 0, 0, 0, 0, 195, + 0, 0, 0, 0, 0, 0, 0, 222, 95, 209, 174, 158, 159, 160, 161, 98, 164, 5, 180, 169, - 172, 171, 173, 170, 16, 7, 54, 50, 27, 80, - 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, - 0, 28, 65, 9, 0, 55, 0, 11, 24, 23, - 0, 0, 148, 0, 139, 140, 225, 228, 227, 226, - 220, 221, 222, 224, 219, 214, 0, 0, 0, 0, - 193, 0, 83, 185, 0, 0, 216, 188, 189, 225, - 215, 105, 226, 0, 223, 203, 82, 153, 0, 152, - 169, 0, 0, 81, 214, 165, 0, 208, 211, 213, - 212, 191, 186, 141, 142, 163, 146, 145, 168, 0, - 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, + 172, 171, 173, 170, 0, 0, 16, 7, 54, 50, + 27, 80, 0, 0, 78, 0, 0, 0, 0, 0, + 0, 0, 0, 28, 65, 9, 0, 55, 0, 11, + 24, 23, 0, 0, 148, 0, 139, 140, 234, 237, + 236, 235, 225, 226, 227, 229, 224, 219, 0, 0, + 0, 0, 198, 0, 83, 190, 0, 0, 221, 193, + 194, 234, 220, 105, 235, 0, 228, 208, 82, 153, + 0, 152, 169, 0, 0, 81, 219, 165, 0, 213, + 216, 218, 217, 196, 191, 141, 142, 163, 146, 145, + 168, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 144, 143, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 19, 77, 78, 0, 33, 16, 16, - 16, 16, 16, 16, 0, 16, 16, 39, 0, 46, - 49, 0, 0, 0, 0, 0, 0, 26, 25, 20, - 147, 103, 216, 0, 0, 197, 107, 84, 85, 195, - 199, 0, 0, 0, 99, 0, 0, 150, 0, 183, - 210, 0, 89, 207, 0, 166, 94, 93, 92, 97, - 0, 0, 121, 0, 134, 130, 131, 127, 128, 125, - 0, 137, 136, 135, 133, 132, 129, 138, 126, 0, - 0, 109, 0, 102, 110, 181, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 76, 0, 30, 0, 0, - 70, 0, 0, 0, 0, 0, 16, 0, 0, 66, - 58, 59, 72, 56, 57, 60, 61, 0, 0, 123, - 214, 87, 0, 200, 106, 0, 154, 0, 156, 0, - 149, 209, 88, 0, 0, 0, 114, 120, 0, 0, - 0, 118, 0, 216, 182, 0, 112, 0, 175, 0, - 176, 0, 14, 16, 29, 83, 16, 32, 0, 0, - 71, 0, 0, 73, 75, 0, 0, 218, 69, 74, - 0, 0, 55, 0, 0, 0, 104, 202, 108, 86, - 151, 100, 155, 157, 124, 0, 117, 162, 0, 113, - 119, 0, 115, 177, 178, 111, 0, 85, 47, 214, - 67, 67, 0, 0, 0, 0, 70, 0, 0, 0, - 122, 116, 101, 0, 0, 19, 0, 0, 0, 18, - 62, 62, 0, 65, 0, 0, 37, 38, 21, 91, - 90, 31, 0, 34, 65, 65, 19, 0, 0, 35, - 36, 0, 45, 67, 65, 0, 48, 40, 41, 0, - 63, 0, 65, 0, 44, 0, 52, 22, 17, 0, - 43, 0, 15, 19, 51, 0, 0, 0, 62, 42, - 53, 64 + 0, 0, 0, 0, 144, 143, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 19, 77, 78, 0, 33, + 16, 16, 16, 16, 16, 16, 0, 16, 16, 39, + 0, 46, 49, 0, 0, 0, 0, 0, 0, 26, + 25, 20, 147, 103, 221, 0, 0, 202, 107, 84, + 85, 200, 204, 0, 0, 0, 99, 0, 0, 150, + 0, 183, 215, 0, 89, 212, 0, 166, 94, 93, + 92, 97, 0, 0, 121, 0, 134, 130, 131, 127, + 128, 125, 0, 137, 136, 135, 133, 132, 129, 138, + 126, 0, 0, 0, 231, 0, 233, 0, 109, 0, + 102, 110, 181, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 76, 0, 30, 0, 0, 70, 0, 0, + 0, 0, 0, 16, 0, 0, 66, 58, 59, 72, + 56, 57, 60, 61, 0, 0, 123, 219, 87, 0, + 205, 106, 0, 154, 0, 156, 0, 149, 214, 88, + 0, 0, 0, 114, 120, 0, 0, 0, 184, 185, + 186, 188, 187, 118, 0, 221, 182, 0, 112, 0, + 176, 0, 175, 0, 14, 16, 29, 83, 16, 32, + 0, 0, 71, 0, 0, 73, 75, 0, 0, 223, + 69, 74, 0, 0, 55, 0, 0, 0, 104, 207, + 108, 86, 151, 100, 155, 157, 124, 0, 117, 162, + 0, 113, 119, 0, 115, 178, 177, 111, 0, 85, + 47, 219, 67, 67, 0, 0, 0, 0, 70, 0, + 0, 0, 122, 116, 101, 0, 0, 19, 0, 0, + 0, 18, 62, 62, 0, 65, 0, 0, 37, 38, + 21, 91, 90, 31, 0, 34, 65, 65, 19, 0, + 0, 35, 36, 0, 45, 67, 65, 0, 48, 40, + 41, 0, 63, 0, 65, 0, 44, 0, 52, 22, + 17, 0, 43, 0, 15, 19, 51, 0, 0, 0, + 62, 42, 53, 64 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 7, 8, 9, 10, 11, 12, 13, 108, 344, - 15, 410, 426, 100, 435, 219, 98, 99, 345, 289, - 405, 447, 454, 94, 429, 209, 407, 359, 349, 301, - 352, 361, 355, 286, 197, 121, 194, 138, 228, 312, - 243, 421, 95, 58, 59, 310, 273, 60, 61, 62, - 63, 64, 65, 117, 66, 147, 131, 67, 356, 68, - 69, 70, 71, 72, 73, 110 + -1, 7, 8, 9, 10, 11, 12, 13, 110, 356, + 15, 422, 438, 102, 447, 221, 100, 101, 357, 296, + 417, 459, 466, 96, 441, 211, 419, 371, 361, 308, + 364, 373, 367, 293, 199, 123, 196, 140, 230, 319, + 245, 433, 97, 58, 59, 317, 280, 60, 61, 62, + 63, 64, 65, 119, 66, 149, 133, 67, 368, 68, + 69, 70, 71, 72, 73, 74, 75, 112 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -387 +#define YYPACT_NINF -416 static const yytype_int16 yypact[] = { - 235, -387, -387, -387, -387, -387, -387, 15, -387, 2713, - 34, 1100, 1005, -387, -387, -387, 1797, 2713, 2713, 93, - 93, 93, 93, 93, -387, 93, 93, -387, -387, 58, - -27, -387, 2713, -387, -387, -387, 2713, -387, -21, -9, - -6, 1705, 1521, 93, 1613, 1887, 24, 2713, 46, 2713, - 2713, 2713, 2713, 2713, 2713, 2713, 1977, 79, 17, -387, - 10, -387, -387, -387, -387, 2732, -387, -387, -1, 19, - 56, 190, -387, 95, -387, -387, -387, -387, -387, -387, - 24, 97, -387, 21, 22, 27, 38, 8, 39, 72, - 34, -387, 129, -387, 174, 1885, 1005, -387, -387, -387, - 435, 530, -387, 6, 222, 222, -387, -387, -387, -387, - -387, -387, -387, -387, -387, 2713, 103, 116, 2713, 120, - 1782, 34, 201, 2732, 131, 2069, 1521, -387, 1782, 1428, - 17, -387, 1349, 2713, -387, 133, -387, -387, 144, 1782, - 13, 237, 126, -387, 2713, 1782, 2161, 212, -387, -387, - -387, 1782, 17, 222, 222, 222, 278, 278, 275, 132, - 2713, 2713, 2713, 2713, 2713, 2713, 2253, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, - 2713, 2713, -387, -387, 5, 2345, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, -387, 267, -387, 272, -387, -387, -387, - -387, -387, -387, -387, 195, -387, -387, -387, 34, -387, - -387, 2713, 2713, 2713, 2713, 2713, 2713, -387, -387, -387, - -387, -387, 2713, 2713, 61, -387, -387, -387, 228, -387, - -387, 295, 200, 2713, 17, 2437, 2529, -387, 297, -387, - -387, 312, 283, -387, 2713, 315, 245, 245, -387, 2732, - 187, 67, -387, 329, 1181, 266, 1598, 423, 287, 2732, - 337, 1319, 1319, 1398, 1506, 1690, 241, 222, 222, 2713, - 2713, -387, 2621, 231, -387, -387, 339, 191, 73, 199, - 82, 202, 102, 205, 625, -387, 314, -387, 36, 316, - 2713, 2713, 2713, 2713, 327, 1193, -387, 2713, 2713, -387, - 79, -387, 79, 79, 79, 79, 79, 242, -25, -387, - 2713, 323, 34, -387, -387, 420, -387, 431, -387, 434, - -387, -387, -387, 106, 2713, 343, -387, -387, 2713, 211, - 119, -387, 439, 2713, -387, 347, -387, 348, -387, 349, - -387, 350, -387, -387, -387, 201, -387, -387, 342, 269, - 79, 284, 285, 79, -387, 291, 265, -387, -387, -387, - 301, 356, 303, 2713, 302, 307, -387, -387, -387, -387, - -387, -387, -387, -387, -387, 152, -387, 2772, 400, -387, - -387, 310, -387, -387, -387, -387, 408, 228, -387, 2713, - -387, -387, 422, 422, 2713, 422, 2713, 338, 422, 422, - -387, -387, -387, 364, 80, -387, 425, 422, 422, -387, - 41, 41, 355, 129, 437, 422, -387, -387, -387, -387, - -387, -387, 720, -387, 129, 129, -387, 422, 341, -387, - -387, 422, -387, -387, 129, 7, -387, -387, -387, 815, - -387, 2713, 129, 1286, -387, 441, 409, -387, -387, 380, - -387, 382, -387, -387, -387, 422, 422, 910, 41, -387, - -387, -387 + 706, -416, -416, -416, -416, -416, -416, 33, -416, 2725, + 27, 1112, 1017, -416, -416, -416, 1809, 2725, 2725, 103, + 103, 103, 103, 103, -416, 103, 103, -416, -416, 31, + -57, -416, 2725, -416, -416, -416, 2725, -416, -53, -39, + -35, 1717, 1533, 103, 1625, 1899, 76, 2725, 9, 2725, + 2725, 2725, 2725, 2725, 2725, 2725, 1989, 173, 25, -416, + 0, -416, -416, -416, -416, 2744, -416, -416, 8, 78, + 194, 259, -416, 113, 260, 116, -416, -416, -416, -416, + -416, -416, 76, 94, -416, 37, 51, 57, 80, 14, + 100, 127, 27, -416, 133, -416, 176, 1807, 1017, -416, + -416, -416, 447, 542, -416, 64, 519, 519, -416, -416, + -416, -416, -416, -416, -416, -416, -416, 2725, 138, 139, + 2725, 109, 1702, 27, 219, 2744, 174, 2081, 1533, -416, + 1702, 1440, 25, -416, 1361, 2725, -416, 183, -416, -416, + 184, 1702, 7, 297, 150, -416, 2725, 1702, 2173, 245, + -416, -416, -416, 1702, 25, 519, 519, 519, 48, 48, + 278, 145, 2725, 2725, 2725, 2725, 2725, 2725, 2265, 2725, + 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, + 2725, 2725, 2725, 2725, -416, -416, 4, 2357, 2725, 2725, + 2725, 2725, 2725, 2725, 2725, -416, 302, -416, 308, -416, + -416, -416, -416, -416, -416, -416, 225, -416, -416, -416, + 27, -416, -416, 2725, 2725, 2725, 2725, 2725, 2725, -416, + -416, -416, -416, -416, 2725, 2725, 74, -416, -416, -416, + 261, -416, -416, 166, 233, 2725, 25, 2449, 2541, -416, + 326, -416, -416, 234, 316, -416, 2725, 332, 269, 269, + -416, 2744, 157, 79, -416, 276, 1193, 1610, 325, 218, + 432, 2744, 349, 304, 304, 1331, 1410, 1518, 274, 519, + 519, 2725, 2725, 608, 333, 343, 344, 354, -416, 2633, + 271, -416, -416, 307, 200, 84, 217, 108, 263, 121, + 272, 637, -416, 357, -416, 39, 352, 2725, 2725, 2725, + 2725, 364, 1205, -416, 2725, 2725, -416, 173, -416, 173, + 173, 173, 173, 173, 280, -50, -416, 2725, 356, 27, + -416, -416, 351, -416, 433, -416, 443, -416, -416, -416, + 131, 2725, 385, -416, -416, 2725, 282, 135, -416, -416, + -416, -416, -416, -416, 527, 2725, -416, 386, -416, 387, + -416, 388, -416, 392, -416, -416, -416, 219, -416, -416, + 393, 318, 173, 322, 339, 173, -416, 341, 315, -416, + -416, -416, 342, 430, 279, 2725, 350, 367, -416, -416, + -416, -416, -416, -416, -416, -416, -416, 154, -416, 2784, + 445, -416, -416, 368, -416, -416, -416, -416, 437, 261, + -416, 2725, -416, -416, 466, 466, 2725, 466, 2725, 400, + 466, 466, -416, -416, -416, 419, 45, -416, 474, 466, + 466, -416, 24, 24, 407, 133, 503, 466, -416, -416, + -416, -416, -416, -416, 732, -416, 133, 133, -416, 466, + 422, -416, -416, 466, -416, -416, 133, 38, -416, -416, + -416, 827, -416, 2725, 133, 1298, -416, 508, 452, -416, + -416, 434, -416, 435, -416, -416, -416, 466, 466, 922, + 24, -416, -416, -416 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -387, -387, -387, -387, -387, -387, -387, -387, -10, -387, - -30, -87, -387, -12, -387, 477, 403, -4, -387, -387, - -387, -387, -387, -290, -386, -110, -365, -387, 128, -67, - -289, 86, -387, -387, 330, 487, -387, -14, 197, 149, - -387, -387, 1, -38, -387, -387, -387, -387, -387, -387, - -387, -387, 81, -387, -387, -387, -104, -113, -387, -387, - 16, 503, 504, -387, -387, 28 + -416, -416, -416, -416, -416, -416, -416, -416, -10, -416, + -29, -123, -416, -12, -416, 521, 439, 16, -416, -416, + -416, -416, -416, -297, -415, -356, -389, -416, 123, -215, + -252, 86, -416, -416, 355, 512, -416, -14, 191, 155, + -416, -416, 1, -38, -416, -416, -416, -416, -416, -416, + -416, -416, 83, -416, -416, -416, -111, -121, -416, -416, + 18, 515, 516, -416, -416, -416, -416, 52 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -204 +#define YYTABLE_NINF -233 static const yytype_int16 yytable[] = { - 75, 92, 92, 101, 130, 358, 360, 93, 364, 365, - 57, 221, 152, 232, 269, 14, 270, 103, 220, 164, - 19, 165, 186, 19, 187, 430, 408, 445, 186, 271, - 187, 127, 144, 446, 137, 109, 109, 109, 109, 109, - 239, 109, 109, 74, 193, 346, 142, 143, 111, 112, - 113, 114, 136, 115, 116, 163, 347, 159, 132, 109, - 140, 19, 20, 21, 148, 188, 195, 189, 443, 118, - 133, 134, 461, 309, 397, 119, 367, 130, 202, 326, - 207, 124, 160, 161, 162, 336, 92, 427, 428, 74, - 92, 92, 218, 125, 338, 234, 126, 163, 104, 105, - 419, 185, 74, 204, 192, 412, 130, 272, 19, 307, - 203, 226, 166, 120, 340, 236, 106, 123, 374, 224, - 196, 107, 128, 198, 199, 139, 231, 57, 145, 200, - 151, 379, 153, 154, 155, 156, 157, 160, 161, 162, - 201, 205, 132, 160, 161, 162, 238, 241, 146, 160, - 161, 162, 449, 358, 233, 160, 161, 162, 160, 161, - 162, 246, 247, 248, 400, 250, 251, 253, 290, 291, - 292, 293, 294, 295, 206, 297, 298, 208, 160, 161, - 162, 284, 160, 161, 162, 308, 276, 277, 278, 279, - 280, 281, 282, 283, 210, 160, 161, 162, 299, 190, - 274, 191, 160, 161, 162, 222, 368, 325, 160, 161, - 162, 335, 300, 302, 303, 304, 305, 306, 223, 337, - 381, 225, 339, 57, 351, 341, 354, 227, 160, 161, - 162, 378, 229, 245, 315, -81, 317, 319, 1, 2, - 3, 4, 5, 6, 249, 323, 235, 237, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 160, 161, 162, 363, 160, 161, 162, - 329, 330, 130, 332, 92, 160, 161, 162, 160, 161, - 162, 160, 161, 162, 242, 406, 244, 160, 161, 162, - 285, 350, 302, 353, 302, 288, 362, 296, 353, 353, - 311, 314, 370, 432, 170, 171, 411, 320, 413, 322, - 357, 416, 417, 386, 437, 438, 388, 181, 182, 183, - 424, 425, 184, 162, 444, 375, 324, -204, 434, 170, - 171, 180, 450, 333, 57, 343, 181, 182, 183, 348, - 440, 184, 19, 366, 442, 211, 212, 213, 214, 369, - 170, 130, 215, 376, 216, 179, 180, 382, 383, 384, - 385, 181, 182, 183, 353, 389, 184, 394, 458, 459, - 390, 160, 161, 162, -204, -204, 396, 180, 184, 160, - 161, 162, 181, 182, 183, 391, 392, 184, 160, 161, - 162, 167, 393, 422, 420, 353, 313, 350, 168, 169, - 170, 171, 395, 398, -73, 160, 161, 162, 399, 377, - 401, 402, 92, 321, 439, 160, 161, 162, 172, 173, - 328, 174, 175, 176, 177, 178, 179, 180, 403, 92, - 327, 409, 181, 182, 183, -13, 76, 184, 418, 415, - 334, 457, 353, 441, 74, 423, 16, 92, 17, 18, - 19, 20, 21, 22, 23, 77, 431, 433, 24, 25, - 26, 27, 28, 452, 29, 30, 31, 32, 33, 34, - 78, 96, 79, 80, 35, 81, 82, 83, 84, 85, - 86, 455, 453, 456, 87, 88, 89, 90, 36, 97, - 37, 38, 39, 40, 41, 42, 160, 161, 162, 217, - 43, 44, 45, 46, 47, 48, 49, 160, 161, 162, - 160, 161, 162, 180, 50, 160, 161, 162, 181, 182, - 183, 371, 122, 184, 414, 287, 51, 52, 53, 451, - -3, 76, 372, 54, 55, 373, 404, 56, 91, 74, - 380, 16, 387, 17, 18, 19, 20, 21, 22, 23, - 77, 149, 150, 24, 25, 26, 27, 28, 0, 29, - 30, 31, 32, 33, 34, 78, 96, 79, 80, 35, - 81, 82, 83, 84, 85, 86, 0, 0, 0, 87, - 88, 89, 90, 36, 0, 37, 38, 39, 40, 41, - 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, - 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 51, 52, 53, 0, 0, 76, 0, 54, 55, - 0, 0, 56, 91, 74, 342, 16, 0, 17, 18, - 19, 20, 21, 22, 23, 77, 0, 0, 24, 25, - 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, - 78, 96, 79, 80, 35, 81, 82, 83, 84, 85, - 86, 0, 0, 0, 87, 88, 89, 90, 36, 0, - 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, - 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, - 0, 76, 0, 54, 55, 0, 0, 56, 91, 74, - 436, 16, 0, 17, 18, 19, 20, 21, 22, 23, - 77, 0, 0, 24, 25, 26, 27, 28, 0, 29, - 30, 31, 32, 33, 34, 78, 96, 79, 80, 35, - 81, 82, 83, 84, 85, 86, 0, 0, 0, 87, - 88, 89, 90, 36, 0, 37, 38, 39, 40, 41, - 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, - 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 51, 52, 53, 0, 0, 76, 0, 54, 55, - 0, 0, 56, 91, 74, 448, 16, 0, 17, 18, - 19, 20, 21, 22, 23, 77, 0, 0, 24, 25, - 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, - 78, 96, 79, 80, 35, 81, 82, 83, 84, 85, - 86, 0, 0, 0, 87, 88, 89, 90, 36, 0, - 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, - 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, - 0, 76, 0, 54, 55, 0, 0, 56, 91, 74, - 0, 16, 0, 17, 18, 19, 20, 21, 22, 23, - 77, 0, 0, 24, 25, 26, 27, 28, 0, 29, - 30, 31, 32, 33, 34, 78, 96, 79, 80, 35, - 81, 82, 83, 84, 85, 86, 0, 0, 0, 87, - 88, 89, 90, 36, 0, 37, 38, 39, 40, 41, - 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, - 48, 49, 0, 0, 460, 0, 0, 0, 0, 50, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 51, 52, 53, 0, 0, 76, 0, 54, 55, - 0, 0, 56, 91, 74, 0, 16, 0, 17, 18, - 19, 20, 21, 22, 23, 77, 0, 0, 24, 25, + 77, 94, 94, 103, 132, 370, 223, 234, 442, 166, + 57, 167, 154, 271, 420, 272, 188, 105, 189, 273, + 274, 275, 276, 277, 19, 20, 21, 95, 278, 19, + 165, 129, 146, 14, 139, 241, 76, 111, 111, 111, + 111, 111, 120, 111, 111, 121, 144, 195, 358, 126, + 372, 379, 376, 377, 76, 473, 455, 161, 457, 359, + 134, 111, 142, 127, 458, 431, 150, 128, 197, 444, + 439, 440, 113, 114, 115, 116, 222, 117, 118, 132, + 449, 450, 209, 363, 204, 366, 316, 188, 94, 189, + 456, 333, 94, 94, 135, 136, 348, 236, 462, 145, + 106, 107, 168, 314, 138, 165, 279, 206, 132, 238, + 187, 148, 76, 228, 220, 122, 205, 198, 19, 125, + 350, 226, -232, 409, 130, 194, 108, 141, 233, 57, + 147, 109, 153, 352, 155, 156, 157, 158, 159, 200, + 162, 163, 164, 386, -233, -233, 134, 391, 186, 243, + 162, 163, 164, 201, 424, 162, 163, 164, 370, 202, + 162, 163, 164, 248, 249, 250, 412, 252, 253, 255, + 240, 297, 298, 299, 300, 301, 302, 332, 304, 305, + 235, 210, 203, 291, 162, 163, 164, 315, 283, 284, + 285, 286, 287, 288, 289, 290, 212, 162, 163, 164, + 306, 461, 207, -230, 281, -230, 380, 162, 163, 164, + 227, 162, 163, 164, 307, 309, 310, 311, 312, 313, + 347, 162, 163, 164, 393, 57, 162, 163, 164, 208, + 162, 163, 164, 162, 163, 164, 322, 349, 324, 326, + 224, 225, 162, 163, 164, 229, 247, 330, 251, 162, + 163, 164, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 320, 190, 192, + 191, 193, 336, 337, 375, 231, 162, 163, 164, 132, + 344, 94, 423, 351, 425, -81, 237, 428, 429, 246, + 418, 111, 353, 162, 163, 164, 436, 437, 362, 309, + 365, 309, 390, 374, 446, 365, 365, 239, 182, 382, + 162, 163, 164, 183, 184, 185, 452, 244, 186, 369, + 454, 213, 214, 215, 216, 292, 398, 303, 217, 400, + 218, 295, 387, 318, 321, 328, 327, 172, 173, 162, + 163, 164, 329, 331, 470, 471, 57, 164, 162, 163, + 164, 339, 162, 163, 164, 162, 163, 164, 162, 163, + 164, 340, 341, 132, 182, 170, 171, 172, 173, 183, + 184, 185, 342, 345, 186, 360, 365, 334, 355, 19, + -73, 378, 381, 162, 163, 164, 170, -233, 172, 173, + 178, 179, 180, 181, 182, 388, 394, 395, 396, 183, + 184, 185, 397, 169, 186, 434, 432, 365, 346, 362, + 170, 171, 172, 173, 181, 182, 401, 406, 389, 402, + 183, 184, 185, 403, 94, 186, 451, 162, 163, 164, + 174, 175, 335, 176, 177, 178, 179, 180, 181, 182, + 404, 94, 405, 407, 183, 184, 185, -13, 78, 186, + 408, 410, 383, 469, 365, 413, 76, 415, 16, 94, + 17, 18, 19, 20, 21, 22, 23, 79, 411, 414, + 24, 25, 26, 27, 28, 421, 29, 30, 31, 32, + 33, 34, 80, 98, 81, 82, 35, 83, 84, 85, + 86, 87, 88, 430, 435, 172, 89, 90, 91, 92, + 36, 427, 37, 38, 39, 40, 41, 42, 443, 162, + 163, 164, 43, 44, 45, 46, 47, 48, 49, 162, + 163, 164, 182, 445, 453, 465, 50, 183, 184, 185, + 464, 426, 186, 99, 384, 467, 468, 219, 51, 52, + 53, 463, -3, 78, 385, 54, 55, 124, 399, 56, + 93, 76, 294, 16, 416, 17, 18, 19, 20, 21, + 22, 23, 79, 151, 152, 24, 25, 26, 27, 28, + 0, 29, 30, 31, 32, 33, 34, 80, 98, 81, + 82, 35, 83, 84, 85, 86, 87, 88, 0, 0, + 0, 89, 90, 91, 92, 36, 0, 37, 38, 39, + 40, 41, 42, 162, 163, 164, 0, 43, 44, 45, + 46, 47, 48, 49, 183, 184, 185, 76, 0, 186, + 0, 50, 0, 19, 0, 0, 338, 0, 392, 0, + 0, 108, 0, 51, 52, 53, 109, 0, 78, 0, + 54, 55, 0, 0, 56, 93, 76, 354, 16, 0, + 17, 18, 19, 20, 21, 22, 23, 79, 0, 0, + 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, + 33, 34, 80, 98, 81, 82, 35, 83, 84, 85, + 86, 87, 88, 0, 0, 0, 89, 90, 91, 92, + 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, + 0, 0, 43, 44, 45, 46, 47, 48, 49, 1, + 2, 3, 4, 5, 6, 0, 50, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, + 53, 0, 0, 78, 0, 54, 55, 0, 0, 56, + 93, 76, 448, 16, 0, 17, 18, 19, 20, 21, + 22, 23, 79, 0, 0, 24, 25, 26, 27, 28, + 0, 29, 30, 31, 32, 33, 34, 80, 98, 81, + 82, 35, 83, 84, 85, 86, 87, 88, 0, 0, + 0, 89, 90, 91, 92, 36, 0, 37, 38, 39, + 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, + 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, + 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 51, 52, 53, 0, 0, 78, 0, + 54, 55, 0, 0, 56, 93, 76, 460, 16, 0, + 17, 18, 19, 20, 21, 22, 23, 79, 0, 0, + 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, + 33, 34, 80, 98, 81, 82, 35, 83, 84, 85, + 86, 87, 88, 0, 0, 0, 89, 90, 91, 92, + 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, + 0, 0, 43, 44, 45, 46, 47, 48, 49, 0, + 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, + 53, 0, 0, 78, 0, 54, 55, 0, 0, 56, + 93, 76, 0, 16, 0, 17, 18, 19, 20, 21, + 22, 23, 79, 0, 0, 24, 25, 26, 27, 28, + 0, 29, 30, 31, 32, 33, 34, 80, 98, 81, + 82, 35, 83, 84, 85, 86, 87, 88, 0, 0, + 0, 89, 90, 91, 92, 36, 0, 37, 38, 39, + 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, + 46, 47, 48, 49, 0, 0, 472, 0, 0, 0, + 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 51, 52, 53, 0, 0, 78, 0, + 54, 55, 0, 0, 56, 93, 76, 0, 16, 0, + 17, 18, 19, 20, 21, 22, 23, 79, 0, 0, + 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, + 33, 34, 80, 98, 81, 82, 35, 83, 84, 85, + 86, 87, 88, 0, 0, 0, 89, 90, 91, 92, + 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, + 0, 0, 43, 44, 45, 46, 47, 48, 49, 0, + 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, + 53, 0, 0, 78, 0, 54, 55, 0, 0, 56, + 93, 76, 0, 16, 0, 17, 18, 19, 20, 21, + 22, 23, 79, 0, 0, 24, 25, 26, 27, 28, + 0, 29, 30, 31, 32, 33, 34, 80, 0, 81, + 82, 35, 83, 84, 85, 86, 87, 88, 0, 0, + 0, 89, 90, 91, 92, 36, 0, 37, 38, 39, + 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, + 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, + 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 51, 52, 53, 78, 0, 0, 0, + 54, 55, 0, 0, 56, 93, 16, 0, 17, 18, + 19, 20, 21, 22, 23, -68, 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, - 78, 96, 79, 80, 35, 81, 82, 83, 84, 85, - 86, 0, 0, 0, 87, 88, 89, 90, 36, 0, + 0, 0, 0, 0, 35, 0, 0, -233, 0, 0, + 0, 0, 0, 0, 170, 171, 172, 173, 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, - 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, - 0, 76, 0, 54, 55, 0, 0, 56, 91, 74, - 0, 16, 0, 17, 18, 19, 20, 21, 22, 23, - 77, 0, 0, 24, 25, 26, 27, 28, 0, 29, - 30, 31, 32, 33, 34, 78, 0, 79, 80, 35, - 81, 82, 83, 84, 85, 86, 0, 0, 0, 87, - 88, 89, 90, 36, 0, 37, 38, 39, 40, 41, - 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, - 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, + 43, 44, 45, 46, 47, 48, 49, 176, 177, 178, + 179, 180, 181, 182, 50, 0, 0, 0, 183, 184, + 185, 0, 0, 186, 0, 0, 51, 52, 53, 78, + 0, 0, 0, 54, 55, 0, 0, 56, 0, 16, + 0, 17, 18, 19, 20, 21, 22, 23, 0, 0, + 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, + 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 51, 52, 53, 76, 0, 0, 0, 54, 55, - 0, 0, 56, 91, 16, 0, 17, 18, 19, 20, - 21, 22, 23, -68, 0, 0, 24, 25, 26, 27, - 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, - 0, 0, 35, 0, 0, -204, 0, 0, 0, 0, - 0, 0, 168, 169, 170, 171, 36, 0, 37, 38, + 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, + 0, -169, 0, 43, 44, 45, 46, 47, 48, 49, + 188, 0, 189, -169, 0, 0, 0, 50, 0, 0, + 0, -169, 0, 0, 0, 0, 0, 0, 0, 51, + 52, 53, 170, 171, 172, 173, 54, 55, 0, -68, + 56, 0, 0, -169, -169, -169, -169, 0, 0, 0, + -169, 0, -169, 0, 0, -169, 0, 0, 179, 180, + 181, 182, -169, -169, -169, -169, 183, 184, 185, 0, + 0, 186, 0, 0, 0, 0, 0, -169, -169, -169, + -208, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -208, 0, 0, 0, -169, -169, -169, 0, + -208, -169, -169, 0, 0, 0, 0, 0, 0, 0, + 0, 170, 171, 172, 173, 0, 0, 0, 0, 0, + 0, 0, -208, -208, -208, -208, 0, 0, 0, -208, + 0, -208, 0, 0, -208, 0, 0, 0, 180, 181, + 182, -208, -208, -208, -208, 183, 184, 185, 0, 0, + 186, 0, 0, 0, 0, 0, -208, -208, -208, 0, + -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, + -208, 0, 0, 0, 0, -208, -208, -208, 0, 0, + -208, -208, 76, 0, 16, 0, 17, 18, 19, 20, + 21, 22, 23, 0, 0, 0, 131, 25, 26, 27, + 28, 109, 29, 30, 31, 32, 33, 34, 0, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 0, 170, + 171, 172, 173, 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, - 45, 46, 47, 48, 49, 174, 175, 176, 177, 178, - 179, 180, 50, 0, 0, 0, 181, 182, 183, 0, - 0, 184, 0, 0, 51, 52, 53, 76, 0, 0, - 0, 54, 55, 0, 0, 56, 0, 16, 0, 17, - 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, - 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, - 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, - 0, 37, 38, 39, 40, 41, 42, 0, 0, -169, - 0, 43, 44, 45, 46, 47, 48, 49, 186, 0, - 187, -169, 0, 0, 0, 50, 0, 0, 0, -169, - 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, - 168, 169, 170, 171, 54, 55, 0, -68, 56, 0, - 0, -169, -169, -169, -169, 0, 0, 0, -169, 0, - -169, 0, 0, -169, 0, 176, 177, 178, 179, 180, - -169, -169, -169, -169, 181, 182, 183, 0, 0, 184, - 0, 0, 0, 0, 0, -169, -169, -169, -203, -169, - -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, - -203, 0, 0, 0, -169, -169, -169, 0, -203, -169, - -169, 0, 0, 0, 0, 0, 0, 0, 0, 168, - 169, 170, 171, 0, 0, 0, 0, 0, 0, 0, - -203, -203, -203, -203, 0, 0, 0, -203, 0, -203, - 0, 0, -203, 0, 0, 177, 178, 179, 180, -203, - -203, -203, -203, 181, 182, 183, 0, 0, 184, 0, - 0, 0, 0, 0, -203, -203, -203, 0, -203, -203, - -203, -203, -203, -203, -203, -203, -203, -203, -203, 0, - 0, 0, 0, -203, -203, -203, 0, 0, -203, -203, - 74, 0, 16, 0, 17, 18, 19, 20, 21, 22, - 23, 0, 0, 0, 129, 25, 26, 27, 28, 107, - 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, - 35, 0, 0, 0, 0, 0, 0, 168, 169, 170, - 171, 0, 0, 0, 36, 0, 37, 38, 39, 40, - 41, 42, 0, 0, 0, 0, 43, 44, 45, 46, - 47, 48, 49, 0, 178, 179, 180, 0, 0, 0, - 50, 181, 182, 183, 0, 0, 184, 0, 0, 0, - 0, 0, 51, 52, 53, 0, 0, 0, 0, 54, - 55, 0, 74, 56, 16, 0, 17, 18, 19, 20, - 21, 22, 23, 0, 0, 0, 135, 25, 26, 27, - 28, 136, 29, 30, 31, 32, 33, 34, 0, 0, - 0, 0, 35, 0, 0, 0, 0, 0, 0, 168, - -204, 170, 171, 0, 0, 0, 36, 0, 37, 38, - 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, - 45, 46, 47, 48, 49, 0, 0, 179, 180, 0, - 0, 0, 50, 181, 182, 183, 0, 0, 184, 0, + 45, 46, 47, 48, 49, 0, 0, 181, 182, 0, + 0, 0, 50, 183, 184, 185, 0, 0, 186, 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, - 0, 54, 55, 0, 74, 56, 16, 0, 17, 18, - 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, - 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, + 0, 54, 55, 0, 76, 56, 16, 0, 17, 18, + 19, 20, 21, 22, 23, 0, 0, 0, 137, 25, + 26, 27, 28, 138, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, - 0, 168, 169, 170, 171, 0, 0, 0, 36, 0, + 0, -233, 0, 172, 173, 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, - 43, 44, 45, 46, 47, 48, 49, 0, 0, 179, - 180, 0, 0, 0, 50, 181, 182, 183, 0, 0, - 184, 0, 0, 0, 0, 0, 51, 52, 53, 0, - 0, 0, 0, 54, 55, 0, 0, 56, 16, 102, + 43, 44, 45, 46, 47, 48, 49, 0, 0, 181, + 182, 0, 0, 0, 50, 183, 184, 185, 0, 0, + 186, 0, 0, 0, 0, 0, 51, 52, 53, 0, + 0, 0, 0, 54, 55, 0, 76, 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 0, 0, 0, 0, 170, 171, 0, 0, 0, + 0, 0, 0, 0, 0, 172, 173, 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, 49, 0, - 0, 179, 180, 0, 0, 0, 50, 181, 182, 183, - 0, 0, 184, 0, 0, 0, 0, 0, 51, 52, - 53, 0, 0, 0, 0, 54, 55, 0, 16, 56, - 17, 18, 19, 20, 21, 22, 23, 141, 0, 0, - 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, - 33, 34, 0, 0, 0, 0, 35, 211, 212, 213, - 214, 0, 0, 0, 215, 0, 216, 0, 0, 0, - 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, - 0, 0, 43, 44, 45, 46, 47, 48, 49, 0, - 0, 160, 161, 162, 0, 0, 50, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, - 53, 0, 0, 0, 0, 54, 55, 0, 16, 56, - 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, - 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, - 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 181, 182, 0, 0, 0, 50, 183, 184, 185, + 0, 0, 186, 0, 0, 0, 0, 0, 51, 52, + 53, 0, 0, 0, 0, 54, 55, 0, 0, 56, + 16, 104, 17, 18, 19, 20, 21, 22, 23, 0, + 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, + 31, 32, 33, 34, 0, 0, 0, 0, 35, 213, + 214, 215, 216, 0, 0, 0, 217, 0, 218, 0, + 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, + 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, + 49, 0, 0, 162, 163, 164, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, - 0, 0, 43, 44, 45, 46, 47, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, - 53, 0, 0, 0, 0, 54, 55, 0, 158, 56, - 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, + 51, 52, 53, 0, 0, 0, 0, 54, 55, 0, + 16, 56, 17, 18, 19, 20, 21, 22, 23, 143, + 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, + 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, + 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, + 49, 0, 0, 0, 0, 0, 0, 0, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 51, 52, 53, 0, 0, 0, 0, 54, 55, 0, + 16, 56, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -670,7 +672,7 @@ static const yytype_int16 yytable[] = 49, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, 54, 55, 0, - 230, 56, 16, 0, 17, 18, 19, 20, 21, 22, + 160, 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -679,7 +681,7 @@ static const yytype_int16 yytable[] = 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, 54, - 55, 0, 240, 56, 16, 0, 17, 18, 19, 20, + 55, 0, 232, 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, @@ -688,7 +690,7 @@ static const yytype_int16 yytable[] = 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, - 0, 54, 55, 0, 252, 56, 16, 0, 17, 18, + 0, 54, 55, 0, 242, 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, @@ -697,7 +699,7 @@ static const yytype_int16 yytable[] = 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, - 0, 0, 0, 54, 55, 0, 275, 56, 16, 0, + 0, 0, 0, 54, 55, 0, 254, 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, @@ -706,7 +708,7 @@ static const yytype_int16 yytable[] = 0, 0, 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, - 53, 0, 0, 0, 0, 54, 55, 0, 316, 56, + 53, 0, 0, 0, 0, 54, 55, 0, 282, 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, @@ -716,7 +718,7 @@ static const yytype_int16 yytable[] = 49, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, 54, 55, 0, - 318, 56, 16, 0, 17, 18, 19, 20, 21, 22, + 323, 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -725,189 +727,190 @@ static const yytype_int16 yytable[] = 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, 54, - 55, 0, 331, 56, 16, 0, 17, 18, 19, 20, + 55, 0, 325, 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, - 45, 46, 47, 48, 49, 0, 167, 0, 0, 0, - 0, 0, 50, 168, 169, 170, 171, 0, 0, 0, + 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, - 0, 54, 55, 172, 173, 56, 174, 175, 176, 177, - 178, 179, 180, 0, 0, 0, 167, 181, 182, 183, - 0, 0, 184, 168, 169, 170, 171, 0, 0, 0, + 0, 54, 55, 0, 343, 56, 16, 0, 17, 18, + 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, + 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, + 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, + 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, + 43, 44, 45, 46, 47, 48, 49, 0, 169, 0, + 0, 0, 0, 0, 50, 170, 171, 172, 173, 0, + 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, + 0, 0, 0, 54, 55, 174, 175, 56, 176, 177, + 178, 179, 180, 181, 182, 0, 0, 0, 169, 183, + 184, 185, 0, 0, 186, 170, 171, 172, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 173, 0, 174, 175, 176, 177, - 178, 179, 180, 0, 0, 0, 0, 181, 182, 183, - 0, 0, 184 + 0, 0, 0, 0, 0, 0, 175, 0, 176, 177, + 178, 179, 180, 181, 182, 0, 0, 0, 0, 183, + 184, 185, 0, 0, 186 }; static const yytype_int16 yycheck[] = { - 10, 11, 12, 15, 42, 295, 295, 11, 297, 298, - 9, 115, 50, 126, 9, 0, 11, 16, 12, 9, - 15, 11, 9, 15, 11, 411, 391, 20, 9, 24, - 11, 41, 46, 26, 44, 19, 20, 21, 22, 23, - 144, 25, 26, 9, 74, 9, 45, 23, 20, 21, - 22, 23, 28, 25, 26, 80, 20, 56, 42, 43, - 44, 15, 16, 17, 48, 9, 80, 11, 433, 11, - 42, 43, 458, 12, 363, 102, 101, 115, 70, 12, - 90, 102, 76, 77, 78, 12, 96, 46, 47, 9, - 100, 101, 96, 102, 12, 133, 102, 80, 17, 18, - 20, 102, 9, 87, 9, 394, 144, 102, 15, 222, - 102, 121, 102, 32, 12, 102, 23, 36, 12, 118, - 23, 28, 41, 102, 102, 44, 125, 126, 47, 102, - 49, 12, 51, 52, 53, 54, 55, 76, 77, 78, - 102, 102, 126, 76, 77, 78, 20, 146, 102, 76, - 77, 78, 441, 443, 126, 76, 77, 78, 76, 77, - 78, 160, 161, 162, 12, 164, 165, 166, 198, 199, - 200, 201, 202, 203, 102, 205, 206, 48, 76, 77, - 78, 193, 76, 77, 78, 223, 185, 186, 187, 188, - 189, 190, 191, 192, 20, 76, 77, 78, 208, 9, - 184, 11, 76, 77, 78, 102, 310, 20, 76, 77, - 78, 20, 211, 212, 213, 214, 215, 216, 102, 20, - 333, 101, 20, 222, 291, 20, 293, 26, 76, 77, - 78, 20, 101, 101, 233, 102, 235, 236, 3, 4, - 5, 6, 7, 8, 163, 244, 102, 10, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 76, 77, 78, 296, 76, 77, 78, - 269, 270, 310, 272, 284, 76, 77, 78, 76, 77, - 78, 76, 77, 78, 72, 389, 11, 76, 77, 78, - 23, 290, 291, 292, 293, 23, 295, 102, 297, 298, - 72, 101, 312, 413, 63, 64, 393, 10, 395, 26, - 294, 398, 399, 343, 424, 425, 346, 95, 96, 97, - 407, 408, 100, 78, 434, 324, 11, 61, 415, 63, - 64, 90, 442, 102, 333, 21, 95, 96, 97, 23, - 427, 100, 15, 101, 431, 42, 43, 44, 45, 26, - 63, 389, 49, 10, 51, 89, 90, 10, 10, 10, - 10, 95, 96, 97, 363, 23, 100, 102, 455, 456, - 101, 76, 77, 78, 96, 97, 20, 90, 100, 76, - 77, 78, 95, 96, 97, 101, 101, 100, 76, 77, - 78, 54, 101, 405, 404, 394, 101, 396, 61, 62, - 63, 64, 101, 101, 101, 76, 77, 78, 101, 328, - 10, 101, 422, 101, 426, 76, 77, 78, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 20, 439, - 101, 9, 95, 96, 97, 0, 1, 100, 74, 101, - 101, 453, 441, 102, 9, 20, 11, 457, 13, 14, - 15, 16, 17, 18, 19, 20, 101, 20, 23, 24, - 25, 26, 27, 22, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 101, 73, 101, 49, 50, 51, 52, 53, 12, - 55, 56, 57, 58, 59, 60, 76, 77, 78, 96, - 65, 66, 67, 68, 69, 70, 71, 76, 77, 78, - 76, 77, 78, 90, 79, 76, 77, 78, 95, 96, - 97, 101, 35, 100, 396, 195, 91, 92, 93, 443, - 0, 1, 101, 98, 99, 101, 387, 102, 103, 9, - 101, 11, 345, 13, 14, 15, 16, 17, 18, 19, - 20, 48, 48, 23, 24, 25, 26, 27, -1, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, -1, -1, -1, 49, - 50, 51, 52, 53, -1, 55, 56, 57, 58, 59, - 60, -1, -1, -1, -1, 65, 66, 67, 68, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, 79, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 91, 92, 93, -1, -1, 1, -1, 98, 99, - -1, -1, 102, 103, 9, 10, 11, -1, 13, 14, - 15, 16, 17, 18, 19, 20, -1, -1, 23, 24, - 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, -1, -1, -1, 49, 50, 51, 52, 53, -1, - 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, - 65, 66, 67, 68, 69, 70, 71, -1, -1, -1, - -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 91, 92, 93, -1, - -1, 1, -1, 98, 99, -1, -1, 102, 103, 9, - 10, 11, -1, 13, 14, 15, 16, 17, 18, 19, - 20, -1, -1, 23, 24, 25, 26, 27, -1, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, -1, -1, -1, 49, - 50, 51, 52, 53, -1, 55, 56, 57, 58, 59, - 60, -1, -1, -1, -1, 65, 66, 67, 68, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, 79, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 91, 92, 93, -1, -1, 1, -1, 98, 99, - -1, -1, 102, 103, 9, 10, 11, -1, 13, 14, - 15, 16, 17, 18, 19, 20, -1, -1, 23, 24, - 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, -1, -1, -1, 49, 50, 51, 52, 53, -1, - 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, - 65, 66, 67, 68, 69, 70, 71, -1, -1, -1, - -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 91, 92, 93, -1, - -1, 1, -1, 98, 99, -1, -1, 102, 103, 9, - -1, 11, -1, 13, 14, 15, 16, 17, 18, 19, - 20, -1, -1, 23, 24, 25, 26, 27, -1, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, -1, -1, -1, 49, - 50, 51, 52, 53, -1, 55, 56, 57, 58, 59, - 60, -1, -1, -1, -1, 65, 66, 67, 68, 69, - 70, 71, -1, -1, 74, -1, -1, -1, -1, 79, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 91, 92, 93, -1, -1, 1, -1, 98, 99, - -1, -1, 102, 103, 9, -1, 11, -1, 13, 14, + 10, 11, 12, 15, 42, 302, 117, 128, 423, 9, + 9, 11, 50, 9, 403, 11, 9, 16, 11, 15, + 16, 17, 18, 19, 15, 16, 17, 11, 24, 15, + 80, 41, 46, 0, 44, 146, 9, 19, 20, 21, + 22, 23, 11, 25, 26, 102, 45, 76, 9, 102, + 302, 101, 304, 305, 9, 470, 445, 56, 20, 20, + 42, 43, 44, 102, 26, 20, 48, 102, 82, 425, + 46, 47, 20, 21, 22, 23, 12, 25, 26, 117, + 436, 437, 92, 298, 70, 300, 12, 9, 98, 11, + 446, 12, 102, 103, 42, 43, 12, 135, 454, 23, + 17, 18, 102, 224, 28, 80, 102, 89, 146, 102, + 102, 102, 9, 123, 98, 32, 102, 23, 15, 36, + 12, 120, 9, 375, 41, 9, 23, 44, 127, 128, + 47, 28, 49, 12, 51, 52, 53, 54, 55, 102, + 76, 77, 78, 12, 96, 97, 128, 12, 100, 148, + 76, 77, 78, 102, 406, 76, 77, 78, 455, 102, + 76, 77, 78, 162, 163, 164, 12, 166, 167, 168, + 20, 200, 201, 202, 203, 204, 205, 20, 207, 208, + 128, 48, 102, 195, 76, 77, 78, 225, 187, 188, + 189, 190, 191, 192, 193, 194, 20, 76, 77, 78, + 210, 453, 102, 9, 186, 11, 317, 76, 77, 78, + 101, 76, 77, 78, 213, 214, 215, 216, 217, 218, + 20, 76, 77, 78, 345, 224, 76, 77, 78, 102, + 76, 77, 78, 76, 77, 78, 235, 20, 237, 238, + 102, 102, 76, 77, 78, 26, 101, 246, 165, 76, + 77, 78, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 101, 9, 9, + 11, 11, 271, 272, 303, 101, 76, 77, 78, 317, + 279, 291, 405, 20, 407, 102, 102, 410, 411, 11, + 401, 273, 20, 76, 77, 78, 419, 420, 297, 298, + 299, 300, 20, 302, 427, 304, 305, 10, 90, 319, + 76, 77, 78, 95, 96, 97, 439, 72, 100, 301, + 443, 42, 43, 44, 45, 23, 355, 102, 49, 358, + 51, 23, 331, 72, 101, 101, 10, 63, 64, 76, + 77, 78, 26, 11, 467, 468, 345, 78, 76, 77, + 78, 18, 76, 77, 78, 76, 77, 78, 76, 77, + 78, 18, 18, 401, 90, 61, 62, 63, 64, 95, + 96, 97, 18, 102, 100, 23, 375, 101, 21, 15, + 101, 101, 26, 76, 77, 78, 61, 62, 63, 64, + 86, 87, 88, 89, 90, 10, 10, 10, 10, 95, + 96, 97, 10, 54, 100, 417, 416, 406, 101, 408, + 61, 62, 63, 64, 89, 90, 23, 102, 335, 101, + 95, 96, 97, 101, 434, 100, 438, 76, 77, 78, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 101, 451, 101, 101, 95, 96, 97, 0, 1, 100, + 20, 101, 101, 465, 453, 10, 9, 20, 11, 469, + 13, 14, 15, 16, 17, 18, 19, 20, 101, 101, + 23, 24, 25, 26, 27, 9, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 74, 20, 63, 49, 50, 51, 52, + 53, 101, 55, 56, 57, 58, 59, 60, 101, 76, + 77, 78, 65, 66, 67, 68, 69, 70, 71, 76, + 77, 78, 90, 20, 102, 73, 79, 95, 96, 97, + 22, 408, 100, 12, 101, 101, 101, 98, 91, 92, + 93, 455, 0, 1, 101, 98, 99, 35, 357, 102, + 103, 9, 197, 11, 399, 13, 14, 15, 16, 17, + 18, 19, 20, 48, 48, 23, 24, 25, 26, 27, + -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, + -1, 49, 50, 51, 52, 53, -1, 55, 56, 57, + 58, 59, 60, 76, 77, 78, -1, 65, 66, 67, + 68, 69, 70, 71, 95, 96, 97, 9, -1, 100, + -1, 79, -1, 15, -1, -1, 18, -1, 101, -1, + -1, 23, -1, 91, 92, 93, 28, -1, 1, -1, + 98, 99, -1, -1, 102, 103, 9, 10, 11, -1, + 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, + 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, -1, -1, -1, 49, 50, 51, 52, + 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, + -1, -1, 65, 66, 67, 68, 69, 70, 71, 3, + 4, 5, 6, 7, 8, -1, 79, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, + 93, -1, -1, 1, -1, 98, 99, -1, -1, 102, + 103, 9, 10, 11, -1, 13, 14, 15, 16, 17, + 18, 19, 20, -1, -1, 23, 24, 25, 26, 27, + -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, + -1, 49, 50, 51, 52, 53, -1, 55, 56, 57, + 58, 59, 60, -1, -1, -1, -1, 65, 66, 67, + 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, + -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 91, 92, 93, -1, -1, 1, -1, + 98, 99, -1, -1, 102, 103, 9, 10, 11, -1, + 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, + 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, -1, -1, -1, 49, 50, 51, 52, + 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, + -1, -1, 65, 66, 67, 68, 69, 70, 71, -1, + -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, + 93, -1, -1, 1, -1, 98, 99, -1, -1, 102, + 103, 9, -1, 11, -1, 13, 14, 15, 16, 17, + 18, 19, 20, -1, -1, 23, 24, 25, 26, 27, + -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, + -1, 49, 50, 51, 52, 53, -1, 55, 56, 57, + 58, 59, 60, -1, -1, -1, -1, 65, 66, 67, + 68, 69, 70, 71, -1, -1, 74, -1, -1, -1, + -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 91, 92, 93, -1, -1, 1, -1, + 98, 99, -1, -1, 102, 103, 9, -1, 11, -1, + 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, + 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, -1, -1, -1, 49, 50, 51, 52, + 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, + -1, -1, 65, 66, 67, 68, 69, 70, 71, -1, + -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, + 93, -1, -1, 1, -1, 98, 99, -1, -1, 102, + 103, 9, -1, 11, -1, 13, 14, 15, 16, 17, + 18, 19, 20, -1, -1, 23, 24, 25, 26, 27, + -1, 29, 30, 31, 32, 33, 34, 35, -1, 37, + 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, + -1, 49, 50, 51, 52, 53, -1, 55, 56, 57, + 58, 59, 60, -1, -1, -1, -1, 65, 66, 67, + 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, + -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 91, 92, 93, 1, -1, -1, -1, + 98, 99, -1, -1, 102, 103, 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, -1, -1, -1, 49, 50, 51, 52, 53, -1, + -1, -1, -1, -1, 39, -1, -1, 54, -1, -1, + -1, -1, -1, -1, 61, 62, 63, 64, 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, - 65, 66, 67, 68, 69, 70, 71, -1, -1, -1, - -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 91, 92, 93, -1, - -1, 1, -1, 98, 99, -1, -1, 102, 103, 9, - -1, 11, -1, 13, 14, 15, 16, 17, 18, 19, - 20, -1, -1, 23, 24, 25, 26, 27, -1, 29, - 30, 31, 32, 33, 34, 35, -1, 37, 38, 39, - 40, 41, 42, 43, 44, 45, -1, -1, -1, 49, - 50, 51, 52, 53, -1, 55, 56, 57, 58, 59, - 60, -1, -1, -1, -1, 65, 66, 67, 68, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, 79, + 65, 66, 67, 68, 69, 70, 71, 84, 85, 86, + 87, 88, 89, 90, 79, -1, -1, -1, 95, 96, + 97, -1, -1, 100, -1, -1, 91, 92, 93, 1, + -1, -1, -1, 98, 99, -1, -1, 102, -1, 11, + -1, 13, 14, 15, 16, 17, 18, 19, -1, -1, + -1, 23, 24, 25, 26, 27, -1, 29, 30, 31, + 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 91, 92, 93, 1, -1, -1, -1, 98, 99, - -1, -1, 102, 103, 11, -1, 13, 14, 15, 16, - 17, 18, 19, 20, -1, -1, 23, 24, 25, 26, - 27, -1, 29, 30, 31, 32, 33, 34, -1, -1, - -1, -1, 39, -1, -1, 54, -1, -1, -1, -1, - -1, -1, 61, 62, 63, 64, 53, -1, 55, 56, - 57, 58, 59, 60, -1, -1, -1, -1, 65, 66, - 67, 68, 69, 70, 71, 84, 85, 86, 87, 88, - 89, 90, 79, -1, -1, -1, 95, 96, 97, -1, - -1, 100, -1, -1, 91, 92, 93, 1, -1, -1, - -1, 98, 99, -1, -1, 102, -1, 11, -1, 13, - 14, 15, 16, 17, 18, 19, -1, -1, -1, 23, - 24, 25, 26, 27, -1, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, - -1, 55, 56, 57, 58, 59, 60, -1, -1, 0, - -1, 65, 66, 67, 68, 69, 70, 71, 9, -1, - 11, 12, -1, -1, -1, 79, -1, -1, -1, 20, - -1, -1, -1, -1, -1, -1, -1, 91, 92, 93, - 61, 62, 63, 64, 98, 99, -1, 101, 102, -1, - -1, 42, 43, 44, 45, -1, -1, -1, 49, -1, - 51, -1, -1, 54, -1, 86, 87, 88, 89, 90, - 61, 62, 63, 64, 95, 96, 97, -1, -1, 100, - -1, -1, -1, -1, -1, 76, 77, 78, 0, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 12, -1, -1, -1, 95, 96, 97, -1, 20, 100, - 101, -1, -1, -1, -1, -1, -1, -1, -1, 61, - 62, 63, 64, -1, -1, -1, -1, -1, -1, -1, - 42, 43, 44, 45, -1, -1, -1, 49, -1, 51, - -1, -1, 54, -1, -1, 87, 88, 89, 90, 61, - 62, 63, 64, 95, 96, 97, -1, -1, 100, -1, - -1, -1, -1, -1, 76, 77, 78, -1, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, -1, - -1, -1, -1, 95, 96, 97, -1, -1, 100, 101, - 9, -1, 11, -1, 13, 14, 15, 16, 17, 18, - 19, -1, -1, -1, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, - 39, -1, -1, -1, -1, -1, -1, 61, 62, 63, - 64, -1, -1, -1, 53, -1, 55, 56, 57, 58, - 59, 60, -1, -1, -1, -1, 65, 66, 67, 68, - 69, 70, 71, -1, 88, 89, 90, -1, -1, -1, - 79, 95, 96, 97, -1, -1, 100, -1, -1, -1, - -1, -1, 91, 92, 93, -1, -1, -1, -1, 98, - 99, -1, 9, 102, 11, -1, 13, 14, 15, 16, + -1, 53, -1, 55, 56, 57, 58, 59, 60, -1, + -1, 0, -1, 65, 66, 67, 68, 69, 70, 71, + 9, -1, 11, 12, -1, -1, -1, 79, -1, -1, + -1, 20, -1, -1, -1, -1, -1, -1, -1, 91, + 92, 93, 61, 62, 63, 64, 98, 99, -1, 101, + 102, -1, -1, 42, 43, 44, 45, -1, -1, -1, + 49, -1, 51, -1, -1, 54, -1, -1, 87, 88, + 89, 90, 61, 62, 63, 64, 95, 96, 97, -1, + -1, 100, -1, -1, -1, -1, -1, 76, 77, 78, + 0, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 12, -1, -1, -1, 95, 96, 97, -1, + 20, 100, 101, -1, -1, -1, -1, -1, -1, -1, + -1, 61, 62, 63, 64, -1, -1, -1, -1, -1, + -1, -1, 42, 43, 44, 45, -1, -1, -1, 49, + -1, 51, -1, -1, 54, -1, -1, -1, 88, 89, + 90, 61, 62, 63, 64, 95, 96, 97, -1, -1, + 100, -1, -1, -1, -1, -1, 76, 77, 78, -1, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, -1, -1, -1, -1, 95, 96, 97, -1, -1, + 100, 101, 9, -1, 11, -1, 13, 14, 15, 16, 17, 18, 19, -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, 61, @@ -918,14 +921,14 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, 91, 92, 93, -1, -1, -1, -1, 98, 99, -1, 9, 102, 11, -1, 13, 14, 15, 16, 17, 18, 19, -1, -1, -1, 23, 24, - 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, - -1, 61, 62, 63, 64, -1, -1, -1, 53, -1, + -1, 61, -1, 63, 64, -1, -1, -1, 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, 65, 66, 67, 68, 69, 70, 71, -1, -1, 89, 90, -1, -1, -1, 79, 95, 96, 97, -1, -1, 100, -1, -1, -1, -1, -1, 91, 92, 93, -1, - -1, -1, -1, 98, 99, -1, -1, 102, 11, 12, + -1, -1, -1, 98, 99, -1, 9, 102, 11, -1, 13, 14, 15, 16, 17, 18, 19, -1, -1, -1, 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, -1, @@ -934,26 +937,26 @@ static const yytype_int16 yycheck[] = -1, -1, 65, 66, 67, 68, 69, 70, 71, -1, -1, 89, 90, -1, -1, -1, 79, 95, 96, 97, -1, -1, 100, -1, -1, -1, -1, -1, 91, 92, - 93, -1, -1, -1, -1, 98, 99, -1, 11, 102, - 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, - 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, - 33, 34, -1, -1, -1, -1, 39, 42, 43, 44, - 45, -1, -1, -1, 49, -1, 51, -1, -1, -1, - 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, - -1, -1, 65, 66, 67, 68, 69, 70, 71, -1, - -1, 76, 77, 78, -1, -1, 79, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, - 93, -1, -1, -1, -1, 98, 99, -1, 11, 102, - 13, 14, 15, 16, 17, 18, 19, -1, -1, -1, - 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, - 33, 34, -1, -1, -1, -1, 39, -1, -1, -1, + 93, -1, -1, -1, -1, 98, 99, -1, -1, 102, + 11, 12, 13, 14, 15, 16, 17, 18, 19, -1, + -1, -1, 23, 24, 25, 26, 27, -1, 29, 30, + 31, 32, 33, 34, -1, -1, -1, -1, 39, 42, + 43, 44, 45, -1, -1, -1, 49, -1, 51, -1, + -1, -1, 53, -1, 55, 56, 57, 58, 59, 60, + -1, -1, -1, -1, 65, 66, 67, 68, 69, 70, + 71, -1, -1, 76, 77, 78, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, - -1, -1, 65, 66, 67, 68, 69, 70, 71, -1, - -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, - 93, -1, -1, -1, -1, 98, 99, -1, 101, 102, - 11, -1, 13, 14, 15, 16, 17, 18, 19, -1, + 91, 92, 93, -1, -1, -1, -1, 98, 99, -1, + 11, 102, 13, 14, 15, 16, 17, 18, 19, 20, + -1, -1, 23, 24, 25, 26, 27, -1, 29, 30, + 31, 32, 33, 34, -1, -1, -1, -1, 39, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 53, -1, 55, 56, 57, 58, 59, 60, + -1, -1, -1, -1, 65, 66, 67, 68, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, 79, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 91, 92, 93, -1, -1, -1, -1, 98, 99, -1, + 11, 102, 13, 14, 15, 16, 17, 18, 19, -1, -1, -1, 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1023,16 +1026,25 @@ static const yytype_int16 yycheck[] = -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, 65, 66, - 67, 68, 69, 70, 71, -1, 54, -1, -1, -1, - -1, -1, 79, 61, 62, 63, 64, -1, -1, -1, + 67, 68, 69, 70, 71, -1, -1, -1, -1, -1, + -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, 93, -1, -1, -1, - -1, 98, 99, 81, 82, 102, 84, 85, 86, 87, - 88, 89, 90, -1, -1, -1, 54, 95, 96, 97, - -1, -1, 100, 61, 62, 63, 64, -1, -1, -1, + -1, 98, 99, -1, 101, 102, 11, -1, 13, 14, + 15, 16, 17, 18, 19, -1, -1, -1, 23, 24, + 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, + -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, + 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, + 65, 66, 67, 68, 69, 70, 71, -1, 54, -1, + -1, -1, -1, -1, 79, 61, 62, 63, 64, -1, + -1, -1, -1, -1, -1, -1, 91, 92, 93, -1, + -1, -1, -1, 98, 99, 81, 82, 102, 84, 85, + 86, 87, 88, 89, 90, -1, -1, -1, 54, 95, + 96, 97, -1, -1, 100, 61, 62, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, 84, 85, 86, 87, - 88, 89, 90, -1, -1, -1, -1, 95, 96, 97, - -1, -1, 100 + -1, -1, -1, -1, -1, -1, 82, -1, 84, 85, + 86, 87, 88, 89, 90, -1, -1, -1, -1, 95, + 96, 97, -1, -1, 100 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1046,46 +1058,47 @@ static const yytype_uint8 yystos[] = 58, 59, 60, 65, 66, 67, 68, 69, 70, 71, 79, 91, 92, 93, 98, 99, 102, 146, 147, 148, 151, 152, 153, 154, 155, 156, 158, 161, 163, 164, - 165, 166, 167, 168, 9, 112, 1, 20, 35, 37, - 38, 40, 41, 42, 43, 44, 45, 49, 50, 51, - 52, 103, 112, 121, 127, 146, 36, 119, 120, 121, - 117, 117, 12, 146, 156, 156, 23, 28, 112, 164, - 169, 169, 169, 169, 169, 169, 169, 157, 11, 102, - 156, 139, 139, 156, 102, 102, 102, 112, 156, 23, - 147, 160, 164, 169, 169, 23, 28, 112, 141, 156, - 164, 20, 146, 23, 141, 156, 102, 159, 164, 165, - 166, 156, 147, 156, 156, 156, 156, 156, 101, 146, - 76, 77, 78, 80, 9, 11, 102, 54, 61, 62, - 63, 64, 81, 82, 84, 85, 86, 87, 88, 89, - 90, 95, 96, 97, 100, 102, 9, 11, 9, 11, - 9, 11, 9, 114, 140, 141, 23, 138, 102, 102, - 102, 102, 70, 102, 164, 102, 102, 112, 48, 129, - 20, 42, 43, 44, 45, 49, 51, 120, 121, 119, - 12, 160, 102, 102, 146, 101, 112, 26, 142, 101, - 101, 146, 161, 169, 147, 102, 102, 10, 20, 160, - 101, 146, 72, 144, 11, 101, 146, 146, 146, 156, - 146, 146, 101, 146, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 9, - 11, 24, 102, 150, 164, 101, 146, 146, 146, 146, - 146, 146, 146, 146, 117, 23, 137, 138, 23, 123, - 114, 114, 114, 114, 114, 114, 102, 114, 114, 112, - 146, 133, 146, 146, 146, 146, 146, 161, 147, 12, - 149, 72, 143, 101, 101, 146, 101, 146, 101, 146, - 10, 101, 26, 146, 11, 20, 12, 101, 83, 146, - 146, 101, 146, 102, 101, 20, 12, 20, 12, 20, - 12, 20, 10, 21, 113, 122, 9, 20, 23, 132, - 146, 133, 134, 146, 133, 136, 162, 164, 127, 131, - 134, 135, 146, 114, 134, 134, 101, 101, 160, 26, - 112, 101, 101, 101, 12, 146, 10, 156, 20, 12, - 101, 161, 10, 10, 10, 10, 114, 142, 114, 23, - 101, 101, 101, 101, 102, 101, 20, 134, 101, 101, - 12, 10, 101, 20, 143, 124, 160, 130, 130, 9, - 115, 115, 134, 115, 132, 101, 115, 115, 74, 20, - 112, 145, 117, 20, 115, 115, 116, 46, 47, 128, - 128, 101, 129, 20, 115, 118, 10, 129, 129, 117, - 115, 102, 115, 130, 129, 20, 26, 125, 10, 134, - 129, 135, 22, 73, 126, 101, 101, 117, 115, 115, - 74, 128 + 165, 166, 167, 168, 169, 170, 9, 112, 1, 20, + 35, 37, 38, 40, 41, 42, 43, 44, 45, 49, + 50, 51, 52, 103, 112, 121, 127, 146, 36, 119, + 120, 121, 117, 117, 12, 146, 156, 156, 23, 28, + 112, 164, 171, 171, 171, 171, 171, 171, 171, 157, + 11, 102, 156, 139, 139, 156, 102, 102, 102, 112, + 156, 23, 147, 160, 164, 171, 171, 23, 28, 112, + 141, 156, 164, 20, 146, 23, 141, 156, 102, 159, + 164, 165, 166, 156, 147, 156, 156, 156, 156, 156, + 101, 146, 76, 77, 78, 80, 9, 11, 102, 54, + 61, 62, 63, 64, 81, 82, 84, 85, 86, 87, + 88, 89, 90, 95, 96, 97, 100, 102, 9, 11, + 9, 11, 9, 11, 9, 114, 140, 141, 23, 138, + 102, 102, 102, 102, 70, 102, 164, 102, 102, 112, + 48, 129, 20, 42, 43, 44, 45, 49, 51, 120, + 121, 119, 12, 160, 102, 102, 146, 101, 112, 26, + 142, 101, 101, 146, 161, 171, 147, 102, 102, 10, + 20, 160, 101, 146, 72, 144, 11, 101, 146, 146, + 146, 156, 146, 146, 101, 146, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 9, 11, 15, 16, 17, 18, 19, 24, 102, + 150, 164, 101, 146, 146, 146, 146, 146, 146, 146, + 146, 117, 23, 137, 138, 23, 123, 114, 114, 114, + 114, 114, 114, 102, 114, 114, 112, 146, 133, 146, + 146, 146, 146, 146, 161, 147, 12, 149, 72, 143, + 101, 101, 146, 101, 146, 101, 146, 10, 101, 26, + 146, 11, 20, 12, 101, 83, 146, 146, 18, 18, + 18, 18, 18, 101, 146, 102, 101, 20, 12, 20, + 12, 20, 12, 20, 10, 21, 113, 122, 9, 20, + 23, 132, 146, 133, 134, 146, 133, 136, 162, 164, + 127, 131, 134, 135, 146, 114, 134, 134, 101, 101, + 160, 26, 112, 101, 101, 101, 12, 146, 10, 156, + 20, 12, 101, 161, 10, 10, 10, 10, 114, 142, + 114, 23, 101, 101, 101, 101, 102, 101, 20, 134, + 101, 101, 12, 10, 101, 20, 143, 124, 160, 130, + 130, 9, 115, 115, 134, 115, 132, 101, 115, 115, + 74, 20, 112, 145, 117, 20, 115, 115, 116, 46, + 47, 128, 128, 101, 129, 20, 115, 118, 10, 129, + 129, 117, 115, 102, 115, 130, 129, 20, 26, 125, + 10, 134, 129, 135, 22, 73, 126, 101, 101, 117, + 115, 115, 74, 128 }; typedef enum { @@ -1119,10 +1132,10 @@ static const toketypes yy_type_tab[] = toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, - toketype_opval, toketype_opval, toketype_opval + toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval }; /* Generated from: - * 5b290f371f373fb17e073f602c676e436e9d457a1d4db67d192e3cfa0eeb36d7 perly.y + * 3291ccd173f79d1ee1490bd5e07445713edcf8cbb091ae54165016bd846e2682 perly.y * 5c9d2a0262457fe9b70073fc8ad6c188f812f38ad57712b7e2f53daa01b297cc regen_perly.pl * ex: set ro: */ @@ -94,6 +94,7 @@ %type <opval> stmtseq fullstmt labfullstmt barestmt block mblock else %type <opval> expr term subscripted scalar ary hsh arylen star amper sideff +%type <opval> sliceme gelem %type <opval> listexpr nexpr texpr iexpr mexpr mnexpr miexpr %type <opval> optlistexpr optexpr indirob listop method %type <opval> formname subname proto subbody cont my_scalar formblock @@ -845,7 +846,7 @@ method : METHOD ; /* Some kind of subscripted expression */ -subscripted: star '{' expr ';' '}' /* *main::{something} */ +subscripted: gelem '{' expr ';' '}' /* *main::{something} */ /* In this and all the hash accessors, ';' is * provided by the tokeniser */ { $$ = newBINOP(OP_GELEM, 0, $1, scalar($3)); @@ -1195,7 +1196,7 @@ term : termbinop { $$ = newUNOP(OP_AV2ARYLEN, 0, ref($1, OP_AV2ARYLEN));} | subscripted { $$ = $1; } - | ary '[' expr ']' /* array slice */ + | sliceme '[' expr ']' /* array slice */ { $$ = op_prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, @@ -1219,7 +1220,7 @@ term : termbinop TOKEN_GETMAD($2,$$,'['); TOKEN_GETMAD($4,$$,']'); } - | ary '{' expr ';' '}' /* @hash{@keys} */ + | sliceme '{' expr ';' '}' /* @hash{@keys} */ { $$ = op_prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -1274,6 +1275,27 @@ term : termbinop op_append_elem(OP_LIST, $3, scalar($2))); TOKEN_GETMAD($1,$$,'o'); } + | term ARROW '$' '*' + { $$ = newSVREF($1); + TOKEN_GETMAD($3,$$,'$'); + } + | term ARROW '@' '*' + { $$ = newAVREF($1); + TOKEN_GETMAD($3,$$,'@'); + } + | term ARROW '%' '*' + { $$ = newHVREF($1); + TOKEN_GETMAD($3,$$,'%'); + } + | term ARROW '&' '*' + { $$ = newUNOP(OP_ENTERSUB, 0, + scalar(newCVREF(IVAL($3),$1))); + TOKEN_GETMAD($3,$$,'&'); + } + | term ARROW '*' '*' %prec '(' + { $$ = newGVREF(0,$1); + TOKEN_GETMAD($3,$$,'*'); + } | LOOPEX /* loop exiting command (goto, last, dump, etc) */ { $$ = newOP(IVAL($1), OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; @@ -1465,6 +1487,20 @@ star : '*' indirob } ; +sliceme : ary + | term ARROW '@' + { $$ = newAVREF($1); + TOKEN_GETMAD($3,$$,'@'); + } + ; + +gelem : star + | term ARROW '*' + { $$ = newGVREF(0,$1); + TOKEN_GETMAD($3,$$,'*'); + } + ; + /* Indirect objects */ indirob : WORD { $$ = scalar($1); } @@ -211,6 +211,7 @@ static const char* const lex_state_names[] = { * PRETERMBLOCK : beginning a non-code-defining {} block (eg, hash ref) * PREREF : *EXPR where EXPR is not a simple identifier * TERM : expression term + * POSTDEREF : postfix dereference (->$* ->@[...] etc.) * LOOPX : loop exiting command (goto, last, dump, etc) * FTST : file test operator * FUN0 : zero-argument function @@ -242,6 +243,7 @@ static const char* const lex_state_names[] = { #define PRETERMBLOCK(retval) return (PL_expect = XTERMBLOCK,PL_bufptr = s, REPORT(retval)) #define PREREF(retval) return (PL_expect = XREF,PL_bufptr = s, REPORT(retval)) #define TERM(retval) return (CLINE, PL_expect = XOPERATOR, PL_bufptr = s, REPORT(retval)) +#define POSTDEREF(f) return (PL_bufptr = s, S_postderef(aTHX_ REPORT(f),s[1])) #define LOOPX(f) return (pl_yylval.ival=f, PL_expect=XTERM, PL_bufptr=s, REPORT((int)LOOPEX)) #define FTST(f) return (pl_yylval.ival=f, PL_expect=XTERMORDORDOR, PL_bufptr=s, REPORT((int)UNIOP)) #define FUN0(f) return (pl_yylval.ival=f, PL_expect=XOPERATOR, PL_bufptr=s, REPORT((int)FUNC0)) @@ -2155,6 +2157,37 @@ S_force_next(pTHX_ I32 type) #endif } +/* + * S_postderef + * + * This subroutine handles postfix deref syntax after the arrow has already + * been emitted. @* $* etc. are emitted as two separate token right here. + * @[ @{ %[ %{ *{ are emitted also as two tokens, but this function emits + * only the first, leaving yylex to find the next. + * %[ and %{ are currently unrecognized by the parser, causing syntax + * errors. If/when they are added to the parser, no change will be neces- + * sary here. + */ + +static int +S_postderef(pTHX_ char const funny, char const next) +{ + dVAR; + assert(strchr("$@%&*", funny)); + assert(strchr("*[{", next)); + if (next == '*') { + PL_expect = XOPERATOR; + start_force(PL_curforce); + force_next(next); + PL_bufptr+=2; + } + else { + PL_expect = XOPERATOR; + PL_bufptr++; + } + return funny; +} + void Perl_yyunlex(pTHX) { @@ -4664,7 +4697,7 @@ S_tokenize_use(pTHX_ int is_use, char *s) { #ifdef DEBUGGING static const char* const exp_name[] = { "OPERATOR", "TERM", "REF", "STATE", "BLOCK", "ATTRBLOCK", - "ATTRTERM", "TERMBLOCK", "TERMORDORDOR" + "ATTRTERM", "TERMBLOCK", "POSTDEREF", "TERMORDORDOR" }; #endif @@ -5728,6 +5761,13 @@ Perl_yylex(pTHX) else if (*s == '>') { s++; s = SKIPSPACE1(s); + if (((*s == '$' || *s == '&') && s[1] == '*') + ||((*s == '@' || *s == '%') && strchr("*[{", s[1])) + ||(*s == '*' && (s[1] == '*' || s[1] == '{'))) + { + PL_expect = XPOSTDEREF; + TOKEN(ARROW); + } if (isIDFIRST_lazy_if(s,UTF)) { s = force_word(s,METHOD,FALSE,TRUE); TOKEN(ARROW); @@ -5778,6 +5818,7 @@ Perl_yylex(pTHX) } case '*': + if (PL_expect == XPOSTDEREF) POSTDEREF('*'); if (PL_expect != XOPERATOR) { s = scan_ident(s, PL_tokenbuf, sizeof PL_tokenbuf, TRUE); PL_expect = XOPERATOR; @@ -5814,6 +5855,7 @@ Perl_yylex(pTHX) PL_parser->saw_infix_sigil = 1; Mop(OP_MODULO); } + else if (PL_expect == XPOSTDEREF) POSTDEREF('%'); PL_tokenbuf[0] = '%'; s = scan_ident(s, PL_tokenbuf + 1, sizeof PL_tokenbuf - 1, FALSE); @@ -6295,6 +6337,7 @@ Perl_yylex(pTHX) } TOKEN(';'); case '&': + if (PL_expect == XPOSTDEREF) POSTDEREF('&'); s++; if (*s++ == '&') { if (!PL_lex_allbrackets && PL_lex_fakeeof >= @@ -6553,6 +6596,7 @@ Perl_yylex(pTHX) return deprecate_commaless_var_list(); } } + else if (PL_expect == XPOSTDEREF) POSTDEREF('$'); if (s[1] == '#' && (isIDFIRST_lazy_if(s+2,UTF) || strchr("{$:+-@", s[2]))) { PL_tokenbuf[0] = '@'; @@ -6686,6 +6730,7 @@ Perl_yylex(pTHX) case '@': if (PL_expect == XOPERATOR) no_op("Array", s); + else if (PL_expect == XPOSTDEREF) POSTDEREF('@'); PL_tokenbuf[0] = '@'; s = scan_ident(s, PL_tokenbuf + 1, sizeof PL_tokenbuf - 1, FALSE); pl_yylval.ival = 0; |