diff --git a/grammar/zend_language_parser.phpy b/grammar/zend_language_parser.phpy index fb74e3c..7e4897f 100644 --- a/grammar/zend_language_parser.phpy +++ b/grammar/zend_language_parser.phpy @@ -746,15 +746,54 @@ common_scalar: | name { $$ = Expr\ConstFetch[$1]; } ; -static_scalar: /* compile-time evaluated scalars */ - common_scalar { $$ = $1; } - | class_name T_PAAMAYIM_NEKUDOTAYIM class_const_name { $$ = Expr\ClassConstFetch[$1, $3]; } - | '+' static_scalar { $$ = Expr\UnaryPlus[$2]; } - | '-' static_scalar { $$ = Expr\UnaryMinus[$2]; } +/* Arrays are currently not allowed in static scalar operations */ +static_scalar: + static_scalar_value { $$ = $1; } | T_ARRAY '(' static_array_pair_list ')' { $$ = Expr\Array_[$3]; } | '[' static_array_pair_list ']' { $$ = Expr\Array_[$2]; } ; +static_scalar_value: + common_scalar { $$ = $1; } + | class_name T_PAAMAYIM_NEKUDOTAYIM class_const_name { $$ = Expr\ClassConstFetch[$1, $3]; } + | static_operation { $$ = $1; } +; + +static_operation: + static_scalar_value T_BOOLEAN_OR static_scalar_value { $$ = Expr\BinaryOp\BooleanOr [$1, $3]; } + | static_scalar_value T_BOOLEAN_AND static_scalar_value { $$ = Expr\BinaryOp\BooleanAnd[$1, $3]; } + | static_scalar_value T_LOGICAL_OR static_scalar_value { $$ = Expr\BinaryOp\LogicalOr [$1, $3]; } + | static_scalar_value T_LOGICAL_AND static_scalar_value { $$ = Expr\BinaryOp\LogicalAnd[$1, $3]; } + | static_scalar_value T_LOGICAL_XOR static_scalar_value { $$ = Expr\BinaryOp\LogicalXor[$1, $3]; } + | static_scalar_value '|' static_scalar_value { $$ = Expr\BinaryOp\BitwiseOr [$1, $3]; } + | static_scalar_value '&' static_scalar_value { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; } + | static_scalar_value '^' static_scalar_value { $$ = Expr\BinaryOp\BitwiseXor[$1, $3]; } + | static_scalar_value '.' static_scalar_value { $$ = Expr\BinaryOp\Concat [$1, $3]; } + | static_scalar_value '+' static_scalar_value { $$ = Expr\BinaryOp\Plus [$1, $3]; } + | static_scalar_value '-' static_scalar_value { $$ = Expr\BinaryOp\Minus [$1, $3]; } + | static_scalar_value '*' static_scalar_value { $$ = Expr\BinaryOp\Mul [$1, $3]; } + | static_scalar_value '/' static_scalar_value { $$ = Expr\BinaryOp\Div [$1, $3]; } + | static_scalar_value '%' static_scalar_value { $$ = Expr\BinaryOp\Mod [$1, $3]; } + | static_scalar_value T_SL static_scalar_value { $$ = Expr\BinaryOp\ShiftLeft [$1, $3]; } + | static_scalar_value T_SR static_scalar_value { $$ = Expr\BinaryOp\ShiftRight[$1, $3]; } + | static_scalar_value T_POW static_scalar_value { $$ = Expr\BinaryOp\Pow [$1, $3]; } + | '+' static_scalar_value %prec T_INC { $$ = Expr\UnaryPlus [$2]; } + | '-' static_scalar_value %prec T_INC { $$ = Expr\UnaryMinus[$2]; } + | '!' static_scalar_value { $$ = Expr\BooleanNot[$2]; } + | '~' static_scalar_value { $$ = Expr\BitwiseNot[$2]; } + | static_scalar_value T_IS_IDENTICAL static_scalar_value { $$ = Expr\BinaryOp\Identical [$1, $3]; } + | static_scalar_value T_IS_NOT_IDENTICAL static_scalar_value { $$ = Expr\BinaryOp\NotIdentical [$1, $3]; } + | static_scalar_value T_IS_EQUAL static_scalar_value { $$ = Expr\BinaryOp\Equal [$1, $3]; } + | static_scalar_value T_IS_NOT_EQUAL static_scalar_value { $$ = Expr\BinaryOp\NotEqual [$1, $3]; } + | static_scalar_value '<' static_scalar_value { $$ = Expr\BinaryOp\Smaller [$1, $3]; } + | static_scalar_value T_IS_SMALLER_OR_EQUAL static_scalar_value { $$ = Expr\BinaryOp\SmallerOrEqual[$1, $3]; } + | static_scalar_value '>' static_scalar_value { $$ = Expr\BinaryOp\Greater [$1, $3]; } + | static_scalar_value T_IS_GREATER_OR_EQUAL static_scalar_value { $$ = Expr\BinaryOp\GreaterOrEqual[$1, $3]; } + | static_scalar_value '?' static_scalar_value ':' static_scalar_value { $$ = Expr\Ternary[$1, $3, $5]; } + | static_scalar_value '?' ':' static_scalar_value { $$ = Expr\Ternary[$1, null, $4]; } + | '(' static_scalar_value ')' { $$ = $2; } +; + scalar: common_scalar { $$ = $1; } | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM class_const_name diff --git a/lib/PhpParser/Parser.php b/lib/PhpParser/Parser.php index ea509f7..4ac49c3 100644 --- a/lib/PhpParser/Parser.php +++ b/lib/PhpParser/Parser.php @@ -18,10 +18,10 @@ class Parser const TOKEN_MAP_SIZE = 389; - const YYLAST = 978; - const YY2TBLSTATE = 323; - const YYGLAST = 434; - const YYNLSTATES = 550; + const YYLAST = 1061; + const YY2TBLSTATE = 380; + const YYGLAST = 555; + const YYNLSTATES = 615; const YYUNEXPECTED = 32767; const YYDEFAULT = -32766; @@ -364,266 +364,291 @@ class Parser ); protected static $yyaction = array( - 59, 60, 333, 61, 62,-32766,-32766,-32766, 652, 63, - 64,-32766,-32766,-32766, 355, 689,-32766,-32766,-32766, 924, - 57, 677, 678,-32766, 54,-32766,-32766,-32766,-32766,-32766, - -32767,-32767,-32767,-32767,-32766, 0,-32766,-32766,-32766,-32766, - -32766, 65, 66, -120, 100, 101, 102, 67, 302, 68, - 227, 228, 69, 70, 71, 72, 73, 74, 75, 76, - 886, 32, 237, 77, 325, 334, 220, 358, 330, 861, - 862, 370, 243, 920, 262, 598, 350, 371, 46, 27, - 335, 254, 372, 716, 373, 267, 374, 129, 504, 336, - 222, 131, 130, 36, 37, 375, 341, 337, 38, 376, - 233, 332, 78, 124, 31, 283, 284, 121, 377, 378, - 39, 230, 353, 379, 380, 381, 623, 580, 624, 382, - 383, 290, 813,-32766, 384, 385, 653, 867, 868, 869, - 870, 864, 865, 244, 82, 83, 84, 193, 397, 871, - 866, 338, 231, 604, 523, 282, 47, 914, 265, 252, - 35, 256, 40, 554, 85, 86, 87, 88, 89, 90, + 59, 60, 390, 61, 62,-32766,-32766,-32766,-32766, 63, + 64, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236,-32767,-32767,-32767,-32767, 98, 99, 100, 101, 102, + 57, 65, 66, 286, 237, 742, 743, 67, 270, 68, + 279, 280, 69, 70, 71, 72, 73, 74, 75, 76, + 717, 32, 291, 77, 382, 391, 389, -120, 387, 926, + 927, 427, -116, 1017, 319, 663, 407, 428, 46, 27, + 392, 133, 429, 781, 430, 528, 431, 0, 569, 393, + -32766,-32766,-32766, 36, 37, 432, 398, 394, 38, 433, + 404, 308, 78, 590, 415, 340, 341, 194, 434, 435, + 234, 235, 236, 436, 437, 438, 686, 645, 689, 439, + 440, 31, 878, 124, 441, 442, 237, 932, 933, 934, + 935, 929, 930, 298, 82, 83, 84, 441, 454, 936, + 931, 395, 283, 669, 588, 339, 47, 412, 322, 306, + 297, 310, 40, 359, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 949, 238,-32766, 234,-32766, - -32766,-32766, 56, 554,-32766,-32766,-32766,-32766, 106, 513, - -32766,-32766,-32766, 368,-32766, 351,-32766,-32766,-32766,-32766, - -32766,-32766,-32766, 920,-32766,-32766,-32766,-32766, 927, 22, - -32766,-32766, 231, 952,-32766, 954, 953,-32766, 396, 53, - 397, 352, 273, 338, 813,-32766, 942,-32766,-32766,-32766, + 101, 102, 103, 104, 105, 131, 292,-32766, 718,-32766, + -32766,-32766, 619, 619, 213, 214, 215,-32766, 106, 324, + -32766,-32766,-32766, 983,-32766, 408,-32766,-32766,-32766,-32766, + -32766,-32766, 204, 239, 216,-32766,-32766,-32766, 892, 285, + -32766,-32766, 283, 329,-32766, 39, 282,-32766, 453, 1049, + 129, 1051, 1050, 53, 878,-32766, 754,-32766,-32766,-32766, 41, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 827, 229,-32766, 680,-32766, 357, 125, - 596, 885, 942, 554, 128,-32766,-32766,-32766, 522, 595, - -32766,-32766,-32766, 703,-32766, 122,-32766, 330,-32766, 754, - 756,-32766, 384, 262, 272,-32766,-32766,-32766, 265,-32766, - -32766,-32766, 716, 564,-32766, 554, 196,-32766, 396,-32766, - 200, 813,-32766,-32766,-32766,-32766,-32766, 886,-32766, 330, - -32766, 883, 120,-32766, 480, 262, 257,-32766,-32766,-32766, - 884, 221,-32766,-32766, 716, 622,-32766,-32766,-32766,-32766, - 396, 129, 337, 813, 128,-32766,-32766,-32766, 337, 679, - 708, 698, 201, 377, 378, 444, 360, 28, 127, 377, - 378, -356, 580, 624, 382, 383,-32766, 621, 580, 624, - 382, 383, 554, 365, 486, 195,-32766,-32766,-32766,-32766, - -32766,-32766, 873,-32766, 873,-32766, 119,-32766, 194, 133, - -32766, 714, 218, 471,-32766,-32766,-32766, 620,-32766,-32766, - -32766, 528, 347,-32766, 554, 525,-32766, 396,-32766, 535, - 813,-32766,-32766,-32766,-32766,-32766, -116,-32766, 539,-32766, - 134, 291,-32766, 495, 496, 617,-32766,-32766,-32766, 547, - 232,-32766,-32766, 677, 678,-32766, 561, 530,-32766, 396, - 702, 544, 813, 132,-32766,-32766,-32766,-32767,-32767,-32767, - -32767, 98, 99, 100, 101, 102, 724, 725, 726, 723, - 722, 721, 713, 549, 526,-32766, 545, 608, 538, 238, - 106, 554, 49, 500, 55,-32766,-32766,-32766,-32766,-32766, - -32766, 50,-32766, 51,-32766, 813,-32766, 58, 52,-32766, - 237, 270, 830,-32766,-32766,-32766, 521,-32766,-32766,-32766, - 554, 510,-32766, 554, 310,-32766, 396,-32766, 710, 571, - -32766,-32766,-32766,-32766,-32766, 947,-32766, 813,-32766, 435, - 346,-32766, 348, 569, 555,-32766,-32766,-32766, 417, 418, - -32766,-32766, 422, 434,-32766, 271, 421,-32766, 396, 512, - -32766, 505, 497,-32766,-32766,-32766, 554, 103, 104, 105, - -32766, 238, -165,-32766,-32766,-32766, 942,-32766, 349,-32766, - 813,-32766, 437, 106,-32766, 464, 489, 345,-32766,-32766, - -32766, 236,-32766,-32766,-32766,-32766,-32766,-32766, 554, -162, - -32766, 396,-32766, 217, 476,-32766,-32766,-32766,-32766,-32766, - 491,-32766, 813,-32766, 367, 255,-32766, 263, 626, 625, - -32766,-32766,-32766, 699, 260,-32766,-32766, 261, 266,-32766, - 706, -356,-32766, 396, -357,-32766, 543, 816,-32766,-32766, - -32766, 554, 253, 384, 123,-32766, 329, 199,-32766,-32766, - -32766, 42,-32766, -288,-32766, 951,-32766, 0, 427,-32766, - 872, 0, -296,-32766,-32766,-32766, -297,-32766,-32766,-32766, - 588,-32766,-32766, 554, 518,-32766, 396,-32766, 305, 292, - -32766,-32766,-32766,-32766,-32766, 259,-32766, 247,-32766, 619, - 347,-32766, 239, 811, 707,-32766,-32766,-32766, 709, 636, - -32766,-32766, 638, 640,-32766, 583, 647,-32766, 396, 646, - -32766, 655, 600, 590,-32766,-32766, 554, 585, 607, 594, - -32766, 532, 531,-32766,-32766,-32766, 45,-32766, 44,-32766, - 606,-32766, 593, 591,-32766, 589, 565, 597,-32766,-32766, - -32766, 599,-32766,-32766,-32766, 592,-32766,-32766, 554, 524, - -32766, 396,-32766, 529, 534,-32766,-32766,-32766,-32766,-32766, - 536,-32766, 541,-32766, 81, 126,-32766, 197, 198, 548, - -32766,-32766,-32766, 520, 546,-32766,-32766, 542, 33,-32766, - 915, 925,-32766, 396, 691, 645, 337, 191,-32766,-32766, - -32766, 852, 854, 337, 326, 861, 862, 377, 378,-32766, - 281, 917, 905, 863, 377, 378, 580, 624, 382, 383, - 919, 337, 921, 560, 624, 382, 383, 948, 337, 326, - -32766,-32766, 377, 378, 364, 281,-32766,-32766,-32766, 377, - 378, 580, 624, 382, 383, 264, 644, 950, 560, 624, - 382, 383, 563, 793,-32766, 34,-32766,-32766,-32766,-32766, - 328, 461, 324, 867, 868, 869, 870, 864, 865, 316, - 264, 792, 43, 268, 242, 871, 866, 562, 337, 326, - 241, 48,-32766, 337,-32766, 281,-32766, 240, 30, 377, - 378, 226, 225, 219, 377, 378, 337, 192, 560, 624, - 382, 383, 337, 580, 624, 382, 383, 377, 378, 80, - 79, 498, 465, 377, 378, 337, 580, 624, 382, 383, - 264, -117, 580, 624, 382, 383, 377, 378, 879, 899, - 681, 820, 581, 817, 0, 580, 624, 382, 383, 517, - 490, 456, 366, 361, 311, 533, 337, 554, 473, 920, - 337, 611, 293, 880, 25, 24, 23, 377, 378, -116, - 946, 377, 378, 337, 815, 851, 580, 624, 382, 383, - 580, 624, 382, 383, 377, 378, 916, 900, 511, 904, - 0, 918, 837, 580, 624, 382, 383, 836, 824, 337, - 822, 823, 821, 0, 0, 814, 0, 0, 0, 613, - 377, 378, 0, 0, 0,-32766,-32766,-32766, 0, 580, - 624, 382, 383, 0, 397, 0, 0, 338, 0, 0, - 0, 0, 342,-32766, 265,-32766,-32766,-32766 + 116, 117, 118, 272, 273,-32766, 22,-32766, 414, 454, + 409, 425, 395, 619, 128,-32766,-32766,-32766, 347, 1046, + -32766,-32766,-32766, 745,-32766, 125,-32766, 387,-32766, 819, + 821,-32766, 35, 319, 501,-32766,-32766,-32766, 410,-32766, + -32766,-32766, 781, 629,-32766, 619, 215,-32766, 453,-32766, + 54, 878,-32766,-32766,-32766,-32766,-32766, 1017,-32766, 387, + -32766, 274, 204,-32766, 216, 319, 120,-32766,-32766,-32766, + 311, 281,-32766,-32766, 781, 688,-32766,-32766, 56,-32766, + 453, 129, 394, 878, 128,-32766,-32766,-32766, 394, 744, + -32766,-32766,-32766, 434, 435, 213, 214, 215, 127, 434, + 435, -388, 645, 689, 439, 440,-32766, 687, 645, 689, + 439, 440, 619, 204, 196, 216,-32766,-32766,-32766,-32766, + -32766,-32766, 541,-32766, 119,-32766, 200,-32766, 938, 197, + -32766, 678, 322, 121,-32766,-32766,-32766, 646,-32766,-32766, + -32766, 214, 215,-32766, 619, 1024,-32766, 453,-32766, 763, + 878,-32766,-32766,-32766,-32766,-32766, 660,-32766, 204,-32766, + 216, 122,-32766,-32766,-32766,-32766,-32766,-32766,-32766, 199, + 284,-32766,-32766, 1011, 1039,-32766, 661, 192,-32766, 453, + 938,-32766, 878,-32766,-32766,-32766,-32766,-32766,-32766,-32766, + -32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, 789, + 790, 791, 788, 787, 786,-32766, 231, 232, 233, 1021, + 195, 619, 213, 214, 215,-32766,-32766,-32766,-32766,-32766, + -32766, 1039,-32766, 982,-32766, 878,-32766,-32766,-32766,-32766, + 204, 216, 216,-32766,-32766,-32766, 977,-32766,-32766,-32766, + -32766, 518,-32766, 619, 367,-32766, 453,-32766, 330, 980, + -32766,-32766,-32766,-32766,-32766, 603,-32766, 878,-32766, 682, + 578,-32766, 100, 101, 102,-32766,-32766,-32766, 292, 983, + -32766,-32766, 587, 204,-32766, 216, 593,-32766, 453, 981, + -32766, 619, 130,-32766,-32766,-32766, 619, 103, 104, 105, + -32766, 292, 610,-32766,-32766,-32766, 237,-32766, 238,-32766, + 878,-32766, 132, 106,-32766,-32766,-32766, 673,-32766,-32766, + -32766, 600,-32766,-32766,-32766,-32766,-32766,-32766, 619, 612, + -32766, 453,-32766, 422, 547,-32766,-32766,-32766,-32766,-32766, + 604,-32766, 878,-32766, 768, 591,-32766, 417, 28, 106, + -32766,-32766,-32766, 291, 773,-32766,-32766, 134, 348,-32766, + 560, 561,-32766, 453, 58,-32766, 742, 743, 653,-32766, + -32766, 619, 626, 595, 52,-32766, 767, 609,-32766,-32766, + -32766, 586,-32766, 55,-32766, 50,-32766, 778, 614,-32766, + 51, 49, 474,-32766,-32766,-32766, 565,-32766,-32766,-32766, + -32766,-32766,-32766, 619, 405,-32766, 453,-32766, 403, 491, + -32766,-32766,-32766,-32766,-32766, 475,-32766, 479,-32766, 575, + 775,-32766, 636, 620, 1044,-32766,-32766,-32766, 634, 492, + -32766,-32766, 478, 562,-32766, 895, 577,-32766, 453, 570, + -32766, -165, 494, 655,-32766,-32766, 619, 1039, 328, 327, + -32766, 533, 288,-32766,-32766,-32766, 406,-32766, -162,-32766, + 320,-32766, 269, 402,-32766, 521, 318, 690,-32766,-32766, + -32766, 550, 552,-32766,-32766, 657,-32766,-32766, 208, 209, + -32766, 453, 394, 424, 210, 323, 211, 606,-32766, 937, + 658, 876, 0, 434, 435, 691, 0, 0, 0, 317, + 0, 0, 645, 689, 439, 440, 926, 927, 619, 441, + -388,-32766, -389, 309, 928, 307, 0, 619,-32766,-32766, + 198,-32766, 919, 42,-32766,-32766,-32766, 123,-32766, -288, + -32766, 879,-32766, 301, 1012,-32766,-32766,-32766,-32766,-32766, + -32766,-32766, -296, 902,-32766,-32766, 313, 349,-32766, -297, + 583,-32766, 453, 362,-32766, 404,-32766,-32766,-32766,-32766, + 484, 386, 607, 684, 932, 933, 934, 935, 929, 930, + 373, 764, 656, 394, 630, 454, 936, 931, 395,-32766, + -32766,-32766, 771, 212, 434, 435, 772, 774, 701,-32766, + -32766, 703, 705, 645, 689, 439, 440,-32766, 648,-32766, + -32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, 394, 383, + 712, 711, 720, 665, 650, 338, 672, 659, 597, 434, + 435, 596, 685, 654, 662, 394, 383, 664, 625, 689, + 439, 440, 338, 45, 44, 671, 434, 435, 608, 611, + 613, 599, 394, 383, 594, 625, 689, 439, 440, 338, + 321, 589, 81, 434, 435, 126, 43, 627,-32766,-32766, + -32766, 601, 625, 689, 439, 440, 1022, 321, 756, 917, + 1014, 1002, 1016, 1018, 628, 394,-32766, 1045,-32766,-32766, + -32766,-32766,-32766, 421, 321, 709, 434, 435, 394, 1048, + 710, 563, 394, 1047, 857, 645, 689, 439, 440, 434, + 435, 48, 33, 434, 435, 394, 385, 530, 645, 689, + 439, 440, 645, 689, 439, 440, 434, 435, 381, 996, + 30, 325, 394, 585, 598, 645, 689, 439, 440, 576, + 296, 295, 34, 434, 435,-32766, 394, 779, 522, 294, + 394, 676, 645, 689, 439, 440, 293, 434, 435, 278, + 277, 434, 435, 619, 880, 1017, 645, 689, 439, 440, + 645, 689, 439, 440,-32766,-32766,-32766,-32766,-32766,-32766, + -32766,-32767,-32767,-32767,-32767, 271, 193, 80, 79, 394, + -117, 881,-32766, 858,-32766,-32766,-32766,-32766, 902, 941, + 434, 435, 746, 885, 882, 582, 551, 513, 423, 645, + 689, 439, 440, 418, 368, 350, 25, 24, 23, -116, + 0, 0, 0, 942, 1043, 916, 1013, 997, 1001, 1015, + 454, 901, 889, 395, 887, 888, 886, 0, 399, 0, + 322 ); protected static $yycheck = array( - 2, 3, 4, 5, 6, 8, 9, 10, 27, 11, - 12, 8, 9, 10, 73, 75, 8, 9, 10, 73, - 63, 127, 128, 26, 63, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 26, 0, 28, 29, 30, 31, - 32, 43, 44, 149, 43, 44, 45, 49, 75, 51, + 2, 3, 4, 5, 6, 29, 30, 31, 32, 11, + 12, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 63, 43, 44, 32, 62, 127, 128, 49, 125, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 119, 63, 64, 65, 66, 67, 7, 7, 99, 71, - 72, 73, 7, 75, 105, 77, 27, 79, 80, 81, - 82, 124, 84, 114, 86, 7, 88, 146, 89, 91, - 150, 63, 146, 95, 96, 97, 98, 98, 100, 101, - 7, 7, 104, 146, 7, 107, 108, 146, 109, 110, - 137, 138, 7, 115, 116, 117, 147, 118, 119, 120, - 121, 7, 12, 8, 126, 127, 145, 129, 130, 131, - 132, 133, 134, 135, 8, 9, 10, 7, 140, 141, - 142, 143, 32, 145, 146, 7, 148, 75, 150, 151, - 7, 153, 26, 73, 28, 29, 30, 31, 32, 33, + 27, 63, 64, 65, 66, 67, 7, 149, 99, 71, + 72, 73, 149, 75, 105, 77, 27, 79, 80, 81, + 82, 146, 84, 114, 86, 150, 88, 0, 89, 91, + 8, 9, 10, 95, 96, 97, 98, 98, 100, 101, + 143, 124, 104, 146, 7, 107, 108, 7, 109, 110, + 46, 47, 48, 115, 116, 117, 147, 118, 119, 120, + 121, 7, 12, 146, 126, 127, 62, 129, 130, 131, + 132, 133, 134, 135, 8, 9, 10, 126, 140, 141, + 142, 143, 32, 145, 146, 7, 148, 73, 150, 151, + 7, 153, 26, 75, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 147, 50, 67, 32, 8, - 9, 10, 63, 73, 8, 9, 10, 77, 62, 73, - 80, 81, 82, 7, 84, 146, 86, 26, 88, 28, - 29, 91, 26, 75, 28, 95, 96, 97, 149, 149, - 100, 101, 32, 73, 104, 75, 76, 107, 108, 63, - 140, 7, 150, 143, 12, 115, 78, 8, 9, 10, + 44, 45, 46, 47, 48, 63, 50, 67, 145, 8, + 9, 10, 73, 73, 8, 9, 10, 77, 62, 7, + 80, 81, 82, 119, 84, 146, 86, 26, 88, 28, + 29, 91, 26, 27, 28, 95, 96, 97, 149, 7, + 100, 101, 32, 63, 104, 137, 138, 107, 108, 73, + 146, 75, 76, 63, 12, 115, 75, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 149, 32, 26, 149, 67, 73, 7, - 145, 73, 78, 73, 144, 145, 146, 77, 73, 145, - 80, 81, 82, 147, 84, 146, 86, 99, 88, 52, - 53, 91, 126, 105, 63, 95, 96, 97, 150, 67, - 100, 101, 114, 145, 104, 73, 13, 107, 108, 77, - 13, 12, 80, 81, 82, 115, 84, 119, 86, 99, - 88, 153, 146, 91, 78, 105, 78, 95, 96, 97, - 136, 32, 100, 101, 114, 147, 104, 8, 9, 107, + 23, 24, 25, 7, 32, 26, 149, 67, 73, 140, + 7, 7, 143, 73, 144, 145, 146, 77, 7, 147, + 80, 81, 82, 149, 84, 7, 86, 99, 88, 52, + 53, 91, 7, 105, 124, 95, 96, 97, 7, 67, + 100, 101, 114, 145, 104, 73, 10, 107, 108, 77, + 63, 12, 80, 81, 82, 115, 84, 75, 86, 99, + 88, 150, 26, 91, 28, 105, 146, 95, 96, 97, + 78, 32, 100, 101, 114, 147, 104, 8, 63, 107, 108, 146, 98, 12, 144, 145, 146, 115, 98, 149, - 145, 145, 13, 109, 110, 124, 68, 69, 27, 109, + 29, 30, 31, 109, 110, 8, 9, 10, 27, 109, 110, 124, 118, 119, 120, 121, 67, 147, 118, 119, - 120, 121, 73, 68, 69, 13, 77, 145, 146, 80, - 81, 82, 136, 84, 136, 86, 13, 88, 13, 146, - 91, 147, 125, 150, 95, 96, 97, 147, 67, 100, - 101, 27, 143, 104, 73, 146, 107, 108, 77, 27, - 12, 80, 81, 82, 115, 84, 149, 86, 27, 88, - 93, 94, 91, 102, 103, 32, 95, 96, 97, 27, - 32, 100, 101, 127, 128, 104, 145, 146, 107, 108, - 145, 146, 12, 27, 145, 146, 115, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 108, 109, 110, 111, - 112, 113, 145, 146, 27, 67, 27, 27, 27, 50, - 62, 73, 63, 70, 63, 77, 145, 146, 80, 81, - 82, 63, 84, 63, 86, 12, 88, 63, 63, 91, - 64, 78, 75, 95, 96, 97, 73, 67, 100, 101, - 73, 73, 104, 73, 74, 107, 108, 77, 73, 73, - 80, 81, 82, 115, 84, 73, 86, 12, 88, 73, + 120, 121, 73, 26, 13, 28, 77, 145, 146, 80, + 81, 82, 78, 84, 13, 86, 13, 88, 136, 13, + 91, 147, 150, 146, 95, 96, 97, 147, 67, 100, + 101, 9, 10, 104, 73, 149, 107, 108, 77, 145, + 12, 80, 81, 82, 115, 84, 145, 86, 26, 88, + 28, 146, 91, 8, 9, 10, 95, 96, 97, 13, + 32, 100, 101, 75, 78, 104, 145, 63, 107, 108, + 136, 26, 12, 28, 145, 146, 115, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 108, + 109, 110, 111, 112, 113, 67, 43, 44, 45, 73, + 13, 73, 8, 9, 10, 77, 145, 146, 80, 81, + 82, 78, 84, 73, 86, 12, 88, 29, 30, 91, + 26, 28, 28, 95, 96, 97, 149, 67, 100, 101, + 29, 127, 104, 73, 74, 107, 108, 77, 150, 153, + 80, 81, 82, 115, 84, 27, 86, 12, 88, 32, + 73, 91, 43, 44, 45, 95, 96, 97, 50, 119, + 100, 101, 73, 26, 104, 28, 27, 107, 108, 136, + 67, 73, 146, 145, 146, 115, 73, 46, 47, 48, + 77, 50, 27, 80, 81, 82, 62, 84, 27, 86, + 12, 88, 27, 62, 91, 8, 9, 27, 95, 96, + 97, 27, 67, 100, 101, 145, 146, 104, 73, 27, + 107, 108, 77, 68, 69, 80, 81, 82, 115, 84, + 27, 86, 12, 88, 147, 27, 91, 68, 69, 62, + 95, 96, 97, 64, 145, 100, 101, 93, 94, 104, + 102, 103, 107, 108, 63, 67, 127, 128, 145, 146, + 115, 73, 145, 146, 63, 77, 145, 146, 80, 81, + 82, 73, 84, 63, 86, 63, 88, 145, 146, 91, + 63, 63, 73, 95, 96, 97, 70, 67, 100, 101, + 145, 146, 104, 73, 73, 107, 108, 77, 73, 73, + 80, 81, 82, 115, 84, 73, 86, 73, 88, 73, 73, 91, 73, 73, 73, 95, 96, 97, 73, 73, - 100, 101, 73, 73, 104, 78, 75, 107, 108, 75, - 67, 75, 75, 145, 146, 115, 73, 46, 47, 48, - 77, 50, 75, 80, 81, 82, 78, 84, 82, 86, - 12, 88, 90, 62, 91, 90, 92, 98, 95, 96, - 97, 90, 67, 100, 101, 145, 146, 104, 73, 90, - 107, 108, 77, 90, 92, 80, 81, 82, 115, 84, - 105, 86, 12, 88, 98, 124, 91, 106, 119, 119, - 95, 96, 97, 145, 122, 100, 101, 123, 122, 104, - 145, 124, 107, 108, 124, 67, 146, 149, 145, 146, - 115, 73, 124, 126, 125, 77, 143, 125, 80, 81, - 82, 125, 84, 139, 86, 147, 88, -1, 143, 91, - 136, -1, 139, 95, 96, 97, 139, 67, 100, 101, - 145, 146, 104, 73, 139, 107, 108, 77, 139, 139, - 80, 81, 82, 115, 84, 139, 86, 139, 88, 144, - 143, 91, 148, 151, 145, 95, 96, 97, 145, 145, - 100, 101, 145, 145, 104, 145, 145, 107, 108, 145, - 67, 145, 145, 145, 146, 115, 73, 145, 145, 145, - 77, 145, 145, 80, 81, 82, 145, 84, 145, 86, - 145, 88, 145, 145, 91, 145, 145, 145, 95, 96, - 97, 145, 67, 100, 101, 145, 146, 104, 73, 146, - 107, 108, 77, 146, 146, 80, 81, 82, 115, 84, - 146, 86, 146, 88, 146, 146, 91, 43, 44, 146, - 95, 96, 97, 85, 146, 100, 101, 146, 148, 104, - 147, 147, 107, 108, 147, 147, 98, 63, 145, 146, - 115, 147, 149, 98, 99, 71, 72, 109, 110, 75, - 105, 147, 147, 79, 109, 110, 118, 119, 120, 121, - 147, 98, 147, 118, 119, 120, 121, 147, 98, 99, - 145, 146, 109, 110, 147, 105, 8, 9, 10, 109, - 110, 118, 119, 120, 121, 140, 147, 147, 118, 119, - 120, 121, 147, 149, 26, 148, 28, 29, 30, 31, - 148, 127, 148, 129, 130, 131, 132, 133, 134, 135, - 140, 149, 148, 148, 148, 141, 142, 147, 98, 99, - 148, 148, 148, 98, 150, 105, 148, 148, 148, 109, - 110, 148, 148, 148, 109, 110, 98, 148, 118, 119, - 120, 121, 98, 118, 119, 120, 121, 109, 110, 148, - 148, 152, 149, 109, 110, 98, 118, 119, 120, 121, - 140, 149, 118, 119, 120, 121, 109, 110, 149, 152, - 149, 149, 147, 149, -1, 118, 119, 120, 121, 149, - 149, 149, 149, 149, 149, 147, 98, 73, 83, 75, - 98, 147, 149, 152, 149, 149, 149, 109, 110, 149, - 152, 109, 110, 98, 147, 152, 118, 119, 120, 121, - 118, 119, 120, 121, 109, 110, 152, 152, 87, 152, - -1, 152, 108, 118, 119, 120, 121, 152, 152, 98, - 152, 152, 152, -1, -1, 147, -1, -1, -1, 147, - 109, 110, -1, -1, -1, 8, 9, 10, -1, 118, - 119, 120, 121, -1, 140, -1, -1, 143, -1, -1, - -1, -1, 148, 26, 150, 28, 29, 30 + 100, 101, 75, 75, 104, 75, 75, 107, 108, 75, + 67, 75, 90, 145, 146, 115, 73, 78, 78, 78, + 77, 92, 90, 80, 81, 82, 82, 84, 90, 86, + 106, 88, 90, 98, 91, 90, 123, 119, 95, 96, + 97, 92, 105, 100, 101, 145, 146, 104, 43, 44, + 107, 108, 98, 98, 49, 122, 51, 146, 115, 136, + 145, 151, -1, 109, 110, 119, -1, -1, -1, 122, + -1, -1, 118, 119, 120, 121, 71, 72, 73, 126, + 124, 67, 124, 124, 79, 124, -1, 73, 145, 146, + 125, 77, 149, 125, 80, 81, 82, 125, 84, 139, + 86, 147, 88, 139, 147, 91, 8, 9, 10, 95, + 96, 97, 139, 108, 100, 101, 139, 139, 104, 139, + 139, 107, 108, 139, 26, 143, 28, 29, 30, 115, + 143, 143, 146, 144, 129, 130, 131, 132, 133, 134, + 135, 145, 145, 98, 145, 140, 141, 142, 143, 8, + 9, 10, 145, 148, 109, 110, 145, 145, 145, 145, + 146, 145, 145, 118, 119, 120, 121, 26, 145, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 98, 99, + 145, 145, 145, 145, 145, 105, 145, 145, 145, 109, + 110, 145, 147, 145, 145, 98, 99, 145, 118, 119, + 120, 121, 105, 145, 145, 145, 109, 110, 146, 146, + 146, 146, 98, 99, 146, 118, 119, 120, 121, 105, + 140, 146, 146, 109, 110, 146, 148, 147, 8, 9, + 10, 146, 118, 119, 120, 121, 147, 140, 147, 147, + 147, 147, 147, 147, 147, 98, 26, 147, 28, 29, + 30, 31, 32, 147, 140, 147, 109, 110, 98, 147, + 147, 152, 98, 147, 149, 118, 119, 120, 121, 109, + 110, 148, 148, 109, 110, 98, 148, 83, 118, 119, + 120, 121, 118, 119, 120, 121, 109, 110, 148, 152, + 148, 148, 98, 85, 147, 118, 119, 120, 121, 87, + 148, 148, 148, 109, 110, 148, 98, 147, 149, 148, + 98, 147, 118, 119, 120, 121, 148, 109, 110, 148, + 148, 109, 110, 73, 147, 75, 118, 119, 120, 121, + 118, 119, 120, 121, 8, 9, 10, 29, 30, 31, + 32, 33, 34, 35, 36, 148, 148, 148, 148, 98, + 149, 149, 26, 149, 28, 29, 30, 31, 108, 149, + 109, 110, 149, 149, 149, 149, 149, 149, 149, 118, + 119, 120, 121, 149, 149, 149, 149, 149, 149, 149, + -1, -1, -1, 152, 152, 152, 152, 152, 152, 152, + 140, 152, 152, 143, 152, 152, 152, -1, 148, -1, + 150 ); protected static $yybase = array( - 0, 655, 680, 730, 735, 748, 815, -1, 841, 230, - 798, 802, 767, 648, 754, 224, 673, 673, 673, 673, - 673, 354, 362, 371, 382, 371, 417, -2, -2, -2, - 180, 110, 212, 212, 603, 212, 485, 528, 560, 410, - 311, 279, 378, 453, 453, 453, 453, 635, 635, 453, - 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, - 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, - 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, - 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, - 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, - 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, - 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, - 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, - 453, 453, 453, 453, 453, -19, 556, 479, 486, 550, - 548, 547, 545, 448, 473, 654, 630, 625, 396, 623, - 615, 614, 604, 597, 637, 594, 709, 593, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 115, - 309, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 219, 219, 176, - 171, 684, 684, 684, 684, 684, 684, 684, 684, 684, - 684, 684, 947, 778, 8, -3, -3, -3, -3, 217, - 390, 390, 390, 390, -31, 168, 200, 146, 146, 477, - 477, 406, 579, 1, 1, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 457, 403, 688, 688, -106, - -106, -106, -106, 286, 228, 174, 148, -59, 481, 481, - 481, 116, 393, -54, -54, -54, 437, 484, 458, 175, - 80, 80, 80, 80, 239, 578, 80, 80, 80, -39, - -27, -27, 140, 223, 472, 649, 454, 598, 275, 487, - -43, 463, 463, -60, 449, 268, 285, 301, 474, 49, - -60, -19, 178, 297, 119, 399, 552, 426, 551, 138, - 114, 105, 211, 271, 156, 72, 60, 713, 672, 59, - 28, 470, 399, 399, 399, 97, 226, 156, 247, 438, - 186, 94, 445, 185, 373, 657, 436, 690, 440, 407, - 436, 447, 373, 683, 683, 683, 683, 373, 407, 690, - 690, 373, 406, 690, 143, 373, 462, 407, 466, 683, - 537, 536, 436, 441, 464, 690, 690, 690, 440, 373, - 683, 465, 505, 130, 690, 683, 465, 373, 447, 35, - 420, 389, 674, 712, 662, 435, 563, 460, 459, 694, - 693, 711, 439, 427, 695, 590, 475, 534, 429, 353, - 398, 400, 405, 508, 391, 478, 449, 507, 388, 388, - 388, 467, 506, 467, 388, 388, 388, 388, 388, 388, - 388, 388, 790, 499, 483, 451, 456, 533, 355, 475, - 452, 342, 567, 475, 734, 745, 502, 431, 504, 742, - 467, 789, 543, 242, 273, 689, 455, 430, 467, 682, - 467, 568, 467, 732, 422, 468, 475, 388, 731, 788, - 786, 785, 779, 777, 775, 774, 404, 763, 532, 744, - 65, 699, 474, 500, 416, 527, 78, 758, 467, 467, - 574, 578, 467, 526, 541, 757, 524, 741, 482, 751, - 484, 743, 467, 476, 727, 78, 421, 383, 722, 521, - 576, 664, 591, 446, 729, 675, 450, 277, 650, 419, - 520, 756, 755, 760, 518, 319, 588, 408, 397, 444, - 676, 517, 740, 469, 495, 471, 461, 583, 415, 753, - 514, 513, 509, 0, 0, 0, 0, 0, 0, 0, + 0, 757, 740, 774, 230, 807, 854, -1, 872, 705, + 614, 224, 837, 868, 824, 820, 911, 911, 911, 911, + 911, 489, 524, 543, 532, 543, 548, -2, -2, -2, + 180, 110, 279, 279, 603, 279, 453, 528, 560, 410, + 311, 212, 378, 485, 485, 485, 485, 674, 674, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 33, 712, 632, 628, 708, + 657, 575, 720, 862, 602, 864, 760, 756, 515, 755, + 754, 753, 752, 751, 766, 749, 769, 617, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 327, + 176, 309, 444, 537, 372, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 276, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 219, 219, 487, 511, 395, 443, 443, 665, 665, + 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, + 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, + 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, + 171, -18, 758, 451, 986, 438, 880, 801, 801, 801, + 801, 301, -24, 968, 968, 968, 968, 217, -6, -6, + -6, -6, 398, 398, 398, 398, 168, 200, -31, 11, + 11, 613, 613, 519, 739, 459, 459, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 596, 538, 403, + 403, 817, 817, -82, -82, -82, -82, 469, 232, 383, + 336, 74, 481, 481, 481, 427, 601, 376, 376, 376, + 600, 583, 599, 175, 64, 64, 64, 109, 109, 109, + 109, -43, 736, 109, 109, 109, 227, 78, 78, 146, + -65, 589, 768, 609, 773, 461, 640, -23, 648, 648, + 151, 595, 509, 495, 488, 620, 49, 151, 33, 390, + 472, 255, 458, 709, 586, 659, 138, 251, 271, 150, + 457, 160, 338, 97, 819, 775, 236, 112, 618, 458, + 458, 458, 114, 284, 160, -77, 656, 244, 59, 667, + 439, 467, 814, 572, 802, 566, 448, 572, 588, 467, + 783, 783, 783, 783, 467, 448, 802, 802, 467, 519, + 802, 265, 467, 607, 448, 593, 783, 706, 703, 572, + 587, 573, 802, 802, 802, 566, 467, 783, 597, 649, + 100, 802, 783, 597, 467, 588, 87, 520, 558, 738, + 860, 788, 549, 735, 578, 606, 832, 831, 859, 574, + 565, 857, 784, 647, 702, 561, 351, 552, 557, 541, + 624, 550, 621, 595, 642, 517, 517, 517, 616, 637, + 616, 517, 517, 517, 517, 517, 517, 517, 517, 904, + 644, 633, 619, 604, 701, 437, 647, 582, 341, 728, + 647, 875, 885, 570, 580, 828, 878, 616, 903, 719, + 258, 356, 821, 605, 585, 616, 813, 616, 725, 616, + 874, 581, 772, 647, 517, 873, 902, 900, 899, 897, + 896, 895, 894, 531, 893, 699, 884, 143, 858, 620, + 638, 579, 698, 182, 892, 616, 616, 745, 736, 616, + 697, 718, 889, 696, 877, 474, 474, 474, 474, 625, + 891, 583, 879, 616, 615, 797, 182, 468, 556, 861, + 695, 571, 800, 646, 594, 870, 474, 474, 474, 474, + 803, 722, 396, 776, 505, 683, 888, 887, 890, 677, + 353, 723, 576, 590, 591, 812, 676, 876, 598, 641, + 584, 592, 724, 577, 886, 673, 672, 671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -2, -2, -2, -2, -2, -2, -2, -2, -2, + 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, 0, 0, 0, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, @@ -634,35 +659,40 @@ class Parser -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 824, 824, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 126, 126, 126, 126, 126, 126, 126, 0, - 481, 481, 481, 481, 328, 328, 328, 824, 824, 824, - 824, 824, 824, 481, 481, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 328, 328, 824, 824, 80, - 80, 80, 80, 80, -27, -27, -27, 72, 0, 0, - 0, 80, -27, 128, 128, 128, -27, -27, -27, 72, - 0, 0, 0, 0, 407, 128, 0, 0, 0, 690, - 0, 0, 0, 128, 307, 307, 307, 307, 78, 156, - 0, 407, 407, 0, 441, 0, 0, 0, 690, 0, - 0, 0, 0, 0, 0, 388, 242, 504, 214, 0, - 0, 0, 0, 0, 0, 0, 0, 93, 93, 0, - 0, 404, 388, 388, 388, 0, 0, 0, 0, 214, - 0, 0, 78 + 126, 126, 126, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -18, -18, 126, -18, 126, -18, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, -18, 665, 665, 665, + 665, 665, 665, 665, 665, 665, 126, 126, -18, 665, + 126, -18, -18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 0, 126, -18, 126, + -18, 126, 126, 126, 126, 126, -18, -18, -18, -18, + -18, -18, 0, 481, 481, 481, 481, -18, -18, -18, + -18, 331, 331, 331, 910, 910, 910, 910, 910, 910, + 481, 481, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 331, 331, 64, 64, 910, 910, 109, 109, + 109, 109, 109, 78, 78, 78, 338, 0, 0, 0, + 109, 78, 222, 222, 222, 78, 78, 78, 338, 0, + 0, 0, 0, 0, 0, 0, 448, 222, 0, 0, + 0, 802, 0, 0, 0, 222, 494, 494, 494, 494, + 182, 160, 0, 448, 448, 0, 587, 0, 0, 0, + 802, 0, 0, 0, 0, 0, 0, 517, 258, 828, + 243, 0, 0, 0, 0, 0, 0, 0, 0, 202, + 202, 0, 0, 531, 517, 517, 517, 0, 0, 0, + 0, 243, 0, 0, 182 ); protected static $yydefault = array( 3,32767,32767, 1,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767, 109, 101, 115, 100, 111,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 383, 383,32767, 340,32767,32767,32767,32767, - 32767,32767,32767, 183, 183, 183,32767,32767,32767, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372,32767, + 32767,32767, 415, 415,32767, 372,32767,32767,32767,32767, + 32767,32767,32767, 183, 183, 183,32767,32767,32767, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 404,32767, 32767,32767,32767,32767, 263,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, @@ -670,95 +700,114 @@ class Parser 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 268, 388,32767, + 32767,32767,32767,32767,32767,32767,32767, 268, 420,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767, 244, 245, - 247, 248, 182, 373, 134, 269, 387, 181, 136, 210, - 212, 262, 211, 187, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 186, 241, 240, 208, - 209, 337, 337, 340,32767,32767,32767,32767,32767,32767, - 32767,32767, 213, 215, 214, 231, 232, 229, 230, 185, - 233, 234, 235, 236, 167, 167, 167,32767,32767, 382, - 382,32767,32767, 222, 223,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767, 168,32767, 298, 298, 125, - 125, 125, 125, 125,32767,32767,32767,32767, 217, 218, - 216,32767, 306,32767,32767,32767,32767,32767, 308,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767, 345, - 307,32767,32767,32767,32767,32767,32767,32767,32767, 358, - 294,32767,32767,32767, 287, 112, 114, 62, 324,32767, - 32767,32767,32767,32767, 363, 227,32767,32767,32767,32767, - 32767,32767, 395,32767, 358,32767,32767,32767,32767,32767, - 32767, 239, 219, 220, 221,32767,32767, 362, 356,32767, - 32767,32767,32767,32767, 66, 303,32767, 309,32767,32767, - 32767,32767, 66,32767,32767,32767,32767, 66,32767, 361, - 360, 66,32767, 288, 339, 66, 79,32767, 77,32767, - 98, 98,32767,32767, 81, 335, 351,32767,32767, 66, - 32767, 276, 68, 339,32767,32767, 276, 66,32767,32767, - 4, 313,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 289,32767,32767,32767, - 259, 260, 347,32767, 348,32767, 287,32767, 225, 226, - 228, 205,32767, 207, 249, 250, 251, 252, 253, 254, - 255, 257,32767,32767, 292, 295,32767,32767,32767, 6, - 18, 144,32767, 290,32767, 190,32767,32767,32767,32767, - 390,32767,32767, 184,32767,32767, 20,32767, 140,32767, - 64,32767, 380,32767,32767, 356, 291, 224,32767,32767, - 32767,32767,32767,32767,32767,32767, 357,32767,32767,32767, - 119,32767, 324,32767,32767,32767, 80,32767, 188, 135, - 32767,32767, 389,32767,32767,32767,32767,32767, 344,32767, - 32767,32767, 65,32767,32767, 82,32767,32767, 356,32767, - 32767,32767,32767,32767,32767,32767,32767, 179,32767,32767, - 32767,32767,32767, 356,32767, 123,32767,32767,32767,32767, - 32767,32767,32767, 4,32767, 161,32767,32767,32767,32767, - 32767,32767,32767, 26, 26, 3, 26, 106, 26, 147, - 3, 98, 98, 59, 147, 26, 147, 26, 26, 26, - 26, 26, 26, 26, 154, 26, 26, 26, 26, 26 + 247, 248, 182, 405, 134, 269, 419, 181, 136,32767, + 32767, 210, 325, 212, 333, 262, 211, 187, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 186, 335, 369, 369, 372,32767,32767,32767,32767,32767, + 32767, 241, 240, 334,32767, 208, 361, 360,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 209, 331, 213, 332, 215, 336, 214, 231, 232, 229, + 230, 338, 337, 354, 355, 352, 353, 185, 233, 234, + 235, 236, 356, 357, 358, 359, 167, 167, 167,32767, + 32767, 414, 414,32767,32767, 222, 223,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767, 168,32767, 345, + 346, 298, 298, 125, 125, 125, 125, 125,32767,32767, + 32767,32767, 217, 218, 216,32767, 306,32767,32767,32767, + 32767,32767, 308,32767, 340, 341, 339,32767,32767,32767, + 32767,32767,32767,32767,32767,32767, 377, 307,32767,32767, + 32767,32767,32767,32767,32767,32767, 390, 294,32767,32767, + 32767, 287, 112, 114, 62, 324,32767,32767,32767,32767, + 32767, 395, 227,32767,32767,32767,32767,32767,32767, 427, + 32767, 390,32767,32767,32767,32767,32767,32767, 239, 219, + 220, 221,32767,32767, 394, 388,32767,32767,32767,32767, + 32767, 66, 303,32767, 309,32767,32767,32767,32767, 66, + 32767,32767,32767,32767, 66,32767, 393, 392, 66,32767, + 288, 371, 66, 79,32767, 77,32767, 98, 98,32767, + 32767, 81, 367, 383,32767,32767, 66,32767, 276, 68, + 371,32767,32767, 276, 66,32767,32767, 4, 313,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767, 289,32767,32767,32767, 259, 260, 379, + 32767, 380,32767, 287,32767, 225, 226, 228, 205,32767, + 207, 249, 250, 251, 252, 253, 254, 255, 257,32767, + 32767, 292, 295,32767,32767,32767, 6, 18, 144,32767, + 290,32767, 190,32767,32767,32767,32767, 422,32767,32767, + 184,32767,32767, 20,32767, 140,32767, 64,32767, 412, + 32767,32767, 388, 291, 224,32767,32767,32767,32767,32767, + 32767,32767,32767, 389,32767,32767,32767, 119,32767, 324, + 32767,32767,32767, 80,32767, 188, 135,32767,32767, 421, + 32767,32767,32767,32767,32767, 348, 349, 350, 351, 376, + 32767,32767,32767, 65,32767,32767, 82,32767,32767, 388, + 32767,32767,32767,32767,32767,32767, 342, 343, 344, 347, + 32767,32767, 179,32767,32767,32767,32767,32767, 388,32767, + 123,32767,32767,32767,32767,32767,32767,32767, 4,32767, + 161,32767,32767,32767,32767,32767,32767,32767, 26, 26, + 3, 26, 106, 26, 147, 3, 98, 98, 59, 147, + 26, 147, 26, 26, 26, 26, 26, 26, 26, 154, + 26, 26, 26, 26, 26 ); protected static $yygoto = array( 164, 164, 138, 138, 143, 138, 139, 140, 141, 146, - 148, 173, 166, 162, 162, 162, 162, 143, 143, 163, + 148, 177, 166, 162, 162, 162, 162, 143, 143, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 158, - 159, 160, 161, 171, 137, 398, 399, 295, 400, 404, - 405, 406, 407, 408, 409, 410, 411, 741, 142, 144, - 145, 147, 169, 170, 172, 189, 190, 202, 203, 204, - 205, 206, 207, 208, 210, 211, 212, 213, 223, 224, - 248, 249, 250, 312, 313, 314, 447, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 149, 150, 151, 165, 152, 167, 153, 187, 168, 154, - 155, 156, 188, 157, 135, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 668, 668, 931, - 931, 343, 343, 343, 343, 343, 343, 602, 425, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 683, - 275, 838, 838, 676, 676, 676, 676, 676, 559, 559, - 559, 443, 414, 414, 935, 514, 574, 695, 643, 877, - 878, 893, 730, 674, 633, 633, 633, 633, 474, 501, - 628, 634, 509, 402, 402, 402, 402, 402, 402, 941, - 941, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 944, 941, 413, 413, 5, 296, 16, 1, 6, - 558, 558, 558, 2, 944, 944, 7, 494, 17, 18, - 8, 19, 9, 10, 11, 303, 20, 12, 13, 14, - 15, 318, 503, 442, 442, 468, 438, 903, 891, 440, - 440, 401, 403, 430, 445, 469, 472, 482, 488, 557, - 557, 557, 875, 875, 875, 875, 875, 875, 875, 875, - 875, 875, 875, 477, 481, 519, 485, 278, 322, 654, - 639, 637, 635, 637, 527, 416, 663, 658, 449, 450, - 451, 452, 453, 454, 455, 457, 484, 258, 502, 297, - 436, 246, 419, 428, 855, 860, 215, 439, 216, 910, - 910, 928, 796, 26, 21, 289, 308, 834, 835, 419, - 419, 362, 739, 720, 323, 926, 926, 926, 458, 507, - 415, 415, 448, 832, 902, 832, 424, 909, 787, 29, - 276, 277, 833, 566, 499, 304, 304, 304, 672, 424, - 424, 911, 911, 850, 849, 687, 876, 304, 537, 319, - 829, 572, 642, 888, 692, 317, 728, 419, 506, 0, - 0, 0, 0, 0, 0, 0, 423, 0, 0, 0, - 0, 0, 0, 0, 0, 446, 0, 0, 0, 0, + 159, 160, 161, 175, 137, 455, 456, 352, 457, 461, + 462, 463, 464, 465, 466, 467, 468, 806, 142, 144, + 145, 147, 171, 173, 176, 205, 240, 242, 244, 246, + 247, 248, 249, 250, 258, 259, 260, 261, 275, 276, + 302, 303, 304, 369, 370, 371, 504, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 149, 150, 151, 165, 152, 167, 153, 201, 168, 154, + 155, 156, 202, 157, 135, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 623, 623, 623, 519, 624, 624, + 624, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 459, 459, 459, 459, 459, 459, 531, + 566, 459, 459, 459, 459, 459, 459, 459, 459, 459, + 459, 733, 733, 1028, 1028, 470, 470, 534, 542, 584, + 785, 380, 400, 400, 400, 400, 400, 400, 667, 360, + 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, + 748, 267, 482, 268, 903, 903, 741, 741, 741, 741, + 741, 375, 568, 499, 499, 525, 495, 500, 579, 497, + 497, 458, 460, 487, 502, 526, 529, 543, 549, 1, + 698, 698, 698, 698, 2, 1032, 693, 699, 574, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 546, 335, + 379, 520, 353, 332, 493, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 312, 472, 472, 943, + 300, 1008, 1008, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 555, 170, 988, 471, 471, + 535, 536, 537, 538, 169, 174, 191, 203, 241, 243, + 245, 251, 252, 253, 254, 255, 256, 262, 263, 264, + 265, 289, 290, 314, 315, 316, 556, 557, 558, 559, + 206, 207, 5, 567, 16, 1000, 6, 1025, 622, 622, + 622, 915, 914, 7, 365, 17, 18, 8, 19, 9, + 10, 11, 852, 20, 12, 13, 14, 15, 719, 704, + 702, 700, 702, 592, 473, 728, 723, 506, 507, 508, + 509, 510, 511, 512, 514, 545, 920, 476, 737, 1038, + 1038, 1007, 1007, 631, 861, 26, 21, 346, 804, 752, + 944, 1041, 1038, 925, 476, 476, 602, 1023, 1023, 1023, + 515, 333, 334, 376, 637, 899, 900, 1041, 1041, 354, + 894, 29, 1006, 485, 757, 707, 564, 496, 361, 361, + 361, 897, 999, 897, 639, 760, 708, 990, 795, 739, + 898, 419, 505, 361, 985, 571, 481, 0, 793, 572, + 0, 374, 476, 0, 0, 0, 0, 0, 0, 481, + 481, 480, 0, 0, 0, 0, 0, 0, 0, 0, + 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 429 + 0, 0, 0, 0, 486 ); protected static $yygcheck = array( @@ -773,69 +822,81 @@ class Parser 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 94, 94, 94, 94, - 94, 94, 94, 94, 94, 94, 94, 55, 55, 55, - 55, 39, 39, 39, 39, 39, 39, 32, 77, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 61, - 50, 39, 39, 39, 39, 39, 39, 39, 8, 8, - 8, 85, 94, 94, 114, 39, 13, 13, 13, 13, - 13, 13, 13, 13, 39, 39, 39, 39, 22, 22, - 39, 39, 39, 91, 91, 91, 91, 91, 91, 115, - 115, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 115, 115, 91, 91, 14, 29, 14, 2, 14, - 7, 7, 7, 2, 115, 115, 14, 103, 14, 14, - 14, 14, 14, 14, 14, 5, 14, 14, 14, 14, - 14, 33, 33, 33, 33, 33, 33, 59, 106, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 6, - 6, 6, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 42, 42, 42, 48, 48, 48, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 100, 31, 40, - 5, 100, 4, 40, 16, 59, 46, 40, 46, 93, - 93, 112, 16, 16, 16, 16, 30, 59, 59, 4, - 4, 40, 77, 74, 74, 93, 93, 93, 16, 40, - 97, 97, 26, 59, 59, 59, 26, 93, 78, 16, - 50, 50, 59, 11, 16, 98, 98, 98, 57, 26, - 26, 92, 92, 99, 99, 62, 102, 98, 52, 10, - 89, 12, 49, 105, 63, 98, 76, 4, 84, -1, - -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, - -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, + 39, 39, 39, 39, 7, 7, 7, 39, 8, 8, + 8, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 91, 91, 91, 91, 91, 91, 22, + 22, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 55, 55, 55, 55, 91, 91, 42, 42, 42, + 74, 74, 39, 39, 39, 39, 39, 39, 32, 5, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 61, 46, 77, 46, 39, 39, 39, 39, 39, 39, + 39, 33, 33, 33, 33, 33, 33, 85, 39, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 2, + 39, 39, 39, 39, 2, 116, 39, 39, 39, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 48, 48, + 48, 94, 29, 50, 5, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 100, 97, 97, 101, + 100, 92, 92, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 103, 102, 108, 94, 94, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 14, 31, 14, 59, 14, 114, 6, 6, + 6, 99, 99, 14, 30, 14, 14, 14, 14, 14, + 14, 14, 78, 14, 14, 14, 14, 14, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 16, 4, 57, 117, + 117, 93, 93, 11, 16, 16, 16, 16, 77, 62, + 104, 117, 117, 59, 4, 4, 52, 93, 93, 93, + 16, 50, 50, 10, 12, 59, 59, 117, 117, 40, + 89, 16, 93, 40, 63, 49, 16, 40, 98, 98, + 98, 59, 59, 59, 13, 13, 13, 13, 13, 13, + 59, 40, 26, 98, 107, 84, 26, -1, 76, 40, + -1, 98, 4, -1, -1, -1, -1, -1, -1, 26, + 26, 4, -1, -1, -1, -1, -1, -1, -1, -1, + 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 77 + -1, -1, -1, -1, 77 ); protected static $yygbase = array( - 0, 0, -317, 0, 28, -39, 248, 209, 157, 0, - 19, 51, -1, -28, -319, 0, -31, 0, 0, 0, - 0, 0, 134, 0, 0, -30, 292, 0, 0, 160, - 80, 70, 112, 14, 0, 0, 0, 0, 0, -86, - -48, 0, 23, 0, 0, 0, -238, 0, 5, -6, - -201, 0, 57, 0, 0, -90, 0, 95, 0, -32, - 0, 118, 55, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 78, 0, -12, 91, 90, 0, - 0, 0, 0, 0, -8, 128, 228, 0, 0, 18, - 0, -34, 104, 62, -75, 0, 0, 83, 82, 89, - 35, 61, 54, 25, 0, -10, 45, 0, 0, 0, - 0, 0, 81, 0, 129, -56, 0 + 0, 0, -361, 0, 96, -132, 377, 113, 117, 0, + 56, 84, 35, 269, -217, 0, 34, 0, 0, 0, + 0, 0, 115, 0, 0, -30, 442, 0, 0, 206, + 106, 103, 163, -58, 0, 0, 0, 0, 0, -87, + 55, 0, -117, 0, 0, 0, -398, 0, -70, 40, + -155, 0, 88, 0, 0, -98, 0, 121, 0, 49, + 0, 169, 82, 44, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -107, 0, 53, 155, 100, 0, + 0, 0, 0, 0, 52, 184, 357, 0, 0, 61, + 0, -116, 10, 130, 47, 0, 0, 6, 151, 73, + -10, 95, 132, 142, 81, 0, 0, 54, 143, 0, + 0, 0, 0, 0, 105, 0, 200, 120, 0 ); protected static $yygdefault = array( - -32768, 369, 3, 552, 386, 420, 577, 578, 579, 299, - 298, 567, 573, 478, 4, 575, 788, 285, 582, 286, - 487, 584, 432, 586, 587, 136, 387, 300, 301, 433, - 307, 475, 601, 209, 306, 603, 287, 605, 610, 288, - 508, 493, 459, 388, 354, 470, 214, 441, 466, 641, - 274, 649, 540, 657, 660, 389, 460, 671, 359, 831, - 315, 682, 688, 693, 696, 331, 320, 483, 700, 701, - 251, 705, 515, 516, 719, 235, 727, 740, 327, 806, - 808, 390, 391, 426, 492, 412, 431, 825, 321, 828, - 392, 393, 339, 340, 846, 843, 280, 896, 279, 356, - 245, 881, 882, 479, 363, 934, 892, 269, 394, 395, - 294, 309, 929, 344, 936, 943, 467 + -32768, 426, 3, 617, 443, 477, 642, 643, 644, 356, + 355, 632, 638, 539, 4, 640, 853, 342, 647, 343, + 548, 649, 489, 651, 652, 136, 444, 357, 358, 490, + 364, 532, 666, 257, 363, 668, 344, 670, 675, 345, + 573, 554, 516, 445, 411, 527, 266, 498, 523, 706, + 331, 714, 605, 722, 725, 446, 517, 736, 416, 896, + 372, 747, 753, 758, 761, 388, 377, 544, 765, 766, + 305, 770, 580, 581, 784, 287, 792, 805, 384, 871, + 873, 447, 448, 483, 553, 469, 488, 890, 378, 893, + 449, 450, 396, 397, 911, 908, 337, 993, 336, 413, + 299, 978, 172, 540, 979, 945, 420, 1031, 989, 326, + 451, 452, 351, 366, 1026, 401, 1033, 1040, 524 ); protected static $yylhs = array( @@ -871,15 +932,18 @@ class Parser 39, 39, 78, 78, 95, 95, 91, 91, 96, 96, 96, 96, 96, 79, 79, 79, 83, 83, 83, 87, 87, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 13, 13, 13, 13, 13, - 13, 80, 80, 80, 80, 102, 102, 103, 103, 105, - 105, 104, 104, 106, 106, 33, 33, 33, 33, 108, - 108, 107, 107, 107, 107, 107, 109, 109, 93, 93, - 97, 97, 92, 92, 110, 110, 110, 110, 98, 98, - 98, 98, 86, 86, 99, 99, 99, 55, 111, 111, - 112, 112, 112, 85, 85, 113, 113, 114, 114, 114, - 114, 100, 100, 100, 100, 115, 115, 115, 115, 115, - 115, 115, 116, 116, 116 + 101, 101, 101, 101, 101, 13, 13, 13, 102, 102, + 102, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 80, 80, 80, 80, 104, 104, 103, + 103, 107, 107, 106, 106, 108, 108, 33, 33, 33, + 33, 110, 110, 109, 109, 109, 109, 109, 111, 111, + 93, 93, 97, 97, 92, 92, 112, 112, 112, 112, + 98, 98, 98, 98, 86, 86, 99, 99, 99, 55, + 113, 113, 114, 114, 114, 85, 85, 115, 115, 116, + 116, 116, 116, 100, 100, 100, 100, 117, 117, 117, + 117, 117, 117, 117, 118, 118, 118 ); protected static $yylen = array( @@ -915,15 +979,18 @@ class Parser 2, 3, 1, 1, 1, 1, 1, 1, 0, 3, 3, 4, 4, 0, 2, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 2, 1, 1, 3, 2, 2, 4, - 3, 1, 3, 3, 3, 1, 1, 0, 2, 0, - 1, 3, 1, 3, 1, 1, 1, 1, 1, 6, - 4, 3, 4, 2, 4, 4, 1, 3, 1, 2, - 1, 1, 4, 1, 3, 6, 4, 4, 4, 4, - 1, 4, 0, 1, 1, 3, 1, 4, 3, 1, - 1, 1, 0, 0, 2, 3, 1, 3, 1, 4, - 2, 2, 2, 1, 2, 1, 4, 3, 3, 3, - 6, 3, 1, 1, 1 + 1, 1, 3, 2, 1, 1, 4, 3, 1, 3, + 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, + 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, + 5, 4, 3, 1, 3, 3, 3, 1, 1, 0, + 2, 0, 1, 3, 1, 3, 1, 1, 1, 1, + 1, 6, 4, 3, 4, 2, 4, 4, 1, 3, + 1, 2, 1, 1, 4, 1, 3, 6, 4, 4, + 4, 4, 1, 4, 0, 1, 1, 3, 1, 4, + 3, 1, 1, 1, 0, 0, 2, 3, 1, 3, + 1, 4, 2, 2, 2, 1, 2, 1, 4, 3, + 3, 3, 6, 3, 1, 1, 1 ); protected $yyval; @@ -2434,151 +2501,151 @@ class Parser } protected function yyn326($attributes) { - $this->yyval = new Node\Expr\ClassConstFetch($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); - } - - protected function yyn327($attributes) { - $this->yyval = new Node\Expr\UnaryPlus($this->yyastk[$this->stackPos-(2-2)], $attributes); - } - - protected function yyn328($attributes) { - $this->yyval = new Node\Expr\UnaryMinus($this->yyastk[$this->stackPos-(2-2)], $attributes); - } - - protected function yyn329($attributes) { $this->yyval = new Node\Expr\Array_($this->yyastk[$this->stackPos-(4-3)], $attributes); } - protected function yyn330($attributes) { + protected function yyn327($attributes) { $this->yyval = new Node\Expr\Array_($this->yyastk[$this->stackPos-(3-2)], $attributes); } - protected function yyn331($attributes) { + protected function yyn328($attributes) { $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; } - protected function yyn332($attributes) { + protected function yyn329($attributes) { $this->yyval = new Node\Expr\ClassConstFetch($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } + protected function yyn330($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + } + + protected function yyn331($attributes) { + $this->yyval = new Node\Expr\BinaryOp\BooleanOr($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); + } + + protected function yyn332($attributes) { + $this->yyval = new Node\Expr\BinaryOp\BooleanAnd($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); + } + protected function yyn333($attributes) { - foreach ($this->yyastk[$this->stackPos-(3-2)] as &$s) { if (is_string($s)) { $s = Node\Scalar\String::parseEscapeSequences($s, '"'); } }; $this->yyval = new Node\Scalar\Encapsed($this->yyastk[$this->stackPos-(3-2)], $attributes); + $this->yyval = new Node\Expr\BinaryOp\LogicalOr($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn334($attributes) { - foreach ($this->yyastk[$this->stackPos-(3-2)] as &$s) { if (is_string($s)) { $s = Node\Scalar\String::parseEscapeSequences($s, null); } } $s = preg_replace('~(\r\n|\n|\r)$~', '', $s); if ('' === $s) array_pop($this->yyastk[$this->stackPos-(3-2)]);; $this->yyval = new Node\Scalar\Encapsed($this->yyastk[$this->stackPos-(3-2)], $attributes); + $this->yyval = new Node\Expr\BinaryOp\LogicalAnd($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn335($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + $this->yyval = new Node\Expr\BinaryOp\LogicalXor($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn336($attributes) { - $this->yyval = 'class'; + $this->yyval = new Node\Expr\BinaryOp\BitwiseOr($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn337($attributes) { - $this->yyval = array(); + $this->yyval = new Node\Expr\BinaryOp\BitwiseAnd($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn338($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(2-1)]; + $this->yyval = new Node\Expr\BinaryOp\BitwiseXor($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn339() { - $this->yyval = $this->yyastk[$this->stackPos]; + protected function yyn339($attributes) { + $this->yyval = new Node\Expr\BinaryOp\Concat($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn340() { - $this->yyval = $this->yyastk[$this->stackPos]; + protected function yyn340($attributes) { + $this->yyval = new Node\Expr\BinaryOp\Plus($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn341($attributes) { - $this->yyastk[$this->stackPos-(3-1)][] = $this->yyastk[$this->stackPos-(3-3)]; $this->yyval = $this->yyastk[$this->stackPos-(3-1)]; + $this->yyval = new Node\Expr\BinaryOp\Minus($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn342($attributes) { - $this->yyval = array($this->yyastk[$this->stackPos-(1-1)]); + $this->yyval = new Node\Expr\BinaryOp\Mul($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn343($attributes) { - $this->yyval = new Node\Expr\ArrayItem($this->yyastk[$this->stackPos-(3-3)], $this->yyastk[$this->stackPos-(3-1)], false, $attributes); + $this->yyval = new Node\Expr\BinaryOp\Div($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn344($attributes) { - $this->yyval = new Node\Expr\ArrayItem($this->yyastk[$this->stackPos-(1-1)], null, false, $attributes); + $this->yyval = new Node\Expr\BinaryOp\Mod($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn345($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + $this->yyval = new Node\Expr\BinaryOp\ShiftLeft($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn346($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + $this->yyval = new Node\Expr\BinaryOp\ShiftRight($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn347($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + $this->yyval = new Node\Expr\BinaryOp\Pow($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn348($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + $this->yyval = new Node\Expr\UnaryPlus($this->yyastk[$this->stackPos-(2-2)], $attributes); } protected function yyn349($attributes) { - $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(6-2)], $this->yyastk[$this->stackPos-(6-5)], $attributes); + $this->yyval = new Node\Expr\UnaryMinus($this->yyastk[$this->stackPos-(2-2)], $attributes); } protected function yyn350($attributes) { - $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); + $this->yyval = new Node\Expr\BooleanNot($this->yyastk[$this->stackPos-(2-2)], $attributes); } protected function yyn351($attributes) { - $this->yyval = new Node\Expr\PropertyFetch($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); + $this->yyval = new Node\Expr\BitwiseNot($this->yyastk[$this->stackPos-(2-2)], $attributes); } protected function yyn352($attributes) { - $this->yyval = new Node\Expr\MethodCall($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $this->yyastk[$this->stackPos-(4-4)], $attributes); + $this->yyval = new Node\Expr\BinaryOp\Identical($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn353($attributes) { - $this->yyval = new Node\Expr\FuncCall($this->yyastk[$this->stackPos-(2-1)], $this->yyastk[$this->stackPos-(2-2)], $attributes); + $this->yyval = new Node\Expr\BinaryOp\NotIdentical($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn354($attributes) { - $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); + $this->yyval = new Node\Expr\BinaryOp\Equal($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn355($attributes) { - $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); + $this->yyval = new Node\Expr\BinaryOp\NotEqual($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn356($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + $this->yyval = new Node\Expr\BinaryOp\Smaller($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn357($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(3-2)]; + $this->yyval = new Node\Expr\BinaryOp\SmallerOrEqual($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn358($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + $this->yyval = new Node\Expr\BinaryOp\Greater($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn359($attributes) { - $this->yyval = new Node\Expr\Variable($this->yyastk[$this->stackPos-(2-2)], $attributes); + $this->yyval = new Node\Expr\BinaryOp\GreaterOrEqual($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn360($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + $this->yyval = new Node\Expr\Ternary($this->yyastk[$this->stackPos-(5-1)], $this->yyastk[$this->stackPos-(5-3)], $this->yyastk[$this->stackPos-(5-5)], $attributes); } protected function yyn361($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + $this->yyval = new Node\Expr\Ternary($this->yyastk[$this->stackPos-(4-1)], null, $this->yyastk[$this->stackPos-(4-4)], $attributes); } protected function yyn362($attributes) { - $this->yyval = new Node\Expr\StaticPropertyFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-4)], $attributes); + $this->yyval = $this->yyastk[$this->stackPos-(3-2)]; } protected function yyn363($attributes) { @@ -2586,166 +2653,294 @@ class Parser } protected function yyn364($attributes) { - $this->yyval = new Node\Expr\StaticPropertyFetch($this->yyastk[$this->stackPos-(3-1)], substr($this->yyastk[$this->stackPos-(3-3)], 1), $attributes); + $this->yyval = new Node\Expr\ClassConstFetch($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn365($attributes) { - $this->yyval = new Node\Expr\StaticPropertyFetch($this->yyastk[$this->stackPos-(6-1)], $this->yyastk[$this->stackPos-(6-5)], $attributes); + foreach ($this->yyastk[$this->stackPos-(3-2)] as &$s) { if (is_string($s)) { $s = Node\Scalar\String::parseEscapeSequences($s, '"'); } }; $this->yyval = new Node\Scalar\Encapsed($this->yyastk[$this->stackPos-(3-2)], $attributes); } protected function yyn366($attributes) { - $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); + foreach ($this->yyastk[$this->stackPos-(3-2)] as &$s) { if (is_string($s)) { $s = Node\Scalar\String::parseEscapeSequences($s, null); } } $s = preg_replace('~(\r\n|\n|\r)$~', '', $s); if ('' === $s) array_pop($this->yyastk[$this->stackPos-(3-2)]);; $this->yyval = new Node\Scalar\Encapsed($this->yyastk[$this->stackPos-(3-2)], $attributes); } protected function yyn367($attributes) { - $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; } protected function yyn368($attributes) { - $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); + $this->yyval = 'class'; } protected function yyn369($attributes) { - $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); + $this->yyval = array(); } protected function yyn370($attributes) { - $this->yyval = new Node\Expr\Variable(substr($this->yyastk[$this->stackPos-(1-1)], 1), $attributes); + $this->yyval = $this->yyastk[$this->stackPos-(2-1)]; } - protected function yyn371($attributes) { - $this->yyval = new Node\Expr\Variable($this->yyastk[$this->stackPos-(4-3)], $attributes); + protected function yyn371() { + $this->yyval = $this->yyastk[$this->stackPos]; } - protected function yyn372($attributes) { - $this->yyval = null; + protected function yyn372() { + $this->yyval = $this->yyastk[$this->stackPos]; } protected function yyn373($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; - } - - protected function yyn374($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; - } - - protected function yyn375($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(3-2)]; - } - - protected function yyn376($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; - } - - protected function yyn377($attributes) { - $this->yyval = new Node\Expr\List_($this->yyastk[$this->stackPos-(4-3)], $attributes); - } - - protected function yyn378($attributes) { $this->yyastk[$this->stackPos-(3-1)][] = $this->yyastk[$this->stackPos-(3-3)]; $this->yyval = $this->yyastk[$this->stackPos-(3-1)]; } - protected function yyn379($attributes) { + protected function yyn374($attributes) { $this->yyval = array($this->yyastk[$this->stackPos-(1-1)]); } + protected function yyn375($attributes) { + $this->yyval = new Node\Expr\ArrayItem($this->yyastk[$this->stackPos-(3-3)], $this->yyastk[$this->stackPos-(3-1)], false, $attributes); + } + + protected function yyn376($attributes) { + $this->yyval = new Node\Expr\ArrayItem($this->yyastk[$this->stackPos-(1-1)], null, false, $attributes); + } + + protected function yyn377($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + } + + protected function yyn378($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + } + + protected function yyn379($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + } + protected function yyn380($attributes) { $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; } protected function yyn381($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(6-2)], $this->yyastk[$this->stackPos-(6-5)], $attributes); } protected function yyn382($attributes) { - $this->yyval = null; + $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); } protected function yyn383($attributes) { - $this->yyval = array(); + $this->yyval = new Node\Expr\PropertyFetch($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } protected function yyn384($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(2-1)]; + $this->yyval = new Node\Expr\MethodCall($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $this->yyastk[$this->stackPos-(4-4)], $attributes); } protected function yyn385($attributes) { - $this->yyastk[$this->stackPos-(3-1)][] = $this->yyastk[$this->stackPos-(3-3)]; $this->yyval = $this->yyastk[$this->stackPos-(3-1)]; + $this->yyval = new Node\Expr\FuncCall($this->yyastk[$this->stackPos-(2-1)], $this->yyastk[$this->stackPos-(2-2)], $attributes); } protected function yyn386($attributes) { - $this->yyval = array($this->yyastk[$this->stackPos-(1-1)]); + $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); } protected function yyn387($attributes) { - $this->yyval = new Node\Expr\ArrayItem($this->yyastk[$this->stackPos-(3-3)], $this->yyastk[$this->stackPos-(3-1)], false, $attributes); + $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); } protected function yyn388($attributes) { - $this->yyval = new Node\Expr\ArrayItem($this->yyastk[$this->stackPos-(1-1)], null, false, $attributes); + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; } protected function yyn389($attributes) { - $this->yyval = new Node\Expr\ArrayItem($this->yyastk[$this->stackPos-(4-4)], $this->yyastk[$this->stackPos-(4-1)], true, $attributes); - } - - protected function yyn390($attributes) { - $this->yyval = new Node\Expr\ArrayItem($this->yyastk[$this->stackPos-(2-2)], null, true, $attributes); - } - - protected function yyn391($attributes) { - $this->yyastk[$this->stackPos-(2-1)][] = $this->yyastk[$this->stackPos-(2-2)]; $this->yyval = $this->yyastk[$this->stackPos-(2-1)]; - } - - protected function yyn392($attributes) { - $this->yyastk[$this->stackPos-(2-1)][] = $this->yyastk[$this->stackPos-(2-2)]; $this->yyval = $this->yyastk[$this->stackPos-(2-1)]; - } - - protected function yyn393($attributes) { - $this->yyval = array($this->yyastk[$this->stackPos-(1-1)]); - } - - protected function yyn394($attributes) { - $this->yyval = array($this->yyastk[$this->stackPos-(2-1)], $this->yyastk[$this->stackPos-(2-2)]); - } - - protected function yyn395($attributes) { - $this->yyval = new Node\Expr\Variable(substr($this->yyastk[$this->stackPos-(1-1)], 1), $attributes); - } - - protected function yyn396($attributes) { - $this->yyval = new Node\Expr\ArrayDimFetch(new Node\Expr\Variable(substr($this->yyastk[$this->stackPos-(4-1)], 1), $attributes), $this->yyastk[$this->stackPos-(4-3)], $attributes); - } - - protected function yyn397($attributes) { - $this->yyval = new Node\Expr\PropertyFetch(new Node\Expr\Variable(substr($this->yyastk[$this->stackPos-(3-1)], 1), $attributes), $this->yyastk[$this->stackPos-(3-3)], $attributes); - } - - protected function yyn398($attributes) { - $this->yyval = new Node\Expr\Variable($this->yyastk[$this->stackPos-(3-2)], $attributes); - } - - protected function yyn399($attributes) { - $this->yyval = new Node\Expr\Variable($this->yyastk[$this->stackPos-(3-2)], $attributes); - } - - protected function yyn400($attributes) { - $this->yyval = new Node\Expr\ArrayDimFetch(new Node\Expr\Variable($this->yyastk[$this->stackPos-(6-2)], $attributes), $this->yyastk[$this->stackPos-(6-4)], $attributes); - } - - protected function yyn401($attributes) { $this->yyval = $this->yyastk[$this->stackPos-(3-2)]; } + protected function yyn390($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + } + + protected function yyn391($attributes) { + $this->yyval = new Node\Expr\Variable($this->yyastk[$this->stackPos-(2-2)], $attributes); + } + + protected function yyn392($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + } + + protected function yyn393($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + } + + protected function yyn394($attributes) { + $this->yyval = new Node\Expr\StaticPropertyFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-4)], $attributes); + } + + protected function yyn395($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + } + + protected function yyn396($attributes) { + $this->yyval = new Node\Expr\StaticPropertyFetch($this->yyastk[$this->stackPos-(3-1)], substr($this->yyastk[$this->stackPos-(3-3)], 1), $attributes); + } + + protected function yyn397($attributes) { + $this->yyval = new Node\Expr\StaticPropertyFetch($this->yyastk[$this->stackPos-(6-1)], $this->yyastk[$this->stackPos-(6-5)], $attributes); + } + + protected function yyn398($attributes) { + $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); + } + + protected function yyn399($attributes) { + $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); + } + + protected function yyn400($attributes) { + $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); + } + + protected function yyn401($attributes) { + $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); + } + protected function yyn402($attributes) { - $this->yyval = new Node\Scalar\String($this->yyastk[$this->stackPos-(1-1)], $attributes); + $this->yyval = new Node\Expr\Variable(substr($this->yyastk[$this->stackPos-(1-1)], 1), $attributes); } protected function yyn403($attributes) { - $this->yyval = new Node\Scalar\String($this->yyastk[$this->stackPos-(1-1)], $attributes); + $this->yyval = new Node\Expr\Variable($this->yyastk[$this->stackPos-(4-3)], $attributes); } protected function yyn404($attributes) { + $this->yyval = null; + } + + protected function yyn405($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + } + + protected function yyn406($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + } + + protected function yyn407($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(3-2)]; + } + + protected function yyn408($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + } + + protected function yyn409($attributes) { + $this->yyval = new Node\Expr\List_($this->yyastk[$this->stackPos-(4-3)], $attributes); + } + + protected function yyn410($attributes) { + $this->yyastk[$this->stackPos-(3-1)][] = $this->yyastk[$this->stackPos-(3-3)]; $this->yyval = $this->yyastk[$this->stackPos-(3-1)]; + } + + protected function yyn411($attributes) { + $this->yyval = array($this->yyastk[$this->stackPos-(1-1)]); + } + + protected function yyn412($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + } + + protected function yyn413($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; + } + + protected function yyn414($attributes) { + $this->yyval = null; + } + + protected function yyn415($attributes) { + $this->yyval = array(); + } + + protected function yyn416($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(2-1)]; + } + + protected function yyn417($attributes) { + $this->yyastk[$this->stackPos-(3-1)][] = $this->yyastk[$this->stackPos-(3-3)]; $this->yyval = $this->yyastk[$this->stackPos-(3-1)]; + } + + protected function yyn418($attributes) { + $this->yyval = array($this->yyastk[$this->stackPos-(1-1)]); + } + + protected function yyn419($attributes) { + $this->yyval = new Node\Expr\ArrayItem($this->yyastk[$this->stackPos-(3-3)], $this->yyastk[$this->stackPos-(3-1)], false, $attributes); + } + + protected function yyn420($attributes) { + $this->yyval = new Node\Expr\ArrayItem($this->yyastk[$this->stackPos-(1-1)], null, false, $attributes); + } + + protected function yyn421($attributes) { + $this->yyval = new Node\Expr\ArrayItem($this->yyastk[$this->stackPos-(4-4)], $this->yyastk[$this->stackPos-(4-1)], true, $attributes); + } + + protected function yyn422($attributes) { + $this->yyval = new Node\Expr\ArrayItem($this->yyastk[$this->stackPos-(2-2)], null, true, $attributes); + } + + protected function yyn423($attributes) { + $this->yyastk[$this->stackPos-(2-1)][] = $this->yyastk[$this->stackPos-(2-2)]; $this->yyval = $this->yyastk[$this->stackPos-(2-1)]; + } + + protected function yyn424($attributes) { + $this->yyastk[$this->stackPos-(2-1)][] = $this->yyastk[$this->stackPos-(2-2)]; $this->yyval = $this->yyastk[$this->stackPos-(2-1)]; + } + + protected function yyn425($attributes) { + $this->yyval = array($this->yyastk[$this->stackPos-(1-1)]); + } + + protected function yyn426($attributes) { + $this->yyval = array($this->yyastk[$this->stackPos-(2-1)], $this->yyastk[$this->stackPos-(2-2)]); + } + + protected function yyn427($attributes) { + $this->yyval = new Node\Expr\Variable(substr($this->yyastk[$this->stackPos-(1-1)], 1), $attributes); + } + + protected function yyn428($attributes) { + $this->yyval = new Node\Expr\ArrayDimFetch(new Node\Expr\Variable(substr($this->yyastk[$this->stackPos-(4-1)], 1), $attributes), $this->yyastk[$this->stackPos-(4-3)], $attributes); + } + + protected function yyn429($attributes) { + $this->yyval = new Node\Expr\PropertyFetch(new Node\Expr\Variable(substr($this->yyastk[$this->stackPos-(3-1)], 1), $attributes), $this->yyastk[$this->stackPos-(3-3)], $attributes); + } + + protected function yyn430($attributes) { + $this->yyval = new Node\Expr\Variable($this->yyastk[$this->stackPos-(3-2)], $attributes); + } + + protected function yyn431($attributes) { + $this->yyval = new Node\Expr\Variable($this->yyastk[$this->stackPos-(3-2)], $attributes); + } + + protected function yyn432($attributes) { + $this->yyval = new Node\Expr\ArrayDimFetch(new Node\Expr\Variable($this->yyastk[$this->stackPos-(6-2)], $attributes), $this->yyastk[$this->stackPos-(6-4)], $attributes); + } + + protected function yyn433($attributes) { + $this->yyval = $this->yyastk[$this->stackPos-(3-2)]; + } + + protected function yyn434($attributes) { + $this->yyval = new Node\Scalar\String($this->yyastk[$this->stackPos-(1-1)], $attributes); + } + + protected function yyn435($attributes) { + $this->yyval = new Node\Scalar\String($this->yyastk[$this->stackPos-(1-1)], $attributes); + } + + protected function yyn436($attributes) { $this->yyval = new Node\Expr\Variable(substr($this->yyastk[$this->stackPos-(1-1)], 1), $attributes); } } diff --git a/test/code/parser/expr/constant_expr.test b/test/code/parser/expr/constant_expr.test new file mode 100644 index 0000000..9c2d83b --- /dev/null +++ b/test/code/parser/expr/constant_expr.test @@ -0,0 +1,470 @@ +Expressions in static scalar context +----- + 0; +const T_20 = 1 >= 0; +const T_21 = 1 === 1; +const T_22 = 1 !== 1; +const T_23 = 0 != "0"; +const T_24 = 1 == "1"; +const T_25 = 1 + 2 * 3; +const T_26 = "1" + 2 + "3"; +const T_27 = 2 ** 3; +----- +array( + 0: Stmt_Const( + consts: array( + 0: Const( + name: T_1 + value: Expr_BinaryOp_ShiftLeft( + left: Scalar_LNumber( + value: 1 + ) + right: Scalar_LNumber( + value: 1 + ) + ) + ) + ) + ) + 1: Stmt_Const( + consts: array( + 0: Const( + name: T_2 + value: Expr_BinaryOp_Div( + left: Scalar_LNumber( + value: 1 + ) + right: Scalar_LNumber( + value: 2 + ) + ) + ) + ) + ) + 2: Stmt_Const( + consts: array( + 0: Const( + name: T_3 + value: Expr_BinaryOp_Plus( + left: Scalar_DNumber( + value: 1.5 + ) + right: Scalar_DNumber( + value: 1.5 + ) + ) + ) + ) + ) + 3: Stmt_Const( + consts: array( + 0: Const( + name: T_4 + value: Expr_BinaryOp_Concat( + left: Scalar_String( + value: foo + ) + right: Scalar_String( + value: bar + ) + ) + ) + ) + ) + 4: Stmt_Const( + consts: array( + 0: Const( + name: T_5 + value: Expr_BinaryOp_Mul( + left: Expr_BinaryOp_Plus( + left: Scalar_DNumber( + value: 1.5 + ) + right: Scalar_DNumber( + value: 1.5 + ) + ) + right: Scalar_LNumber( + value: 2 + ) + ) + ) + ) + ) + 5: Stmt_Const( + consts: array( + 0: Const( + name: T_6 + value: Expr_BinaryOp_Concat( + left: Expr_BinaryOp_Concat( + left: Expr_BinaryOp_Concat( + left: Scalar_String( + value: foo + ) + right: Scalar_LNumber( + value: 2 + ) + ) + right: Scalar_LNumber( + value: 3 + ) + ) + right: Scalar_DNumber( + value: 4 + ) + ) + ) + ) + ) + 6: Stmt_Const( + consts: array( + 0: Const( + name: T_7 + value: Scalar_MagicConst_Line( + ) + ) + ) + ) + 7: Stmt_Const( + consts: array( + 0: Const( + name: T_8 + value: Scalar_String( + value: This is a test string + ) + ) + ) + ) + 8: Stmt_Const( + consts: array( + 0: Const( + name: T_9 + value: Expr_BitwiseNot( + expr: Expr_UnaryMinus( + expr: Scalar_LNumber( + value: 1 + ) + ) + ) + ) + ) + ) + 9: Stmt_Const( + consts: array( + 0: Const( + name: T_10 + value: Expr_BinaryOp_Plus( + left: Expr_Ternary( + cond: Expr_UnaryMinus( + expr: Scalar_LNumber( + value: 1 + ) + ) + if: null + else: Scalar_LNumber( + value: 1 + ) + ) + right: Expr_Ternary( + cond: Scalar_LNumber( + value: 0 + ) + if: Scalar_LNumber( + value: 2 + ) + else: Scalar_LNumber( + value: 3 + ) + ) + ) + ) + ) + ) + 10: Stmt_Const( + consts: array( + 0: Const( + name: T_11 + value: Expr_BinaryOp_BooleanAnd( + left: Scalar_LNumber( + value: 1 + ) + right: Scalar_LNumber( + value: 0 + ) + ) + ) + ) + ) + 11: Stmt_Const( + consts: array( + 0: Const( + name: T_12 + value: Expr_BinaryOp_LogicalAnd( + left: Scalar_LNumber( + value: 1 + ) + right: Scalar_LNumber( + value: 1 + ) + ) + ) + ) + ) + 12: Stmt_Const( + consts: array( + 0: Const( + name: T_13 + value: Expr_BinaryOp_BooleanOr( + left: Scalar_LNumber( + value: 0 + ) + right: Scalar_LNumber( + value: 0 + ) + ) + ) + ) + ) + 13: Stmt_Const( + consts: array( + 0: Const( + name: T_14 + value: Expr_BinaryOp_LogicalOr( + left: Scalar_LNumber( + value: 1 + ) + right: Scalar_LNumber( + value: 0 + ) + ) + ) + ) + ) + 14: Stmt_Const( + consts: array( + 0: Const( + name: T_15 + value: Expr_BinaryOp_LogicalXor( + left: Scalar_LNumber( + value: 1 + ) + right: Scalar_LNumber( + value: 1 + ) + ) + ) + ) + ) + 15: Stmt_Const( + consts: array( + 0: Const( + name: T_16 + value: Expr_BinaryOp_LogicalXor( + left: Scalar_LNumber( + value: 1 + ) + right: Scalar_LNumber( + value: 0 + ) + ) + ) + ) + ) + 16: Stmt_Const( + consts: array( + 0: Const( + name: T_17 + value: Expr_BinaryOp_Smaller( + left: Scalar_LNumber( + value: 1 + ) + right: Scalar_LNumber( + value: 0 + ) + ) + ) + ) + ) + 17: Stmt_Const( + consts: array( + 0: Const( + name: T_18 + value: Expr_BinaryOp_SmallerOrEqual( + left: Scalar_LNumber( + value: 0 + ) + right: Scalar_LNumber( + value: 0 + ) + ) + ) + ) + ) + 18: Stmt_Const( + consts: array( + 0: Const( + name: T_19 + value: Expr_BinaryOp_Greater( + left: Scalar_LNumber( + value: 1 + ) + right: Scalar_LNumber( + value: 0 + ) + ) + ) + ) + ) + 19: Stmt_Const( + consts: array( + 0: Const( + name: T_20 + value: Expr_BinaryOp_GreaterOrEqual( + left: Scalar_LNumber( + value: 1 + ) + right: Scalar_LNumber( + value: 0 + ) + ) + ) + ) + ) + 20: Stmt_Const( + consts: array( + 0: Const( + name: T_21 + value: Expr_BinaryOp_Identical( + left: Scalar_LNumber( + value: 1 + ) + right: Scalar_LNumber( + value: 1 + ) + ) + ) + ) + ) + 21: Stmt_Const( + consts: array( + 0: Const( + name: T_22 + value: Expr_BinaryOp_NotIdentical( + left: Scalar_LNumber( + value: 1 + ) + right: Scalar_LNumber( + value: 1 + ) + ) + ) + ) + ) + 22: Stmt_Const( + consts: array( + 0: Const( + name: T_23 + value: Expr_BinaryOp_NotEqual( + left: Scalar_LNumber( + value: 0 + ) + right: Scalar_String( + value: 0 + ) + ) + ) + ) + ) + 23: Stmt_Const( + consts: array( + 0: Const( + name: T_24 + value: Expr_BinaryOp_Equal( + left: Scalar_LNumber( + value: 1 + ) + right: Scalar_String( + value: 1 + ) + ) + ) + ) + ) + 24: Stmt_Const( + consts: array( + 0: Const( + name: T_25 + value: Expr_BinaryOp_Plus( + left: Scalar_LNumber( + value: 1 + ) + right: Expr_BinaryOp_Mul( + left: Scalar_LNumber( + value: 2 + ) + right: Scalar_LNumber( + value: 3 + ) + ) + ) + ) + ) + ) + 25: Stmt_Const( + consts: array( + 0: Const( + name: T_26 + value: Expr_BinaryOp_Plus( + left: Expr_BinaryOp_Plus( + left: Scalar_String( + value: 1 + ) + right: Scalar_LNumber( + value: 2 + ) + ) + right: Scalar_String( + value: 3 + ) + ) + ) + ) + ) + 26: Stmt_Const( + consts: array( + 0: Const( + name: T_27 + value: Expr_BinaryOp_Pow( + left: Scalar_LNumber( + value: 2 + ) + right: Scalar_LNumber( + value: 3 + ) + ) + ) + ) + ) +) \ No newline at end of file