From 4743e9b0b87c62aa3bae8ea707d6013bff0dd2f9 Mon Sep 17 00:00:00 2001 From: nikic Date: Sat, 19 Apr 2014 22:53:13 +0200 Subject: [PATCH] Update constant scalar expression support --- CHANGELOG.md | 3 +- grammar/zend_language_parser.phpy | 74 +- lib/PhpParser/Parser.php | 1047 +++++++++++----------- test/code/parser/expr/constant_expr.test | 38 + 4 files changed, 603 insertions(+), 559 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20c84c1..8498e1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,8 @@ Version 1.0.0-dev ----------------- -Nothing yet. +* [PHP 5.6] Updated support for constant scalar expressions to comply with latest changes. This means that arrays + and array dimension fetches are now supported as well. Version 1.0.0-beta1 (27.03.2014) -------------------------------- diff --git a/grammar/zend_language_parser.phpy b/grammar/zend_language_parser.phpy index d797fd8..f324e61 100644 --- a/grammar/zend_language_parser.phpy +++ b/grammar/zend_language_parser.phpy @@ -748,52 +748,48 @@ common_scalar: | name { $$ = Expr\ConstFetch[$1]; } ; -/* 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]; } + | T_ARRAY '(' static_array_pair_list ')' { $$ = Expr\Array_[$3]; } + | '[' static_array_pair_list ']' { $$ = Expr\Array_[$2]; } | 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; } + static_scalar T_BOOLEAN_OR static_scalar { $$ = Expr\BinaryOp\BooleanOr [$1, $3]; } + | static_scalar T_BOOLEAN_AND static_scalar { $$ = Expr\BinaryOp\BooleanAnd[$1, $3]; } + | static_scalar T_LOGICAL_OR static_scalar { $$ = Expr\BinaryOp\LogicalOr [$1, $3]; } + | static_scalar T_LOGICAL_AND static_scalar { $$ = Expr\BinaryOp\LogicalAnd[$1, $3]; } + | static_scalar T_LOGICAL_XOR static_scalar { $$ = Expr\BinaryOp\LogicalXor[$1, $3]; } + | static_scalar '|' static_scalar { $$ = Expr\BinaryOp\BitwiseOr [$1, $3]; } + | static_scalar '&' static_scalar { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; } + | static_scalar '^' static_scalar { $$ = Expr\BinaryOp\BitwiseXor[$1, $3]; } + | static_scalar '.' static_scalar { $$ = Expr\BinaryOp\Concat [$1, $3]; } + | static_scalar '+' static_scalar { $$ = Expr\BinaryOp\Plus [$1, $3]; } + | static_scalar '-' static_scalar { $$ = Expr\BinaryOp\Minus [$1, $3]; } + | static_scalar '*' static_scalar { $$ = Expr\BinaryOp\Mul [$1, $3]; } + | static_scalar '/' static_scalar { $$ = Expr\BinaryOp\Div [$1, $3]; } + | static_scalar '%' static_scalar { $$ = Expr\BinaryOp\Mod [$1, $3]; } + | static_scalar T_SL static_scalar { $$ = Expr\BinaryOp\ShiftLeft [$1, $3]; } + | static_scalar T_SR static_scalar { $$ = Expr\BinaryOp\ShiftRight[$1, $3]; } + | static_scalar T_POW static_scalar { $$ = Expr\BinaryOp\Pow [$1, $3]; } + | '+' static_scalar %prec T_INC { $$ = Expr\UnaryPlus [$2]; } + | '-' static_scalar %prec T_INC { $$ = Expr\UnaryMinus[$2]; } + | '!' static_scalar { $$ = Expr\BooleanNot[$2]; } + | '~' static_scalar { $$ = Expr\BitwiseNot[$2]; } + | static_scalar T_IS_IDENTICAL static_scalar { $$ = Expr\BinaryOp\Identical [$1, $3]; } + | static_scalar T_IS_NOT_IDENTICAL static_scalar { $$ = Expr\BinaryOp\NotIdentical [$1, $3]; } + | static_scalar T_IS_EQUAL static_scalar { $$ = Expr\BinaryOp\Equal [$1, $3]; } + | static_scalar T_IS_NOT_EQUAL static_scalar { $$ = Expr\BinaryOp\NotEqual [$1, $3]; } + | static_scalar '<' static_scalar { $$ = Expr\BinaryOp\Smaller [$1, $3]; } + | static_scalar T_IS_SMALLER_OR_EQUAL static_scalar { $$ = Expr\BinaryOp\SmallerOrEqual[$1, $3]; } + | static_scalar '>' static_scalar { $$ = Expr\BinaryOp\Greater [$1, $3]; } + | static_scalar T_IS_GREATER_OR_EQUAL static_scalar { $$ = Expr\BinaryOp\GreaterOrEqual[$1, $3]; } + | static_scalar '?' static_scalar ':' static_scalar { $$ = Expr\Ternary[$1, $3, $5]; } + | static_scalar '?' ':' static_scalar { $$ = Expr\Ternary[$1, null, $4]; } + | static_scalar '[' static_scalar ']' { $$ = Expr\ArrayDimFetch[$1, $3]; } + | '(' static_scalar ')' { $$ = $2; } ; scalar: diff --git a/lib/PhpParser/Parser.php b/lib/PhpParser/Parser.php index 3d42821..0e3c979 100644 --- a/lib/PhpParser/Parser.php +++ b/lib/PhpParser/Parser.php @@ -18,10 +18,10 @@ class Parser const TOKEN_MAP_SIZE = 389; - const YYLAST = 1058; - const YY2TBLSTATE = 384; - const YYGLAST = 574; - const YYNLSTATES = 619; + const YYLAST = 1091; + const YY2TBLSTATE = 400; + const YYGLAST = 570; + const YYNLSTATES = 626; const YYUNEXPECTED = 32767; const YYDEFAULT = -32766; @@ -364,289 +364,298 @@ class Parser ); protected static $yyaction = array( - 59, 60, 394, 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, 339, 340, 67, 270, 68, - 279, 280, 69, 70, 71, 72, 73, 74, 75, 76, - 723, 32, 291, 77, 386, 395, 272, 31, 391, 932, - 933, 431, -118, 1023, 320, 669, 411, 432, 46, 27, - 396, 133, 433, 787, 434, 532, 435, 0, 573, 397, - 390, 131, 1045, 36, 37, 436, 402, 398, 38, 437, - 408, 309, 78, 594, 419, 342, 343, 194, 438, 439, - 234, 235, 236, 440, 441, 442, 692, 651, 695, 443, - 444, 393, 884, 124, 445, 446, 237, 938, 939, 940, - 941, 935, 936, 298, 82, 83, 84, 445, 458, 942, - 937, 399, 283, 675, 592, 414, 47, 416, 323, 307, - 987, 311, 40, 361, 85, 86, 87, 88, 89, 90, + 59, 60, 410, 61, 62,-32766,-32766,-32766,-32766, 63, + 64, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767, + -32767, 65, 66, 57, 445, 236, 237, 67, 369, 68, + 289, 290, 69, 70, 71, 72, 73, 74, 75, 76, + 730, 32, 299, 77, 402, 411, 435, 409, 407, 939, + 940, 447, 1030, 1030, 328, 676, 427, 448, 46, 27, + 412, 598, 449, 794, 450, 0, 451, 214, 580, 413, + 755, 756, 53, 36, 37, 452, 418, 414, 38, 453, + 347, 348, 78, 183, 320, 350, 351, 305, 454, 455, + 39, 292, -122, 456, 457, 458, 699, 658, 702, 459, + 460, 280, 891, 31, 461, 462, 124, 945, 946, 947, + 948, 942, 943, 306, 82, 83, 84, 125, 474, 949, + 944, 415, 293, 682, 599, 406, 47, 331, 331, 318, + 35, 322, 40, 786, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 1052, 292,-32766, 724,-32766, - -32766,-32766, 623, 623, 213, 214, 215,-32766, 106, 413, - -32766,-32766,-32766, 989,-32766, 412,-32766,-32766,-32766,-32766, - -32766,-32766, 204, 239, 216,-32766,-32766,-32766, 1030, 751, - -32766,-32766, 283, 330,-32766, 39, 282,-32766, 457, 988, - 129, 748, 749, 53, 884,-32766, 1017,-32766,-32766,-32766, + 101, 102, 103, 104, 105, 120, 300,-32766, 731,-32766, + -32766,-32766, 776, 630, 212, 213, 214,-32766, 106, 296, + -32766,-32766,-32766, 203,-32766, 428,-32766,-32766,-32766,-32766, + -32766,-32766, 183, 1024, 333,-32766,-32766,-32766, 22, 905, + -32766,-32766, 293, 432,-32766, 349, 430,-32766, 473,-32766, + -32766,-32766,-32766,-32766, 891,-32766, 131, 212, 213, 214, 41, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, -122, 281,-32766, 22,-32766, 1055, 458, - 1057, 1056, 399, 623, 128,-32766,-32766,-32766, 349, 125, - -32766,-32766,-32766, 898,-32766, 989,-32766, 391,-32766, 825, - 827,-32766, 429, 320, 505,-32766,-32766,-32766, 297,-32766, - -32766,-32766, 787, 667,-32766, 623, 215,-32766, 457,-32766, - 56, 884,-32766,-32766,-32766,-32766,-32766, 1023,-32766, 391, - -32766, 331, 204,-32766, 216, 320, 120,-32766,-32766,-32766, - 591, 273,-32766,-32766, 787, 693,-32766, 418, 54,-32766, - 457, 325, 398, 884, 128,-32766,-32766,-32766, 398, 750, - -32766,-32766,-32766, 438, 439, 213, 214, 215, 760, 438, - 439, -390, 651, 695, 443, 444,-32766, 694, 651, 695, - 443, 444, 623, 204, 582, 216,-32766,-32766,-32766,-32766, - -32766,-32766, 1045,-32766, 341,-32766, 884,-32766, 192, 35, - -32766, 684, 323, 122,-32766,-32766,-32766, 682,-32766,-32766, - -32766, 127, 779,-32766, 623, 371,-32766, 457,-32766,-32766, - 129,-32766,-32766,-32766,-32766,-32766, 666,-32766, 623,-32766, - 1023, 121,-32766, 214, 215, 119,-32766,-32766,-32766, 884, - 769,-32766,-32766, 274, 1027,-32766,-32766,-32766,-32766, 457, - 204,-32766, 216, 195,-32766,-32766,-32766, 623, 774, 284, - 285,-32766, 522, 908,-32766,-32766,-32766, 986,-32766, 196, - -32766, 884,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766, - -32766,-32766, 426, 551,-32766,-32766,-32766,-32766,-32766, 607, - 312,-32766, 457, 197,-32766, 458, 421, 28, 399,-32766, - 623, 134, 350, 403,-32766, 323, 983,-32766,-32766,-32766, - 545,-32766, 199,-32766, 884,-32766, 200, 130,-32766, 100, - 101, 102,-32766,-32766,-32766, 597,-32766,-32766,-32766,-32766, - -32766,-32766, 623, 604,-32766, 457,-32766, 564, 565,-32766, - -32766,-32766,-32766,-32766, 238,-32766, 884,-32766, 944, 608, - -32766, 231, 232, 233,-32766,-32766,-32766, 748, 749,-32766, - -32766, 216, 204,-32766, 216, 132,-32766, 457, 944,-32766, - 784, 618,-32766,-32766,-32766, 623, 213, 214, 215,-32766, - 616, 595,-32766,-32766,-32766, 614,-32766, 679,-32766, 884, - -32766, 630, 599,-32766, 204,-32766, 216,-32766,-32766,-32766, - 292,-32766,-32766,-32766, 659,-32766,-32766, 623, 688,-32766, - 457,-32766, 773, 613,-32766,-32766,-32766,-32766,-32766, 106, - -32766, 237,-32766, -167, 58,-32766, 55, 52, 51,-32766, - -32766,-32766, 50, 49,-32766,-32766, 291, 569,-32766, 525, - 1045,-32766, 457, 537,-32766, -164, 623,-32766,-32766,-32766, - 623,-32766,-32766,-32766,-32766, 579, 409,-32766,-32766,-32766, - 590,-32766, 495,-32766, 483,-32766, 479, 478,-32766,-32766, - 496,-32766,-32766,-32766,-32766, 642,-32766,-32766,-32766, 663, - -32766,-32766, 623, 1050,-32766, 457,-32766, 624, 781,-32766, - -32766,-32766,-32766,-32766, 640,-32766, 407,-32766, 329, 566, - -32766, 574, 901, 581,-32766,-32766,-32766, 482, 328,-32766, - -32766, 410, 288,-32766, 428, 498,-32766, 457, 556, 696, - 208, 209, 661,-32766,-32766, 269, 210, 697, 211,-32766, - -32766,-32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767, - -32767, 795, 796, 797, 794, 793, 792, 554, 932, 933, - 623, 406, 321,-32766,-32766,-32766, 934, 319, 925, 623, - 103, 104, 105,-32766, 292, -390,-32766,-32766,-32766, 318, - -32766, 324,-32766, 198,-32766, 310, 106,-32766,-32766,-32766, - -32766,-32766,-32766,-32766, 308, 908,-32766,-32766, -391, 445, - -32766, 42, 123,-32766, 457, 943,-32766, 301,-32766,-32766, - -32766,-32766, 770, 716, -298, 488, 938, 939, 940, 941, - 935, 936, 377, -290, 587, 398, 408, 458, 942, 937, - 399,-32766,-32766,-32766, 364, 212, 438, 439, 351, 314, - -299,-32766,-32766, 633, 715, 651, 695, 443, 444,-32766, - 390,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, - 398, 387, 690, 126, 668, 780, 707, 306, 709, 425, - 711, 438, 439, 654, 602, 718, 717, 398, 387, 726, - 629, 695, 443, 444, 306, 671, 656, 678, 438, 439, - 665, 601, 600, 45, 398, 387, 44, 629, 695, 443, - 444, 306, 322, 778, 636, 438, 439, 81, 635, 632, - -32766,-32766,-32766, 634, 629, 695, 443, 444, 677, 322, - 664, 662, 660, 670, 567, 882, 631, 398,-32766, 777, - -32766,-32766,-32766,-32766,-32766, 593, 322, 598, 438, 439, - 398, 603, 389, 605, 398, 610, 611, 651, 695, 443, - 444, 438, 439, 617, 612, 438, 439, 398, 615, 385, - 651, 695, 443, 444, 651, 695, 443, 444, 438, 439, - 33, 1051, 534, 1024, 398, 1022, 885, 651, 695, 443, - 444, 1008, 1018, 1028, 762, 438, 439, 398, 1053, 691, - 923, 589, 1020, 652, 651, 695, 443, 444, 438, 439, - 1054, 864, 34, 43, 398, 48, 785, 651, 695, 443, - 444, 580, 326, 296, 79, 438, 439,-32766,-32766,-32766, - -32766, 295, 398, 886, 651, 695, 443, 444, 294, 293, - 278, 277, 271, 438, 439,-32766, 193,-32766,-32766,-32766, - -32766, 80, 651, 695, 443, 444,-32766,-32766,-32766,-32766, - -32767,-32767,-32767,-32767, 398, 30, 1002, 526, 863, 887, - -119, 947, 752, 891, 888, 438, 439, 586, 555, 517, - 427, 422, 372, 0, 651, 695, 443, 444, 352, 25, - 24, 23, -118, 0, 0, 0, 948, 1049, 922, 1019, - 1003, 1007, 1021, 907, 895, 893, 894, 892 + 116, 117, 118, 589, 281, 183, 1052,-32766, 630, 212, + 213, 214, 429, 630, 128,-32766,-32766,-32766, 357, 996, + -32766,-32766,-32766, 1037,-32766, 758,-32766, 183,-32766, 832, + 834,-32766, 212, 213, 214,-32766,-32766,-32766, 339,-32766, + -32766,-32766, 295, 461,-32766, 630, 129,-32766, 473,-32766, + 183, 891,-32766,-32766,-32766,-32766,-32766,-32766,-32766, 407, + -32766, 238, 54,-32766, 205, 328, 56,-32766,-32766,-32766, + 1059, 291,-32766,-32766, 794, 474,-32766, 781, 415,-32766, + 473, 993, 414, 891, 128,-32766,-32766,-32766, 414, 757, + -32766,-32766,-32766, 454, 455,-32766,-32766,-32766, 127, 454, + 455, -390, 658, 702, 459, 460,-32766, 700, 658, 702, + 459, 460, 630,-32766, 674,-32766,-32766,-32766,-32766,-32766, + -32766,-32766, 338,-32766, 183,-32766, 407,-32766, 990, 767, + -32766, 893, 328, 206,-32766,-32766,-32766, 691,-32766,-32766, + -32766, 794, 241,-32766, 630, 121,-32766, 473,-32766, 122, + 891,-32766,-32766,-32766,-32766,-32766, 673,-32766, 242,-32766, + 213, 214,-32766,-32766,-32766,-32766,-32766,-32766,-32766, 556, + 294,-32766,-32766, 119, 701,-32766, 989, 183,-32766, 473, + 204,-32766, 891, 521,-32766,-32766,-32766,-32766,-32766,-32766, + -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, + 1062, 1052, 1064, 1063, 282,-32766,-32766,-32766,-32766, 434, + 323, 630, 212, 213, 214,-32766,-32766,-32766,-32766,-32766, + -32766, 615,-32766, 1034,-32766, 891,-32766, 951, 686,-32766, + 183, 240, 611,-32766,-32766,-32766, 278,-32766,-32766,-32766, + -32766,-32766,-32766, 630, 379,-32766, 473,-32766,-32766,-32766, + -32766,-32766,-32766,-32766,-32766, 604,-32766, 891,-32766, 994, + -118,-32766, 230, 231, 232,-32766,-32766,-32766, 951, 602, + -32766,-32766, 133, 995,-32766,-32766, 548,-32766, 473, 132, + -32766, 695, 129,-32766,-32766,-32766, 630, 103, 104, 105, + -32766, 300, 621,-32766,-32766,-32766, 130,-32766, 614,-32766, + 891,-32766, 106, 106,-32766, 100, 101, 102,-32766,-32766, + -32766, 623,-32766,-32766,-32766,-32766,-32766,-32766, 630, 996, + -32766, 473,-32766, 236, 237,-32766,-32766,-32766,-32766,-32766, + 300,-32766, 891,-32766, 424, 58,-32766, 601, 442, 562, + -32766,-32766,-32766, 437, 28,-32766,-32766, 134, 358,-32766, + 571, 572,-32766, 473, 55,-32766, 755, 756, 666,-32766, + -32766, 630, 791, 625, 52,-32766, 780, 620,-32766,-32766, + -32766, 51,-32766, 49,-32766, 50,-32766, 299, 788,-32766, + 637, 606, 630,-32766,-32766,-32766, 576,-32766,-32766,-32766, + -32766,-32766,-32766, 630, 586,-32766, 473,-32766, 512, 511, + -32766,-32766,-32766,-32766,-32766, 499,-32766, 495,-32766, 494, + 649,-32766, 631, 425, 647,-32766,-32766,-32766, 423, 1057, + -32766,-32766, 597, 239,-32766, 573, -167,-32766, 473, 588, + -32766,-32766,-32766, 670,-32766,-32766, 581, 908, 498, 207, + 208, 426,-32766,-32766,-32766, 209, 1052, 210,-32766, 336, + -32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, 201, + -32766, 337,-32766,-32766,-32766, 668,-32766, 939, 940, 277, + -32766,-32766, 541, 207, 208, 941, 630, 514, 298, 209, + -32766, 210, -164,-32766,-32766,-32766, 553,-32766, 422,-32766, + 565,-32766, 329, 201,-32766, 444, 567, 703,-32766,-32766, + -32766, 939, 940,-32766,-32766,-32766, 332,-32766, 704, 941, + -32766, 473, 802, 803, 804, 801, 800, 799,-32766, 319, + 359, 326, 607, 538, 327, 945, 946, 947, 948, 942, + 943, 385, 321,-32766,-32766,-32766, -391, 949, 944, -390, + 461, 123, 42, 950, 211, 372,-32766, 608,-32766,-32766, + 594,-32766, 932,-32766,-32766,-32766,-32766, 538, 325, 945, + 946, 947, 948, 942, 943, 385, 309, -290, -299,-32766, + -298, 949, 944, 441, 955, 630, 424, 672, 211,-32766, + -32766, 504,-32766,-32766,-32766, 406,-32766, 697,-32766, 663, + -32766, 44, 678,-32766, 785, 724, 777,-32766,-32766,-32766, + 685, 725,-32766,-32766, 414, 403,-32766, 661, 718,-32766, + 473, 317, 643, 642, 716, 454, 455,-32766, 233, 234, + 235, 414, 403, 641, 636, 702, 459, 460, 317, 640, + 784, 675, 454, 455, 236, 237, 714, 45, 414, 403, + 787, 636, 702, 459, 460, 317, 330,-32766,-32766, 454, + 455, 610, 733, 638,-32766,-32766,-32766, 684, 636, 702, + 459, 460, 671, 330, 669, 667, 677, 759, 81, 0, + 639, 1058,-32766, 617,-32766,-32766,-32766,-32766,-32766, 414, + 330,-32767,-32767,-32767,-32767, 98, 99, 100, 101, 102, + 454, 455, 414, 618, 619, 622, 414, 600, 605, 658, + 702, 459, 460, 454, 455, 624, 126, 454, 455, 414, + 612, 302, 658, 702, 459, 460, 658, 702, 459, 460, + 454, 455, 1031, 1029, 1060, 1061, 414, 723, 892, 658, + 702, 459, 460, 1015, 1027, 930, 769, 454, 455, 414, + 1025, 698, 550, 1035, 722, 659, 658, 702, 459, 460, + 454, 455, 301, 303, 630, 304, 1030, 414, 609, 658, + 702, 459, 460, 334,-32766, 288, 287, 401, 454, 455, + 596, 405, 279, 202, 80, 689, 587, 658, 702, 459, + 460, 79, 48, 414, 43, 34, 33, 414, 792, 915, + 30, 889, 898, 0, 454, 455, 895, 593, 454, 455, + 566, 533, 443, 658, 702, 459, 460, 658, 702, 459, + 460, 438, 380, 360, 414, 25, 24, 23, -119, 870, + 542, 474, 894, 871, 415, 454, 455, -118, 574, 419, + 0, 331, 1009, 0, 658, 702, 459, 460, 956, 1056, + 929, 0, 1026, 1010, 1014, 1028, 914, 902, 900, 901, + 899 ); protected static $yycheck = array( - 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, 98, 99, 49, 125, 51, + 2, 3, 4, 5, 6, 28, 29, 30, 31, 11, + 12, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 43, 44, 63, 7, 62, 63, 49, 75, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 27, 63, 64, 65, 66, 67, 7, 7, 99, 71, - 72, 73, 149, 75, 105, 77, 27, 79, 80, 81, - 82, 146, 84, 114, 86, 150, 88, 0, 89, 91, - 143, 63, 78, 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, - 136, 153, 26, 75, 28, 29, 30, 31, 32, 33, + 72, 73, 75, 75, 105, 77, 27, 79, 80, 81, + 82, 73, 84, 114, 86, 0, 88, 10, 89, 91, + 127, 128, 63, 95, 96, 97, 98, 98, 100, 101, + 98, 99, 104, 26, 124, 107, 108, 7, 109, 110, + 137, 138, 149, 115, 116, 117, 147, 118, 119, 120, + 121, 7, 12, 7, 126, 127, 146, 129, 130, 131, + 132, 133, 134, 135, 8, 9, 10, 7, 140, 141, + 142, 143, 32, 145, 146, 143, 148, 150, 150, 151, + 7, 153, 26, 145, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 147, 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, 149, - 100, 101, 32, 63, 104, 137, 138, 107, 108, 73, - 146, 127, 128, 63, 12, 115, 75, 8, 9, 10, + 44, 45, 46, 47, 48, 146, 50, 67, 145, 8, + 9, 10, 145, 73, 8, 9, 10, 77, 62, 32, + 80, 81, 82, 7, 84, 146, 86, 26, 88, 28, + 29, 91, 26, 75, 7, 95, 96, 97, 149, 149, + 100, 101, 32, 73, 104, 7, 7, 107, 108, 28, + 29, 30, 31, 32, 12, 115, 63, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 149, 32, 26, 149, 67, 73, 140, - 75, 76, 143, 73, 144, 145, 146, 77, 7, 7, - 80, 81, 82, 149, 84, 119, 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, - 73, 32, 100, 101, 114, 147, 104, 73, 63, 107, - 108, 7, 98, 12, 144, 145, 146, 115, 98, 149, - 8, 9, 10, 109, 110, 8, 9, 10, 75, 109, + 23, 24, 25, 73, 32, 26, 78, 67, 73, 8, + 9, 10, 7, 73, 144, 145, 146, 77, 7, 119, + 80, 81, 82, 149, 84, 149, 86, 26, 88, 52, + 53, 91, 8, 9, 10, 95, 96, 97, 150, 67, + 100, 101, 7, 126, 104, 73, 146, 107, 108, 77, + 26, 12, 80, 81, 82, 115, 84, 8, 86, 99, + 88, 125, 63, 91, 13, 105, 63, 95, 96, 97, + 147, 32, 100, 101, 114, 140, 104, 147, 143, 107, + 108, 153, 98, 12, 144, 145, 146, 115, 98, 149, + 8, 9, 10, 109, 110, 8, 9, 10, 27, 109, 110, 124, 118, 119, 120, 121, 67, 147, 118, 119, - 120, 121, 73, 26, 73, 28, 77, 145, 146, 80, - 81, 82, 78, 84, 7, 86, 12, 88, 63, 7, - 91, 147, 150, 146, 95, 96, 97, 147, 67, 100, - 101, 27, 145, 104, 73, 74, 107, 108, 77, 8, - 146, 80, 81, 82, 115, 84, 145, 86, 73, 88, - 75, 146, 91, 9, 10, 13, 95, 96, 97, 12, - 145, 100, 101, 150, 73, 104, 8, 9, 107, 108, - 26, 67, 28, 13, 145, 146, 115, 73, 147, 32, - 7, 77, 127, 108, 80, 81, 82, 153, 84, 13, - 86, 12, 88, 29, 30, 91, 29, 30, 31, 95, - 96, 97, 68, 69, 100, 101, 145, 146, 104, 27, - 78, 107, 108, 13, 67, 140, 68, 69, 143, 115, - 73, 93, 94, 148, 77, 150, 149, 80, 81, 82, - 78, 84, 13, 86, 12, 88, 13, 146, 91, 43, - 44, 45, 95, 96, 97, 27, 67, 100, 101, 145, - 146, 104, 73, 27, 107, 108, 77, 102, 103, 80, - 81, 82, 115, 84, 27, 86, 12, 88, 136, 27, - 91, 43, 44, 45, 95, 96, 97, 127, 128, 100, - 101, 28, 26, 104, 28, 27, 107, 108, 136, 67, - 145, 146, 145, 146, 115, 73, 8, 9, 10, 77, - 27, 27, 80, 81, 82, 27, 84, 27, 86, 12, - 88, 145, 146, 91, 26, 29, 28, 95, 96, 97, - 50, 67, 100, 101, 145, 146, 104, 73, 32, 107, - 108, 77, 145, 146, 80, 81, 82, 115, 84, 62, - 86, 62, 88, 75, 63, 91, 63, 63, 63, 95, - 96, 97, 63, 63, 100, 101, 64, 70, 104, 90, - 78, 107, 108, 92, 67, 90, 73, 145, 146, 115, - 73, 8, 9, 10, 77, 73, 73, 80, 81, 82, - 73, 84, 73, 86, 73, 88, 73, 73, 91, 26, - 73, 28, 95, 96, 97, 73, 67, 100, 101, 145, - 146, 104, 73, 73, 107, 108, 77, 73, 73, 80, - 81, 82, 115, 84, 73, 86, 73, 88, 78, 75, - 91, 75, 75, 75, 95, 96, 97, 75, 78, 100, - 101, 82, 90, 104, 98, 90, 107, 108, 105, 119, - 43, 44, 145, 146, 115, 90, 49, 119, 51, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 108, 109, 110, 111, 112, 113, 92, 71, 72, - 73, 98, 106, 67, 145, 146, 79, 123, 149, 73, - 46, 47, 48, 77, 50, 124, 80, 81, 82, 122, - 84, 122, 86, 125, 88, 124, 62, 91, 8, 9, - 10, 95, 96, 97, 124, 108, 100, 101, 124, 126, - 104, 125, 125, 107, 108, 136, 26, 139, 28, 29, - 30, 115, 145, 147, 139, 143, 129, 130, 131, 132, - 133, 134, 135, 139, 139, 98, 143, 140, 141, 142, - 143, 8, 9, 10, 139, 148, 109, 110, 139, 139, - 139, 145, 146, 145, 147, 118, 119, 120, 121, 26, - 143, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 98, 99, 144, 146, 145, 145, 145, 105, 145, 147, - 145, 109, 110, 145, 147, 145, 145, 98, 99, 145, - 118, 119, 120, 121, 105, 145, 145, 145, 109, 110, - 145, 145, 145, 145, 98, 99, 145, 118, 119, 120, - 121, 105, 140, 145, 145, 109, 110, 146, 145, 147, - 8, 9, 10, 145, 118, 119, 120, 121, 145, 140, - 145, 145, 145, 145, 152, 151, 147, 98, 26, 145, - 28, 29, 30, 31, 32, 146, 140, 146, 109, 110, - 98, 146, 148, 146, 98, 146, 146, 118, 119, 120, - 121, 109, 110, 146, 146, 109, 110, 98, 146, 148, - 118, 119, 120, 121, 118, 119, 120, 121, 109, 110, - 148, 147, 83, 147, 98, 147, 147, 118, 119, 120, - 121, 147, 147, 147, 147, 109, 110, 98, 147, 147, - 147, 85, 147, 147, 118, 119, 120, 121, 109, 110, - 147, 149, 148, 148, 98, 148, 147, 118, 119, 120, - 121, 87, 148, 148, 148, 109, 110, 8, 9, 10, - 148, 148, 98, 147, 118, 119, 120, 121, 148, 148, - 148, 148, 148, 109, 110, 26, 148, 28, 29, 30, - 31, 148, 118, 119, 120, 121, 29, 30, 31, 32, - 33, 34, 35, 36, 98, 148, 152, 149, 149, 149, - 149, 149, 149, 149, 149, 109, 110, 149, 149, 149, - 149, 149, 149, -1, 118, 119, 120, 121, 149, 149, - 149, 149, 149, -1, -1, -1, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152 + 120, 121, 73, 26, 145, 28, 77, 145, 146, 80, + 81, 82, 63, 84, 26, 86, 99, 88, 149, 75, + 91, 147, 105, 13, 95, 96, 97, 147, 67, 100, + 101, 114, 13, 104, 73, 146, 107, 108, 77, 146, + 12, 80, 81, 82, 115, 84, 145, 86, 13, 88, + 9, 10, 91, 8, 9, 10, 95, 96, 97, 78, + 32, 100, 101, 13, 147, 104, 152, 26, 107, 108, + 13, 26, 12, 124, 145, 146, 115, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 73, 78, 75, 76, 150, 67, 28, 29, 30, 73, + 78, 73, 8, 9, 10, 77, 145, 146, 80, 81, + 82, 27, 84, 73, 86, 12, 88, 136, 27, 91, + 26, 27, 27, 95, 96, 97, 125, 67, 100, 101, + 8, 9, 104, 73, 74, 107, 108, 77, 28, 29, + 80, 81, 82, 115, 84, 27, 86, 12, 88, 136, + 149, 91, 43, 44, 45, 95, 96, 97, 136, 27, + 100, 101, 146, 73, 104, 28, 150, 107, 108, 27, + 67, 32, 146, 145, 146, 115, 73, 46, 47, 48, + 77, 50, 27, 80, 81, 82, 146, 84, 27, 86, + 12, 88, 62, 62, 91, 43, 44, 45, 95, 96, + 97, 27, 67, 100, 101, 145, 146, 104, 73, 119, + 107, 108, 77, 62, 63, 80, 81, 82, 115, 84, + 50, 86, 12, 88, 143, 63, 91, 146, 68, 69, + 95, 96, 97, 68, 69, 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, 63, 84, 63, 86, 63, 88, 64, 73, 91, + 145, 146, 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, 27, 104, 75, 75, 107, 108, 75, + 8, 9, 10, 145, 146, 115, 75, 75, 75, 43, + 44, 82, 8, 9, 10, 49, 78, 51, 26, 78, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 63, + 26, 78, 28, 29, 30, 145, 146, 71, 72, 90, + 67, 75, 90, 43, 44, 79, 73, 90, 90, 49, + 77, 51, 90, 80, 81, 82, 92, 84, 98, 86, + 92, 88, 106, 63, 91, 98, 105, 119, 95, 96, + 97, 71, 72, 100, 101, 75, 122, 104, 119, 79, + 107, 108, 108, 109, 110, 111, 112, 113, 115, 124, + 139, 122, 145, 127, 123, 129, 130, 131, 132, 133, + 134, 135, 124, 8, 9, 10, 124, 141, 142, 124, + 126, 125, 125, 136, 148, 139, 150, 145, 145, 146, + 139, 26, 149, 28, 29, 30, 31, 127, 139, 129, + 130, 131, 132, 133, 134, 135, 139, 139, 139, 67, + 139, 141, 142, 147, 149, 73, 143, 145, 148, 77, + 150, 143, 80, 81, 82, 143, 84, 144, 86, 145, + 88, 145, 145, 91, 145, 145, 145, 95, 96, 97, + 145, 145, 100, 101, 98, 99, 104, 145, 145, 107, + 108, 105, 145, 145, 145, 109, 110, 115, 46, 47, + 48, 98, 99, 145, 118, 119, 120, 121, 105, 145, + 145, 145, 109, 110, 62, 63, 145, 145, 98, 99, + 145, 118, 119, 120, 121, 105, 140, 145, 146, 109, + 110, 146, 145, 147, 8, 9, 10, 145, 118, 119, + 120, 121, 145, 140, 145, 145, 145, 149, 146, -1, + 147, 147, 26, 146, 28, 29, 30, 31, 32, 98, + 140, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 109, 110, 98, 146, 146, 146, 98, 146, 146, 118, + 119, 120, 121, 109, 110, 146, 146, 109, 110, 98, + 146, 148, 118, 119, 120, 121, 118, 119, 120, 121, + 109, 110, 147, 147, 147, 147, 98, 147, 147, 118, + 119, 120, 121, 147, 147, 147, 147, 109, 110, 98, + 147, 147, 83, 147, 147, 147, 118, 119, 120, 121, + 109, 110, 148, 148, 73, 148, 75, 98, 147, 118, + 119, 120, 121, 148, 148, 148, 148, 148, 109, 110, + 85, 148, 148, 148, 148, 147, 87, 118, 119, 120, + 121, 148, 148, 98, 148, 148, 148, 98, 147, 108, + 148, 151, 149, -1, 109, 110, 149, 149, 109, 110, + 149, 149, 149, 118, 119, 120, 121, 118, 119, 120, + 121, 149, 149, 149, 98, 149, 149, 149, 149, 149, + 149, 140, 149, 149, 143, 109, 110, 149, 152, 148, + -1, 150, 152, -1, 118, 119, 120, 121, 152, 152, + 152, -1, 152, 152, 152, 152, 152, 152, 152, 152, + 152 ); protected static $yybase = array( - 0, 722, 739, 756, 806, 687, 849, -1, 884, 802, - 789, 224, 836, 866, 230, 819, 916, 916, 916, 916, - 916, 468, 476, 492, 523, 492, 524, -2, -2, -2, - 180, 110, 212, 212, 579, 212, 429, 547, 504, 311, - 354, 279, 397, 472, 472, 472, 472, 656, 656, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 33, 738, 637, 636, 737, - 736, 735, 733, 870, 605, 812, 784, 786, 508, 788, - 794, 805, 803, 797, 682, 796, 732, 795, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 327, - 176, 381, 538, 408, 394, 322, 322, 322, 322, 322, + 0, 763, 746, 780, 838, 851, 899, -1, 929, 834, + 821, 230, 224, 925, 868, 881, 956, 956, 956, 956, + 956, 468, 445, 434, 524, 434, 482, -2, -2, -2, + 180, 110, 279, 279, 643, 279, 453, 560, 528, 410, + 311, 212, 378, 485, 485, 485, 485, 742, 742, 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, 761, 656, 657, 760, + 759, 757, 752, 913, 619, 914, 764, 815, 492, 816, + 826, 827, 828, 829, 666, 836, 176, 219, 916, 833, + 444, 264, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 241, 241, 126, 241, 241, 241, 241, 289, + 391, 472, 77, 636, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 276, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 219, 219, 506, 487, 613, 503, 503, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 171, -18, 740, 536, 969, 414, 862, 783, 783, 783, - 783, 417, -24, 977, 977, 977, 977, 217, -6, -6, - -6, -6, 670, 670, 670, 670, 200, 168, -31, 11, - 11, 633, 633, 542, 677, 446, 446, 325, 325, 325, - 325, 325, 325, 325, 325, 325, 325, 518, 557, 478, - 478, 832, 832, 94, 94, 94, 94, 400, 382, 14, - 284, 74, 684, 684, 684, 281, -53, 600, 341, 341, - 341, 590, 629, 532, 244, 64, 64, 64, 109, 109, - 109, 109, -43, 721, 109, 109, 109, 255, 78, 78, - 175, -65, 521, 657, 625, 626, 437, 661, -23, 667, - 667, 667, 263, 623, 398, 384, 405, 644, 49, 263, - 33, 146, 395, 227, 520, 679, 567, 719, 658, 251, - 138, 150, 416, 160, 151, 97, 728, 723, 868, 869, - 59, 28, 634, 520, 520, 520, 60, 402, 160, -77, - 627, 265, 114, 744, 237, 546, 814, 563, 867, 559, - 543, 563, 594, 546, 817, 817, 817, 817, 546, 543, - 867, 867, 546, 542, 867, 362, 546, 617, 543, 619, - 817, 707, 706, 563, 602, 604, 867, 867, 867, 559, - 546, 817, 583, 678, 100, 867, 817, 583, 546, 594, - 87, 530, 540, 815, 826, 754, 564, 749, 570, 578, - 843, 842, 853, 561, 593, 844, 782, 632, 705, 553, - 392, 539, 535, 534, 628, 533, 630, 623, 643, 527, - 527, 527, 611, 660, 611, 527, 527, 527, 527, 527, - 527, 527, 527, 905, 655, 635, 621, 599, 702, 410, - 632, 595, 426, 751, 632, 875, 883, 734, 584, 841, - 880, 611, 904, 711, 252, 450, 840, 519, 591, 611, - 833, 611, 755, 611, 874, 580, 813, 632, 527, 873, - 903, 902, 901, 900, 899, 898, 897, 531, 896, 701, - 882, 271, 848, 644, 659, 572, 700, 314, 895, 611, - 611, 757, 721, 611, 694, 708, 892, 691, 879, 529, - 529, 529, 529, 618, 894, 629, 881, 611, 586, 864, - 314, 432, 537, 871, 690, 759, 771, 760, 596, 872, - 529, 529, 529, 529, 824, 768, 469, 801, 528, 688, - 891, 890, 893, 685, 473, 772, 552, 597, 598, 825, - 683, 878, 525, 645, 616, 592, 767, 585, 889, 681, - 680, 718, 0, 0, 0, 0, 0, 0, 0, 0, + 338, 670, 670, 670, 670, 670, 670, 670, 670, 670, + 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, + 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, + 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, + 670, 670, 670, 395, 395, -17, -17, 327, 487, 171, + 460, 674, 418, 765, -23, 886, 662, 662, 662, 662, + 191, 4, 4, 4, 4, 217, 884, 884, 884, 884, + 399, 399, 399, 399, 267, 200, -31, 157, 157, 654, + 654, 553, 800, 502, 502, 459, 459, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 591, 589, 856, + 856, -37, -37, -37, -37, 469, 372, 363, 168, 140, + 481, 481, 481, 812, 812, 812, 170, 2, 611, 390, + 390, 390, 623, 647, 608, 376, 175, 175, 175, 175, + 431, 762, 175, 175, 175, 239, -27, -27, 367, 366, + 634, 837, 638, 820, 461, 669, -20, 682, 682, 682, + 294, 630, 515, 510, 488, 668, 49, 294, 33, 440, + 457, 243, 520, 726, 565, 707, 724, 251, 209, 299, + 475, 29, 128, 59, 718, 708, 911, 910, 114, 163, + 652, 520, 520, 520, 116, 331, 29, 351, 501, 501, + 501, 501, 501, 501, 501, 501, 691, 37, 60, 725, + 8, 489, 877, 574, 882, 566, 549, 574, 590, 489, + 874, 874, 874, 874, 489, 549, 882, 882, 489, 553, + 882, 143, 489, 639, 549, 624, 874, 617, 642, 574, + 603, 641, 882, 882, 882, 566, 489, 874, 631, 683, + 186, 882, 874, 631, 489, 590, 85, 441, 550, 876, + 873, 863, 576, 791, 618, 629, 858, 857, 866, 572, + 585, 864, 878, 678, 672, 580, 400, 552, 548, 541, + 667, 531, 635, 630, 673, 480, 480, 480, 655, 659, + 655, 480, 480, 480, 480, 480, 480, 480, 480, 938, + 646, 671, 648, 599, 695, 407, 678, 627, 291, 792, + 678, 887, 903, 880, 579, 844, 892, 655, 937, 686, + 130, 360, 803, 622, 581, 655, 845, 655, 745, 655, + 883, 586, 818, 678, 480, 758, 936, 935, 934, 933, + 932, 931, 930, 512, 928, 684, 902, 100, 865, 668, + 621, 577, 687, 197, 927, 655, 655, 804, 762, 655, + 747, 732, 908, 690, 891, 926, 647, 893, 655, 637, + 920, 197, 511, 556, 909, 696, 767, 859, 787, 601, + 665, 855, 788, 369, 817, 505, 702, 907, 906, 918, + 703, 385, 789, 561, 602, 594, 847, 709, 888, 632, + 651, 626, 628, 799, 545, 904, 731, 735, 689, 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, -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, 0, 0, 0, -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, @@ -657,32 +666,33 @@ 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, 126, 126, 126, 126, 126, 126, + -2, 126, 126, 126, 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, -18, -18, - 126, -18, 126, -18, 126, 126, 126, 126, 126, 126, + 126, 126, -17, -17, 126, 126, -17, -17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -17, -17, + 0, -17, -17, -17, -17, 126, -17, 126, -17, 921, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - -18, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 126, 126, -18, 647, 126, -18, -18, 0, 0, 0, + 126, 126, 126, 126, 126, 126, -17, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 921, 921, 126, + 126, 0, 0, 126, -17, 126, -17, 126, -17, 126, + -17, 126, 126, 126, 126, 126, -17, -17, -17, -17, + -17, 0, 481, 481, 481, 481, -17, -17, -17, -17, + 644, 644, 644, 921, 921, 921, 921, 921, 921, 481, + 481, 812, 812, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 644, 644, 921, 921, 175, 175, 175, + 175, 175, -27, -27, -27, 128, 0, 0, 0, 0, + 0, 0, 175, 549, -27, -3, -3, -3, -27, -27, + -27, 128, 0, 0, 0, 0, 549, -3, 0, 0, + 0, 882, 0, 0, 0, -3, 494, 494, 494, 494, + 197, 29, 0, 549, 549, 549, 0, 603, 0, 0, + 0, 882, 0, 0, 0, 0, 0, 0, 480, 130, + 844, 245, 208, 0, 0, 0, 0, 0, 0, 0, + 208, 208, 275, 275, 0, 0, 512, 480, 480, 480, 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, 684, 684, 684, - 684, -18, -18, -18, -18, 603, 603, 603, 325, 325, - 325, 325, 325, 325, 684, 684, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 603, 603, 64, 64, - 325, 325, 109, 109, 109, 109, 109, 78, 78, 78, - 151, 0, 0, 0, 109, 543, 78, 222, 222, 222, - 78, 78, 78, 151, 0, 0, 0, 0, 0, 0, - 0, 543, 222, 0, 0, 0, 867, 0, 0, 0, - 222, 378, 378, 378, 378, 314, 160, 0, 543, 543, - 543, 0, 602, 0, 0, 0, 867, 0, 0, 0, - 0, 0, 0, 527, 252, 841, 182, 357, 0, 0, - 0, 0, 0, 0, 0, 357, 357, 423, 423, 0, - 0, 531, 527, 527, 527, 0, 0, 0, 0, 182, - 0, 0, 314 + 0, 0, 245, 0, 0, 197 ); protected static $yydefault = array( @@ -701,114 +711,114 @@ class Parser 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767, 270, 422,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767, 246, 247, - 249, 250, 184, 407, 136, 271, 421, 183, 138,32767, - 32767, 212, 327, 214, 335, 264, 213, 189, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 188, 337, 371, 371, 374,32767,32767,32767,32767,32767, - 32767, 243, 242, 336,32767, 210, 363, 362,32767,32767, + 32767,32767,32767,32767,32767,32767, 378,32767,32767,32767, + 32767,32767, 246, 247, 249, 250, 184, 407, 136, 271, + 421, 183, 26, 147, 138, 95, 377, 182, 126, 212, + 334, 214, 336,32767, 264, 213, 189, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 188, + 335, 371, 371, 374,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, - 211, 333, 215, 334, 217, 338, 216, 233, 234, 231, - 232, 340, 339, 356, 357, 354, 355, 187, 235, 236, - 237, 238, 358, 359, 360, 361, 169, 169, 169,32767, - 32767, 416, 416,32767,32767, 224, 225,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 170,32767, 347, - 348, 300, 300, 127, 127, 127, 127, 127,32767,32767, - 32767,32767, 219, 220, 218,32767,32767, 308,32767,32767, - 32767,32767,32767, 310,32767, 342, 343, 341,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 379, 309,32767, - 32767,32767,32767,32767,32767,32767,32767, 392, 296,32767, - 32767,32767,32767, 289, 114, 116, 64, 326,32767,32767, - 32767,32767,32767, 397, 229,32767,32767,32767,32767,32767, - 32767, 429,32767, 392,32767,32767,32767,32767,32767,32767, - 32767,32767, 241, 221, 222, 223,32767,32767, 396, 390, - 32767,32767,32767,32767,32767, 68, 305,32767, 311,32767, - 32767,32767,32767, 68,32767,32767,32767,32767, 68,32767, - 395, 394, 68,32767, 290, 373, 68, 81,32767, 79, - 32767, 100, 100,32767,32767, 83, 369, 385,32767,32767, - 68,32767, 278, 70, 373,32767,32767, 278, 68,32767, - 32767, 4, 315,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 291,32767,32767, - 32767, 261, 262, 381,32767, 382,32767, 289,32767, 227, - 228, 230, 207,32767, 209, 251, 252, 253, 254, 255, - 256, 257, 259,32767,32767, 294, 297,32767,32767,32767, - 6, 20, 146,32767, 292,32767, 192,32767,32767,32767, - 32767, 424,32767,32767, 186,32767,32767, 22,32767, 142, - 32767, 66,32767, 414,32767,32767, 390, 293, 226,32767, - 32767,32767,32767,32767,32767,32767,32767, 391,32767,32767, - 32767, 121,32767, 326,32767,32767,32767, 82,32767, 190, - 137,32767,32767, 423,32767,32767,32767,32767,32767, 350, - 351, 352, 353, 378,32767,32767,32767, 67,32767,32767, - 84,32767,32767, 390,32767,32767,32767,32767,32767,32767, - 344, 345, 346, 349,32767,32767, 181,32767,32767,32767, - 32767,32767, 390,32767, 125,32767,32767,32767,32767,32767, - 32767,32767, 4,32767, 163,32767,32767,32767,32767,32767, - 32767,32767, 28, 28, 3, 28, 108, 28, 149, 3, - 100, 100, 61, 149, 28, 149, 28, 28, 28, 28, - 28, 28, 28, 156, 28, 28, 28, 28, 28 + 32767,32767,32767, 243, 242, 362, 361, 210, 332, 211, + 333, 215, 337, 217, 339, 216, 233, 234, 231, 232, + 338, 355, 356, 353, 354, 187, 235, 236, 237, 238, + 357, 358, 359, 360, 169, 169, 169,32767,32767, 416, + 416,32767,32767, 224, 225, 346, 347,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767, 170,32767, 300, + 300, 127, 127, 127, 127, 127,32767,32767,32767,32767, + 219, 220, 218, 341, 342, 340,32767,32767, 308,32767, + 32767,32767,32767,32767, 310,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767, 379, 309,32767,32767,32767, + 32767,32767,32767,32767,32767, 392, 296,32767,32767,32767, + 32767, 289, 114, 116, 64, 326,32767,32767,32767,32767, + 32767, 397, 229,32767,32767,32767,32767,32767,32767, 429, + 32767, 392,32767,32767,32767,32767,32767,32767,32767,32767, + 241, 221, 222, 223,32767,32767, 396, 390, 349, 350, + 351, 352, 343, 344, 345, 348,32767,32767,32767,32767, + 32767, 68, 305,32767, 311,32767,32767,32767,32767, 68, + 32767,32767,32767,32767, 68,32767, 395, 394, 68,32767, + 290, 373, 68, 81,32767, 79,32767, 100, 100,32767, + 32767, 83, 369, 385,32767,32767, 68,32767, 278, 70, + 373,32767,32767, 278, 68,32767,32767, 4, 315,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767, 291,32767,32767,32767, 261, 262, 381, + 32767, 382,32767, 289,32767, 227, 228, 230, 207,32767, + 209, 251, 252, 253, 254, 255, 256, 257, 259,32767, + 32767, 294, 297,32767,32767,32767, 6, 20, 146,32767, + 292,32767, 192,32767,32767,32767,32767, 424,32767,32767, + 186,32767,32767, 22,32767, 142,32767, 66,32767, 414, + 32767,32767, 390, 293, 226,32767,32767,32767,32767,32767, + 32767,32767,32767, 391,32767,32767,32767, 121,32767, 326, + 32767,32767,32767, 82,32767, 190, 137,32767,32767, 423, + 32767,32767,32767,32767,32767,32767,32767,32767, 67,32767, + 32767, 84,32767,32767, 390,32767,32767,32767,32767,32767, + 32767,32767,32767, 181,32767,32767,32767,32767,32767, 390, + 32767, 125,32767,32767,32767,32767,32767,32767,32767, 4, + 32767, 163,32767,32767,32767,32767,32767,32767,32767, 28, + 28, 3, 28, 108, 28, 149, 3, 100, 100, 61, + 149, 28, 149, 28, 28, 28, 28, 28, 28, 28, + 156, 28, 28, 28, 28, 28 ); protected static $yygoto = array( - 164, 164, 138, 138, 143, 138, 139, 140, 141, 146, - 148, 177, 166, 162, 162, 162, 162, 143, 143, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 158, - 159, 160, 161, 175, 137, 459, 460, 354, 461, 465, - 466, 467, 468, 469, 470, 471, 472, 812, 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, 373, 374, 375, 508, 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, 523, 523, 523, 523, 523, - 523, 523, 523, 523, 333, 791, 384, 523, 628, 628, - 628, 523, 523, 523, 523, 523, 523, 523, 523, 523, - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, - 523, 523, 523, 463, 463, 463, 463, 463, 463, 1044, - 1044, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 673, 1047, 1044, 754, 474, 474, 739, 739, 1034, - 1034, 504, 404, 404, 404, 404, 404, 404, 1047, 1047, - 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, - 627, 627, 627, 1038, 909, 909, 747, 747, 747, 747, - 747, 379, 572, 503, 503, 529, 499, 486, 583, 501, - 501, 462, 464, 491, 506, 530, 533, 547, 553, 362, - 1, 704, 704, 704, 704, 2, 355, 699, 705, 578, - 524, 524, 524, 524, 524, 524, 524, 524, 524, 538, - 546, 588, 524, 550, 336, 383, 524, 524, 524, 524, - 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, - 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, - 524, 524, 524, 524, 524, 524, 524, 524, 949, 949, - 949, 949, 949, 949, 949, 949, 949, 497, 559, 267, - 949, 268, 334, 335, 949, 949, 949, 949, 949, 949, - 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, - 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, - 949, 949, 949, 949, 949, 949, 994, 170, 571, 475, - 475, 539, 540, 541, 542, 169, 174, 191, 203, 241, - 243, 245, 251, 252, 253, 254, 255, 256, 262, 263, - 264, 265, 289, 290, 315, 316, 317, 560, 561, 562, - 563, 206, 207, 5, 1006, 16, 1031, 6, 313, 626, - 626, 626, 300, 858, 7, 369, 17, 18, 8, 19, - 9, 10, 11, 637, 20, 12, 13, 14, 15, 725, - 710, 708, 706, 708, 596, 477, 734, 729, 510, 511, - 512, 513, 514, 515, 516, 518, 549, 480, 926, 743, - 509, 758, 1013, 1013, 485, 950, 867, 26, 21, 348, - 535, 570, 606, 480, 380, 931, 643, 485, 485, 1029, - 1029, 1029, 519, 810, 476, 476, 900, 905, 906, 763, - 480, 480, 480, 29, 1012, 1014, 1014, 713, 568, 363, - 363, 363, 799, 903, 1005, 903, 645, 766, 714, 996, - 801, 745, 904, 356, 363, 921, 920, 489, 366, 367, - 991, 500, 378, 0, 575, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 423, 0, 0, 0, 0, - 0, 480, 0, 576, 0, 0, 0, 0, 0, 0, - 484, 0, 0, 0, 0, 0, 0, 0, 0, 507, - 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, 490 + 168, 168, 138, 138, 143, 138, 139, 140, 141, 146, + 148, 186, 170, 166, 166, 166, 166, 143, 143, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 162, + 163, 164, 165, 184, 137, 475, 476, 362, 477, 481, + 482, 483, 484, 485, 486, 487, 488, 819, 142, 144, + 145, 147, 179, 181, 185, 247, 249, 251, 253, 255, + 256, 257, 258, 259, 266, 267, 268, 269, 283, 284, + 310, 311, 312, 381, 382, 383, 524, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 149, 150, 151, 169, 152, 171, 153, 243, 174, 154, + 155, 158, 244, 159, 135, 539, 680, 526, 527, 528, + 529, 530, 531, 532, 534, 560, 746, 746, 1041, 1041, + 634, 634, 634, 539, 539, 539, 539, 539, 539, 539, + 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, + 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, + 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, + 539, 539, 539, 539, 539, 479, 479, 479, 479, 479, + 479, 502, 341, 1020, 1020, 479, 479, 479, 479, 479, + 479, 479, 479, 479, 479, 324, 761, 490, 490, 308, + 1051, 1051, 520, 1036, 1036, 1036, 635, 635, 635, 420, + 420, 420, 420, 420, 420, 1019, 1054, 1051, 1045, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 1054, + 1054, 916, 916, 754, 754, 754, 754, 754, 554, 557, + 595, 370, 371, 371, 371, 561, 344, 399, 590, 540, + 1, 275, 363, 276, 371, 2, 551, 577, 711, 711, + 711, 711, 386, 570, 706, 712, 585, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 5, + 1001, 16, 578, 6, 798, 400, 377, 513, 1021, 1021, + 7, 1038, 17, 18, 8, 19, 9, 10, 11, 865, + 20, 12, 13, 14, 15, 492, 492, 750, 928, 927, + 387, 579, 519, 519, 545, 515, 374, 375, 765, 953, + 517, 517, 478, 480, 507, 522, 546, 549, 558, 564, + 644, 342, 343, 613, 396, 491, 491, 953, 953, 953, + 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, + 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, + 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, + 953, 953, 953, 953, 953, 953, 953, 953, 953, 160, + 525, 954, 907, 650, 501, 817, 770, 1013, 720, 998, + 582, 806, 0, 0, 0, 0, 0, 501, 501, 0, + 172, 173, 175, 388, 389, 390, 391, 157, 180, 182, + 200, 248, 250, 252, 254, 260, 261, 262, 263, 264, + 270, 271, 272, 273, 285, 286, 313, 314, 315, 392, + 393, 394, 395, 161, 176, 245, 246, 177, 178, 633, + 633, 633, 496, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 496, 938, 0, 0, 732, + 717, 715, 713, 715, 603, 493, 741, 736, 912, 913, + 933, 0, 496, 496, 496, 0, 0, 0, 874, 26, + 21, 356, 0, 0, 910, 1012, 910, 364, 0, 0, + 0, 505, 0, 911, 535, 516, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 29, 0, 0, 0, 439, + 575, 0, 0, 0, 0, 0, 0, 583, 0, 0, + 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, + 0, 496, 0, 0, 0, 0, 0, 0, 0, 0, + 500, 0, 0, 0, 0, 0, 0, 0, 0, 523 ); protected static $yygcheck = array( @@ -822,84 +832,83 @@ 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, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 50, 74, 74, 39, 8, 8, - 8, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 25, 25, 25, 25, 25, 39, 32, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 55, 55, 55, 55, + 7, 7, 7, 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, 117, - 117, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 32, 117, 117, 61, 91, 91, 55, 55, 55, - 55, 85, 39, 39, 39, 39, 39, 39, 117, 117, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 7, 7, 7, 116, 39, 39, 39, 39, 39, 39, - 39, 33, 33, 33, 33, 33, 33, 77, 39, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 5, - 2, 39, 39, 39, 39, 2, 29, 39, 39, 39, - 94, 94, 94, 94, 94, 94, 94, 94, 94, 42, - 42, 42, 94, 48, 48, 48, 94, 94, 94, 94, + 39, 39, 39, 39, 39, 91, 91, 91, 91, 91, + 91, 77, 50, 93, 93, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 100, 61, 91, 91, 100, + 116, 116, 85, 93, 93, 93, 8, 8, 8, 39, + 39, 39, 39, 39, 39, 93, 116, 116, 115, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 116, + 116, 39, 39, 39, 39, 39, 39, 39, 42, 42, + 42, 5, 98, 98, 98, 48, 48, 48, 39, 94, + 2, 46, 29, 46, 98, 2, 22, 22, 39, 39, + 39, 39, 98, 103, 39, 39, 39, 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, 5, 103, 46, - 101, 46, 50, 50, 101, 101, 101, 101, 101, 101, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 14, + 107, 14, 31, 14, 74, 74, 30, 5, 92, 92, + 14, 113, 14, 14, 14, 14, 14, 14, 14, 78, + 14, 14, 14, 14, 14, 97, 97, 57, 99, 99, + 33, 33, 33, 33, 33, 33, 9, 9, 62, 101, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 11, 50, 50, 52, 10, 94, 94, 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, 108, 102, 31, 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, 59, 14, 114, 14, 100, 6, - 6, 6, 100, 78, 14, 30, 14, 14, 14, 14, - 14, 14, 14, 11, 14, 14, 14, 14, 14, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 4, 16, 57, - 26, 62, 93, 93, 26, 104, 16, 16, 16, 16, - 22, 22, 52, 4, 10, 59, 12, 26, 26, 93, - 93, 93, 16, 77, 97, 97, 89, 59, 59, 63, - 4, 4, 4, 16, 93, 92, 92, 49, 16, 98, - 98, 98, 76, 59, 59, 59, 13, 13, 13, 13, - 13, 13, 59, 40, 98, 99, 99, 40, 9, 9, - 107, 40, 98, -1, 84, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 40, -1, -1, -1, -1, - -1, 4, -1, 40, -1, -1, -1, -1, -1, -1, - 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, 77 + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 13, + 26, 102, 89, 12, 26, 77, 63, 59, 49, 106, + 84, 76, -1, -1, -1, -1, -1, 26, 26, -1, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 6, + 6, 6, 4, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4, 59, -1, -1, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 59, 59, + 16, -1, 4, 4, 4, -1, -1, -1, 16, 16, + 16, 16, -1, -1, 59, 59, 59, 40, -1, -1, + -1, 40, -1, 59, 16, 40, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 16, -1, -1, -1, 40, + 16, -1, -1, -1, -1, -1, -1, 40, -1, -1, + -1, -1, -1, 77, -1, -1, -1, -1, -1, -1, + -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, + 4, -1, -1, -1, -1, -1, -1, -1, -1, 4 ); protected static $yygbase = array( - 0, 0, -364, 0, 111, -93, 378, 199, 117, 139, - 43, 52, 23, 271, -220, 0, 32, 0, 0, 0, - 0, 0, 386, 0, 0, -30, 390, 0, 0, 190, - 107, 68, 146, -58, 0, 0, 0, 0, 0, -87, - 75, 0, -45, 0, 0, 0, -304, 0, -66, 38, - -298, 0, 82, 0, 0, -92, 0, 122, 0, 47, - 0, 143, 72, 35, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -172, 0, 33, 170, 91, 0, - 0, 0, 0, 0, 57, 148, 358, 0, 0, 53, - 0, -116, 164, 131, 48, 0, 0, 153, 151, 166, - 71, 96, 133, 105, 74, 0, 0, 56, 142, 0, - 0, 0, 0, 0, 104, 0, 168, -140, 0 + 0, 0, -361, 0, 145, -99, 458, 119, 195, -11, + -53, 1, -26, 216, -301, 0, 88, 0, 0, 0, + 0, 0, 202, 0, 0, -30, 370, 0, 0, 196, + 18, 24, 81, 53, 0, 0, 0, 0, 0, -78, + 93, 0, -74, 0, 0, 0, -369, 0, -92, -27, + -256, 0, -5, 0, 0, -161, 0, 22, 0, 72, + 0, 155, -19, -24, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, -34, 124, 19, 0, + 0, 0, 0, 0, -33, 159, 57, 0, 0, -7, + 0, -112, 9, -126, 56, 0, 0, 26, -87, 8, + -133, 156, 42, 51, 0, 0, -31, 97, 0, 0, + 0, 0, 0, 31, 0, 173, -117, 0 ); protected static $yygdefault = array( - -32768, 430, 3, 621, 447, 481, 648, 649, 650, 358, - 357, 638, 644, 543, 4, 646, 859, 344, 653, 345, - 552, 655, 493, 657, 658, 136, 448, 359, 360, 494, - 368, 536, 672, 257, 365, 674, 346, 676, 681, 347, - 577, 558, 520, 449, 415, 531, 266, 502, 527, 712, - 332, 720, 609, 728, 731, 450, 521, 742, 420, 902, - 376, 753, 759, 764, 767, 392, 381, 548, 771, 772, - 305, 776, 584, 585, 790, 287, 798, 811, 388, 877, - 879, 451, 452, 487, 557, 473, 492, 896, 382, 899, - 453, 454, 400, 401, 917, 914, 338, 999, 337, 417, - 299, 984, 172, 544, 985, 951, 424, 1037, 995, 327, - 455, 456, 353, 370, 1032, 405, 1039, 1046, 528 + -32768, 446, 3, 628, 463, 497, 655, 656, 657, 366, + 365, 645, 651, 156, 4, 653, 866, 352, 660, 353, + 563, 662, 509, 664, 665, 136, 464, 367, 368, 510, + 376, 552, 679, 265, 373, 681, 354, 683, 688, 355, + 584, 569, 536, 465, 431, 547, 274, 518, 543, 719, + 340, 727, 616, 735, 738, 466, 537, 749, 436, 909, + 384, 760, 766, 771, 774, 408, 397, 559, 778, 779, + 316, 783, 591, 592, 797, 297, 805, 818, 404, 884, + 886, 467, 468, 503, 568, 489, 508, 903, 398, 906, + 469, 470, 416, 417, 924, 921, 346, 1006, 345, 433, + 307, 991, 992, 555, 957, 440, 1044, 1002, 335, 471, + 472, 361, 378, 1039, 421, 1046, 1053, 544 ); protected static $yylhs = array( @@ -936,17 +945,17 @@ class Parser 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, - 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 + 13, 13, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 80, 80, 80, 80, 102, + 102, 103, 103, 106, 106, 105, 105, 107, 107, 33, + 33, 33, 33, 109, 109, 108, 108, 108, 108, 108, + 110, 110, 93, 93, 97, 97, 92, 92, 111, 111, + 111, 111, 98, 98, 98, 98, 86, 86, 99, 99, + 99, 55, 112, 112, 113, 113, 113, 85, 85, 114, + 114, 115, 115, 115, 115, 100, 100, 100, 100, 116, + 116, 116, 116, 116, 116, 116, 117, 117, 117 ); protected static $yylen = array( @@ -982,11 +991,11 @@ class Parser 1, 1, 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, 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, 1, 1, 1, 3, 2, 1, 1, 3, 4, + 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, 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, @@ -2512,149 +2521,149 @@ class Parser } protected function yyn328($attributes) { - $this->yyval = new Node\Expr\Array_($this->yyastk[$this->stackPos-(4-3)], $attributes); - } - - protected function yyn329($attributes) { - $this->yyval = new Node\Expr\Array_($this->yyastk[$this->stackPos-(3-2)], $attributes); - } - - protected function yyn330($attributes) { - $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; - } - - protected function yyn331($attributes) { $this->yyval = new Node\Expr\ClassConstFetch($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn332($attributes) { + protected function yyn329($attributes) { + $this->yyval = new Node\Expr\Array_($this->yyastk[$this->stackPos-(4-3)], $attributes); + } + + protected function yyn330($attributes) { + $this->yyval = new Node\Expr\Array_($this->yyastk[$this->stackPos-(3-2)], $attributes); + } + + protected function yyn331($attributes) { $this->yyval = $this->yyastk[$this->stackPos-(1-1)]; } - protected function yyn333($attributes) { + protected function yyn332($attributes) { $this->yyval = new Node\Expr\BinaryOp\BooleanOr($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn334($attributes) { + protected function yyn333($attributes) { $this->yyval = new Node\Expr\BinaryOp\BooleanAnd($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn335($attributes) { + protected function yyn334($attributes) { $this->yyval = new Node\Expr\BinaryOp\LogicalOr($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn336($attributes) { + protected function yyn335($attributes) { $this->yyval = new Node\Expr\BinaryOp\LogicalAnd($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn337($attributes) { + protected function yyn336($attributes) { $this->yyval = new Node\Expr\BinaryOp\LogicalXor($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn338($attributes) { + protected function yyn337($attributes) { $this->yyval = new Node\Expr\BinaryOp\BitwiseOr($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn339($attributes) { + protected function yyn338($attributes) { $this->yyval = new Node\Expr\BinaryOp\BitwiseAnd($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn340($attributes) { + protected function yyn339($attributes) { $this->yyval = new Node\Expr\BinaryOp\BitwiseXor($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn341($attributes) { + protected function yyn340($attributes) { $this->yyval = new Node\Expr\BinaryOp\Concat($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn342($attributes) { + protected function yyn341($attributes) { $this->yyval = new Node\Expr\BinaryOp\Plus($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn343($attributes) { + protected function yyn342($attributes) { $this->yyval = new Node\Expr\BinaryOp\Minus($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn344($attributes) { + protected function yyn343($attributes) { $this->yyval = new Node\Expr\BinaryOp\Mul($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn345($attributes) { + protected function yyn344($attributes) { $this->yyval = new Node\Expr\BinaryOp\Div($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn346($attributes) { + protected function yyn345($attributes) { $this->yyval = new Node\Expr\BinaryOp\Mod($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn347($attributes) { + protected function yyn346($attributes) { $this->yyval = new Node\Expr\BinaryOp\ShiftLeft($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn348($attributes) { + protected function yyn347($attributes) { $this->yyval = new Node\Expr\BinaryOp\ShiftRight($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn349($attributes) { + protected function yyn348($attributes) { $this->yyval = new Node\Expr\BinaryOp\Pow($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn350($attributes) { + protected function yyn349($attributes) { $this->yyval = new Node\Expr\UnaryPlus($this->yyastk[$this->stackPos-(2-2)], $attributes); } - protected function yyn351($attributes) { + protected function yyn350($attributes) { $this->yyval = new Node\Expr\UnaryMinus($this->yyastk[$this->stackPos-(2-2)], $attributes); } - protected function yyn352($attributes) { + protected function yyn351($attributes) { $this->yyval = new Node\Expr\BooleanNot($this->yyastk[$this->stackPos-(2-2)], $attributes); } - protected function yyn353($attributes) { + protected function yyn352($attributes) { $this->yyval = new Node\Expr\BitwiseNot($this->yyastk[$this->stackPos-(2-2)], $attributes); } - protected function yyn354($attributes) { + protected function yyn353($attributes) { $this->yyval = new Node\Expr\BinaryOp\Identical($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn355($attributes) { + protected function yyn354($attributes) { $this->yyval = new Node\Expr\BinaryOp\NotIdentical($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn356($attributes) { + protected function yyn355($attributes) { $this->yyval = new Node\Expr\BinaryOp\Equal($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn357($attributes) { + protected function yyn356($attributes) { $this->yyval = new Node\Expr\BinaryOp\NotEqual($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn358($attributes) { + protected function yyn357($attributes) { $this->yyval = new Node\Expr\BinaryOp\Smaller($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn359($attributes) { + protected function yyn358($attributes) { $this->yyval = new Node\Expr\BinaryOp\SmallerOrEqual($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn360($attributes) { + protected function yyn359($attributes) { $this->yyval = new Node\Expr\BinaryOp\Greater($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn361($attributes) { + protected function yyn360($attributes) { $this->yyval = new Node\Expr\BinaryOp\GreaterOrEqual($this->yyastk[$this->stackPos-(3-1)], $this->yyastk[$this->stackPos-(3-3)], $attributes); } - protected function yyn362($attributes) { + protected function yyn361($attributes) { $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 yyn363($attributes) { + protected function yyn362($attributes) { $this->yyval = new Node\Expr\Ternary($this->yyastk[$this->stackPos-(4-1)], null, $this->yyastk[$this->stackPos-(4-4)], $attributes); } + protected function yyn363($attributes) { + $this->yyval = new Node\Expr\ArrayDimFetch($this->yyastk[$this->stackPos-(4-1)], $this->yyastk[$this->stackPos-(4-3)], $attributes); + } + protected function yyn364($attributes) { $this->yyval = $this->yyastk[$this->stackPos-(3-2)]; } diff --git a/test/code/parser/expr/constant_expr.test b/test/code/parser/expr/constant_expr.test index 9c2d83b..6196a9f 100644 --- a/test/code/parser/expr/constant_expr.test +++ b/test/code/parser/expr/constant_expr.test @@ -31,6 +31,7 @@ const T_24 = 1 == "1"; const T_25 = 1 + 2 * 3; const T_26 = "1" + 2 + "3"; const T_27 = 2 ** 3; +const T_28 = [1, 2, 3][1]; ----- array( 0: Stmt_Const( @@ -467,4 +468,41 @@ array( ) ) ) + 27: Stmt_Const( + consts: array( + 0: Const( + name: T_28 + value: Expr_ArrayDimFetch( + var: Expr_Array( + items: array( + 0: Expr_ArrayItem( + key: null + value: Scalar_LNumber( + value: 1 + ) + byRef: false + ) + 1: Expr_ArrayItem( + key: null + value: Scalar_LNumber( + value: 2 + ) + byRef: false + ) + 2: Expr_ArrayItem( + key: null + value: Scalar_LNumber( + value: 3 + ) + byRef: false + ) + ) + ) + dim: Scalar_LNumber( + value: 1 + ) + ) + ) + ) + ) ) \ No newline at end of file