diff --git a/php5/php5.go b/php5/php5.go index cb1facd..07307a3 100644 --- a/php5/php5.go +++ b/php5/php5.go @@ -148,26 +148,26 @@ const T_NOELSE = 57458 const T_PLUS_EQUAL = 57459 const T_MINUS_EQUAL = 57460 const T_MUL_EQUAL = 57461 -const T_DIV_EQUAL = 57462 -const T_CONCAT_EQUAL = 57463 -const T_MOD_EQUAL = 57464 -const T_AND_EQUAL = 57465 -const T_OR_EQUAL = 57466 -const T_XOR_EQUAL = 57467 -const T_SL_EQUAL = 57468 -const T_SR_EQUAL = 57469 -const T_POW_EQUAL = 57470 +const T_POW_EQUAL = 57462 +const T_DIV_EQUAL = 57463 +const T_CONCAT_EQUAL = 57464 +const T_MOD_EQUAL = 57465 +const T_AND_EQUAL = 57466 +const T_OR_EQUAL = 57467 +const T_XOR_EQUAL = 57468 +const T_SL_EQUAL = 57469 +const T_SR_EQUAL = 57470 const T_BOOLEAN_OR = 57471 const T_BOOLEAN_AND = 57472 -const T_IS_EQUAL = 57473 -const T_IS_NOT_EQUAL = 57474 -const T_IS_IDENTICAL = 57475 -const T_IS_NOT_IDENTICAL = 57476 -const T_IS_SMALLER_OR_EQUAL = 57477 -const T_IS_GREATER_OR_EQUAL = 57478 -const T_SL = 57479 -const T_SR = 57480 -const T_POW = 57481 +const T_POW = 57473 +const T_SL = 57474 +const T_SR = 57475 +const T_IS_IDENTICAL = 57476 +const T_IS_NOT_IDENTICAL = 57477 +const T_IS_EQUAL = 57478 +const T_IS_NOT_EQUAL = 57479 +const T_IS_SMALLER_OR_EQUAL = 57480 +const T_IS_GREATER_OR_EQUAL = 57481 var yyToknames = [...]string{ "$end", @@ -286,6 +286,29 @@ var yyToknames = [...]string{ "T_COALESCE", "T_SPACESHIP", "T_NOELSE", + "T_PLUS_EQUAL", + "T_MINUS_EQUAL", + "T_MUL_EQUAL", + "T_POW_EQUAL", + "T_DIV_EQUAL", + "T_CONCAT_EQUAL", + "T_MOD_EQUAL", + "T_AND_EQUAL", + "T_OR_EQUAL", + "T_XOR_EQUAL", + "T_SL_EQUAL", + "T_SR_EQUAL", + "T_BOOLEAN_OR", + "T_BOOLEAN_AND", + "T_POW", + "T_SL", + "T_SR", + "T_IS_IDENTICAL", + "T_IS_NOT_IDENTICAL", + "T_IS_EQUAL", + "T_IS_NOT_EQUAL", + "T_IS_SMALLER_OR_EQUAL", + "T_IS_GREATER_OR_EQUAL", "'\"'", "'`'", "'{'", @@ -305,38 +328,15 @@ var yyToknames = [...]string{ "'@'", "'$'", "','", - "'='", - "T_PLUS_EQUAL", - "T_MINUS_EQUAL", - "T_MUL_EQUAL", - "T_DIV_EQUAL", - "T_CONCAT_EQUAL", - "T_MOD_EQUAL", - "T_AND_EQUAL", - "T_OR_EQUAL", - "T_XOR_EQUAL", - "T_SL_EQUAL", - "T_SR_EQUAL", - "T_POW_EQUAL", - "T_BOOLEAN_OR", - "T_BOOLEAN_AND", "'|'", + "'='", "'^'", - "T_IS_EQUAL", - "T_IS_NOT_EQUAL", - "T_IS_IDENTICAL", - "T_IS_NOT_IDENTICAL", - "'<'", - "T_IS_SMALLER_OR_EQUAL", - "'>'", - "T_IS_GREATER_OR_EQUAL", - "T_SL", - "T_SR", - "'.'", "'*'", "'/'", "'%'", - "T_POW", + "'<'", + "'>'", + "'.'", } var yyStatenames = [...]string{} @@ -344,7 +344,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php5/php5.y:3825 +//line php5/php5.y:3857 type foreachVariable struct { node node.Node @@ -388,21 +388,21 @@ var yyExca = [...]int{ -2, 411, -1, 114, 78, 451, - 123, 447, + 146, 447, -2, 457, -1, 154, 104, 435, 105, 435, -2, 433, -1, 204, - 121, 306, - 124, 306, + 144, 306, + 147, 306, -2, 430, -1, 205, 104, 435, 105, 435, - 121, 307, - 124, 307, + 144, 307, + 147, 307, -2, 433, -1, 271, 78, 451, @@ -411,95 +411,95 @@ var yyExca = [...]int{ 78, 334, -2, 413, -1, 302, - 123, 448, + 146, 448, -2, 458, -1, 311, 78, 333, -2, 412, -1, 378, - 153, 0, - 154, 0, - 155, 0, - 156, 0, + 134, 0, + 135, 0, + 136, 0, + 137, 0, -2, 274, -1, 379, - 153, 0, - 154, 0, - 155, 0, - 156, 0, + 134, 0, + 135, 0, + 136, 0, + 137, 0, -2, 275, -1, 380, - 153, 0, - 154, 0, - 155, 0, - 156, 0, + 134, 0, + 135, 0, + 136, 0, + 137, 0, -2, 276, -1, 381, - 153, 0, - 154, 0, - 155, 0, - 156, 0, + 134, 0, + 135, 0, + 136, 0, + 137, 0, -2, 277, -1, 382, - 157, 0, - 158, 0, - 159, 0, - 160, 0, + 138, 0, + 139, 0, + 165, 0, + 166, 0, -2, 278, -1, 383, - 157, 0, - 158, 0, - 159, 0, - 160, 0, + 138, 0, + 139, 0, + 165, 0, + 166, 0, -2, 279, -1, 384, - 157, 0, - 158, 0, - 159, 0, - 160, 0, + 138, 0, + 139, 0, + 165, 0, + 166, 0, -2, 280, -1, 385, - 157, 0, - 158, 0, - 159, 0, - 160, 0, + 138, 0, + 139, 0, + 165, 0, + 166, 0, -2, 281, -1, 392, 104, 435, 105, 435, -2, 433, -1, 400, - 124, 142, + 147, 142, -2, 147, -1, 462, 104, 435, 105, 435, - 124, 514, - 135, 514, + 147, 514, + 158, 514, -2, 433, -1, 463, - 124, 515, - 135, 515, + 147, 515, + 158, 515, -2, 430, -1, 464, 104, 435, 105, 435, -2, 433, -1, 486, - 124, 156, - 135, 156, + 147, 156, + 158, 156, -2, 430, -1, 487, 104, 435, 105, 435, - 124, 157, - 135, 157, + 147, 157, + 158, 157, -2, 433, -1, 493, - 123, 472, + 146, 472, -2, 516, -1, 499, - 123, 472, + 146, 472, -2, 517, -1, 521, 78, 332, @@ -510,71 +510,71 @@ var yyExca = [...]int{ 95, 135, -2, 0, -1, 551, - 124, 142, + 147, 142, -2, 147, -1, 564, - 124, 142, + 147, 142, -2, 147, -1, 581, - 121, 308, - 124, 308, + 144, 308, + 147, 308, -2, 430, -1, 582, 104, 435, 105, 435, - 121, 309, - 124, 309, + 144, 309, + 147, 309, -2, 433, -1, 681, 78, 334, -2, 371, -1, 779, - 153, 0, - 154, 0, - 155, 0, - 156, 0, + 134, 0, + 135, 0, + 136, 0, + 137, 0, -2, 397, -1, 780, - 153, 0, - 154, 0, - 155, 0, - 156, 0, + 134, 0, + 135, 0, + 136, 0, + 137, 0, -2, 398, -1, 781, - 153, 0, - 154, 0, - 155, 0, - 156, 0, + 134, 0, + 135, 0, + 136, 0, + 137, 0, -2, 399, -1, 782, - 153, 0, - 154, 0, - 155, 0, - 156, 0, + 134, 0, + 135, 0, + 136, 0, + 137, 0, -2, 400, -1, 783, - 157, 0, - 158, 0, - 159, 0, - 160, 0, + 138, 0, + 139, 0, + 165, 0, + 166, 0, -2, 401, -1, 784, - 157, 0, - 158, 0, - 159, 0, - 160, 0, + 138, 0, + 139, 0, + 165, 0, + 166, 0, -2, 402, -1, 785, - 157, 0, - 158, 0, - 159, 0, - 160, 0, + 138, 0, + 139, 0, + 165, 0, + 166, 0, -2, 403, -1, 786, - 157, 0, - 158, 0, - 159, 0, - 160, 0, + 138, 0, + 139, 0, + 165, 0, + 166, 0, -2, 404, -1, 789, 78, 333, @@ -586,7 +586,7 @@ var yyExca = [...]int{ 31, 128, 32, 128, 33, 128, - 120, 128, + 143, 128, -2, 0, -1, 914, 95, 140, @@ -595,7 +595,7 @@ var yyExca = [...]int{ 31, 127, 32, 127, 33, 127, - 120, 127, + 143, 127, -2, 0, -1, 943, 93, 136, @@ -606,16 +606,16 @@ var yyExca = [...]int{ 29, 189, -2, 4, -1, 980, - 124, 142, + 147, 142, -2, 147, -1, 997, - 121, 193, + 144, 193, -2, 195, } const yyPrivate = 57344 -const yyLast = 8512 +const yyLast = 9012 var yyAct = [...]int{ @@ -623,300 +623,268 @@ var yyAct = [...]int{ 123, 131, 606, 200, 340, 918, 734, 567, 452, 815, 474, 683, 296, 594, 461, 592, 421, 61, 579, 142, 319, 315, 39, 98, 264, 390, 158, 517, 130, 2, - 444, 115, 289, 192, 653, 118, 138, 140, 447, 544, - 145, 485, 179, 653, 978, 1002, 228, 228, 162, 477, - 941, 331, 940, 43, 7, 493, 959, 121, 330, 937, - 934, 6, 931, 26, 821, 932, 939, 450, 499, 121, - 121, 267, 44, 656, 658, 659, 657, 953, 432, 933, - 921, 897, 853, 737, 192, 657, 709, 562, 954, 632, - 251, 586, 618, 586, 298, 898, 735, 494, 153, 516, - 633, 653, 585, 619, 270, 655, 654, 137, 358, 325, - 179, 560, 272, 586, 793, 204, 311, 556, 510, 316, - 320, 728, 561, 323, 114, 258, 329, 241, 557, 5, - 506, 305, 511, 675, 677, 676, 678, 663, 664, 665, - 656, 658, 659, 657, 507, 543, 339, 141, 653, 359, - 121, 228, 655, 654, 310, 475, 355, 39, 178, 180, - 181, 179, 121, 360, 451, 159, 357, 350, 312, 162, - 356, 201, 1018, 976, 929, 907, 451, 451, 906, 120, - 192, 351, 313, 267, 133, 228, 665, 656, 658, 659, - 657, 120, 120, 904, 117, 861, 855, 653, 134, 791, - 661, 655, 654, 241, 745, 271, 653, 104, 595, 639, - 655, 654, 301, 228, 352, 631, 270, 386, 300, 177, - 176, 425, 630, 624, 272, 673, 674, 671, 672, 675, - 677, 676, 678, 663, 664, 665, 656, 658, 659, 657, - 302, 623, 663, 664, 665, 656, 658, 659, 657, 597, - 232, 232, 228, 175, 178, 180, 181, 179, 596, 595, - 456, 473, 749, 231, 231, 333, 440, 336, 393, 748, - 604, 294, 120, 611, 293, 273, 740, 453, 295, 610, - 287, 281, 254, 228, 303, 253, 399, 160, 265, 977, - 930, 1001, 950, 915, 885, 449, 882, 870, 825, 446, - 814, 727, 693, 634, 131, 396, 625, 621, 509, 430, - 428, 490, 513, 307, 241, 1013, 521, 271, 980, 297, - 892, 472, 139, 297, 504, 999, 824, 593, 818, 682, - 39, 449, 913, 434, 439, 492, 449, 587, 491, 502, - 498, 564, 505, 497, 809, 808, 876, 463, 465, 521, - 551, 126, 400, 121, 537, 232, 541, 288, 278, 275, - 467, 484, 7, 274, 344, 250, 471, 345, 231, 6, - 486, 222, 479, 480, 196, 195, 194, 144, 548, 495, - 122, 135, 436, 437, 989, 546, 552, 273, 448, 232, - 1010, 572, 1009, 572, 577, 572, 580, 458, 228, 400, - 265, 984, 231, 983, 126, 923, 121, 912, 437, 436, - 436, 126, 437, 121, 880, 588, 39, 232, 703, 704, - 229, 703, 704, 230, 448, 811, 805, 804, 798, 448, - 231, 295, 584, 712, 699, 547, 545, 5, 490, 233, - 542, 501, 539, 398, 348, 540, 615, 156, 981, 126, - 905, 121, 605, 423, 1019, 975, 232, 609, 449, 449, - 874, 917, 492, 498, 891, 491, 497, 890, 309, 231, - 308, 126, 888, 229, 732, 120, 230, 578, 581, 228, - 229, 306, 197, 230, 435, 830, 449, 232, 616, 449, - 614, 449, 233, 446, 295, 617, 224, 225, 316, 233, - 231, 987, 320, 257, 637, 638, 810, 521, 730, 702, - 641, 642, 802, 803, 681, 680, 521, 455, 229, 126, - 353, 230, 39, 521, 521, 521, 521, 521, 120, 645, - 695, 696, 648, 531, 259, 120, 650, 233, 635, 438, - 126, 647, 572, 125, 652, 710, 424, 700, 228, 228, - 228, 448, 448, 521, 7, 572, 718, 125, 726, 39, - 39, 6, 91, 126, 971, 731, 531, 572, 580, 569, - 570, 126, 729, 120, 612, 267, 687, 228, 228, 448, - 124, 459, 448, 713, 448, 705, 739, 707, 573, 295, - 723, 574, 454, 427, 295, 733, 282, 286, 260, 261, - 469, 504, 232, 738, 426, 304, 742, 741, 270, 736, - 126, 299, 321, 126, 816, 231, 272, 864, 228, 595, - 228, 518, 686, 515, 62, 512, 744, 449, 508, 5, - 457, 446, 573, 573, 754, 574, 574, 128, 129, 468, - 322, 54, 263, 317, 521, 521, 521, 521, 521, 521, + 444, 115, 289, 978, 959, 118, 138, 140, 447, 544, + 145, 485, 937, 657, 663, 664, 228, 228, 162, 477, + 657, 331, 934, 941, 7, 940, 931, 821, 330, 737, + 653, 6, 43, 26, 655, 654, 709, 653, 562, 939, + 657, 267, 44, 516, 656, 658, 659, 358, 432, 665, + 325, 656, 658, 659, 953, 932, 1002, 653, 735, 921, + 251, 655, 654, 793, 298, 954, 897, 853, 153, 933, + 586, 656, 658, 659, 270, 728, 665, 137, 586, 543, + 898, 493, 272, 121, 192, 204, 311, 632, 192, 316, + 320, 618, 585, 323, 114, 258, 329, 241, 633, 5, + 510, 305, 619, 586, 450, 121, 121, 192, 499, 121, + 121, 657, 663, 664, 511, 560, 339, 141, 677, 678, + 126, 228, 121, 494, 310, 179, 561, 39, 653, 179, + 182, 183, 655, 654, 159, 475, 357, 201, 556, 162, + 506, 976, 656, 658, 659, 675, 676, 665, 179, 557, + 177, 176, 359, 267, 507, 228, 178, 180, 181, 929, + 178, 180, 181, 907, 117, 175, 360, 906, 355, 177, + 176, 350, 904, 241, 126, 271, 121, 104, 861, 178, + 180, 181, 356, 228, 175, 351, 270, 386, 126, 229, + 121, 425, 230, 352, 272, 312, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 233, 313, + 302, 133, 657, 451, 855, 791, 595, 745, 301, 639, + 232, 232, 228, 717, 300, 134, 620, 631, 120, 653, + 456, 630, 624, 231, 231, 333, 451, 336, 393, 209, + 451, 623, 611, 229, 597, 273, 230, 453, 610, 749, + 120, 120, 353, 228, 303, 120, 596, 229, 265, 595, + 230, 473, 233, 440, 748, 449, 604, 120, 294, 446, + 295, 293, 287, 281, 131, 396, 233, 1018, 509, 160, + 977, 490, 513, 254, 241, 253, 521, 271, 1001, 950, + 915, 472, 885, 882, 504, 870, 825, 814, 930, 727, + 39, 449, 693, 434, 634, 492, 449, 740, 491, 502, + 498, 399, 505, 497, 625, 716, 621, 463, 465, 521, + 430, 120, 428, 307, 913, 232, 541, 1013, 980, 892, + 467, 484, 7, 139, 297, 120, 471, 297, 231, 6, + 486, 824, 479, 480, 818, 809, 808, 192, 548, 495, + 593, 682, 436, 437, 439, 546, 552, 273, 448, 232, + 587, 572, 564, 572, 577, 572, 580, 458, 228, 551, + 265, 400, 231, 537, 344, 288, 278, 345, 437, 436, + 436, 295, 437, 275, 274, 588, 39, 232, 179, 182, + 183, 250, 222, 196, 448, 189, 191, 195, 194, 448, + 231, 144, 122, 1010, 876, 1009, 999, 5, 490, 177, + 176, 135, 539, 989, 984, 540, 615, 983, 923, 178, + 180, 181, 188, 190, 175, 912, 232, 609, 449, 449, + 703, 704, 492, 498, 880, 491, 497, 811, 805, 231, + 804, 309, 798, 308, 712, 1019, 699, 400, 581, 228, + 703, 704, 547, 545, 542, 501, 449, 232, 616, 449, + 614, 449, 398, 446, 348, 617, 156, 981, 316, 905, + 231, 126, 320, 605, 637, 638, 975, 521, 917, 891, + 641, 642, 890, 888, 681, 732, 521, 578, 306, 197, + 435, 179, 39, 521, 521, 521, 521, 521, 192, 645, + 224, 225, 648, 531, 874, 802, 803, 830, 635, 695, + 696, 650, 572, 257, 652, 710, 647, 700, 228, 228, + 228, 448, 448, 521, 7, 572, 718, 295, 726, 39, + 39, 6, 91, 126, 515, 731, 531, 572, 580, 179, + 126, 810, 729, 125, 612, 267, 259, 228, 228, 448, + 730, 438, 448, 713, 448, 705, 739, 707, 680, 455, + 723, 702, 424, 125, 295, 733, 987, 128, 129, 295, + 687, 504, 232, 738, 126, 459, 742, 741, 270, 736, + 126, 454, 126, 569, 570, 231, 272, 295, 228, 971, + 228, 518, 427, 426, 304, 512, 744, 449, 299, 5, + 126, 446, 573, 124, 754, 574, 282, 286, 469, 686, + 260, 261, 132, 816, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 789, 743, 521, 576, 758, 295, 756, 295, 757, - 285, 295, 132, 232, 404, 132, 259, 720, 239, 750, - 402, 438, 463, 295, 790, 792, 231, 226, 234, 259, - 521, 208, 126, 207, 121, 985, 486, 228, 259, 271, - 827, 823, 259, 799, 795, 45, 1007, 438, 725, 572, - 448, 831, 986, 163, 531, 1017, 572, 850, 819, 338, - 812, 703, 704, 531, 559, 991, 828, 813, 957, 832, - 531, 531, 531, 531, 531, 851, 955, 856, 45, 453, - 260, 261, 232, 232, 232, 742, 796, 609, 706, 703, - 704, 858, 469, 260, 261, 231, 231, 231, 925, 896, - 531, 268, 260, 261, 269, 470, 260, 261, 521, 273, - 893, 232, 232, 259, 521, 521, 550, 1003, 284, 998, - 233, 960, 265, 935, 231, 231, 847, 848, 849, 846, - 845, 844, 901, 599, 878, 601, 600, 228, 126, 228, - 877, 760, 521, 883, 881, 572, 889, 884, 759, 854, - 875, 722, 232, 800, 232, 651, 120, 859, 860, 820, - 649, 646, 900, 572, 903, 231, 602, 231, 514, 481, - 39, 395, 324, 203, 202, 841, 285, 260, 261, 887, - 199, 842, 136, 1, 840, 944, 335, 228, 899, 829, + 521, 789, 743, 521, 54, 758, 321, 756, 295, 757, + 864, 573, 317, 232, 574, 508, 259, 720, 573, 750, + 595, 574, 463, 322, 790, 792, 231, 285, 62, 126, + 521, 121, 132, 126, 468, 121, 486, 228, 126, 271, + 121, 457, 263, 799, 576, 404, 402, 795, 208, 572, + 448, 831, 207, 985, 531, 827, 572, 850, 819, 823, + 226, 234, 1007, 531, 45, 725, 828, 813, 295, 832, + 531, 531, 531, 531, 531, 851, 295, 856, 423, 453, + 260, 261, 232, 232, 232, 742, 986, 609, 163, 796, + 559, 858, 239, 338, 1017, 231, 231, 231, 229, 991, + 531, 230, 268, 957, 955, 269, 925, 229, 521, 273, + 230, 232, 232, 45, 521, 521, 896, 233, 259, 584, + 893, 233, 265, 438, 231, 231, 233, 847, 848, 849, + 846, 845, 844, 599, 878, 601, 600, 228, 550, 228, + 877, 1003, 521, 883, 881, 572, 889, 884, 998, 854, + 875, 960, 232, 800, 232, 935, 901, 859, 860, 820, + 126, 760, 900, 572, 903, 231, 759, 231, 722, 651, + 39, 649, 259, 1, 646, 259, 120, 284, 602, 887, + 120, 470, 260, 261, 259, 120, 514, 228, 899, 438, 521, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 519, 259, - 531, 922, 938, 259, 283, 908, 449, 1008, 256, 39, - 446, 343, 521, 936, 747, 847, 848, 849, 846, 845, - 844, 232, 753, 863, 445, 879, 909, 531, 608, 589, - 590, 519, 521, 591, 231, 521, 873, 894, 521, 684, - 572, 962, 572, 970, 39, 255, 39, 839, 994, 964, - 963, 902, 483, 192, 39, 403, 39, 39, 895, 838, - 521, 835, 575, 260, 261, 572, 970, 260, 261, 956, - 982, 566, 958, 39, 1005, 961, 1004, 39, 39, 521, - 724, 572, 394, 389, 993, 164, 572, 995, 341, 997, - 697, 538, 177, 176, 914, 928, 916, 979, 290, 448, - 460, 161, 39, 572, 1011, 531, 924, 157, 926, 927, - 1012, 531, 531, 318, 572, 1015, 992, 314, 127, 919, - 39, 232, 919, 232, 182, 183, 175, 178, 180, 181, - 179, 943, 528, 607, 231, 947, 231, 996, 948, 531, - 969, 968, 967, 192, 39, 966, 837, 836, 834, 401, - 39, 40, 945, 568, 15, 14, 822, 719, 801, 694, - 11, 841, 249, 75, 972, 76, 116, 842, 266, 64, - 840, 232, 89, 598, 90, 520, 101, 74, 12, 326, - 100, 99, 177, 176, 231, 79, 119, 531, 526, 519, - 3, 41, 0, 990, 0, 0, 0, 0, 519, 0, + 531, 922, 481, 259, 283, 908, 449, 395, 256, 39, + 446, 324, 521, 936, 203, 285, 260, 261, 469, 260, + 261, 232, 202, 199, 136, 879, 909, 531, 260, 261, + 944, 519, 521, 335, 231, 521, 873, 829, 521, 938, + 572, 962, 572, 970, 39, 1008, 39, 812, 703, 704, + 706, 703, 704, 343, 39, 747, 39, 39, 753, 863, + 521, 445, 608, 260, 261, 572, 970, 260, 261, 956, + 982, 589, 958, 39, 590, 961, 591, 39, 39, 521, + 684, 572, 255, 839, 993, 994, 572, 995, 964, 997, + 963, 902, 483, 403, 914, 895, 916, 979, 838, 448, + 835, 575, 39, 572, 1011, 531, 924, 566, 926, 927, + 1012, 531, 531, 1005, 572, 1015, 992, 1004, 724, 919, + 39, 232, 919, 232, 394, 558, 389, 164, 341, 697, + 538, 943, 928, 290, 231, 947, 231, 460, 948, 531, + 161, 157, 318, 314, 39, 127, 528, 607, 996, 969, + 39, 968, 945, 967, 966, 837, 836, 834, 401, 40, + 568, 15, 14, 822, 972, 719, 801, 694, 11, 249, + 75, 232, 76, 116, 266, 64, 89, 598, 90, 520, + 101, 74, 12, 326, 231, 100, 99, 531, 79, 519, + 119, 526, 3, 990, 41, 0, 0, 0, 519, 0, 0, 0, 0, 0, 0, 519, 519, 519, 519, 519, - 188, 189, 190, 191, 182, 183, 175, 178, 180, 181, - 179, 847, 848, 849, 846, 845, 844, 0, 1014, 531, - 0, 0, 0, 0, 0, 519, 0, 1020, 169, 171, - 170, 192, 0, 833, 0, 0, 0, 0, 0, 531, - 558, 0, 531, 0, 0, 531, 0, 685, 0, 0, + 0, 0, 0, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 0, 0, 0, 1014, 531, + 0, 0, 0, 0, 0, 519, 0, 1020, 0, 0, + 169, 171, 170, 192, 0, 0, 0, 0, 0, 531, + 0, 0, 531, 0, 0, 531, 209, 685, 0, 0, 0, 0, 0, 0, 688, 689, 690, 691, 692, 0, - 620, 0, 809, 808, 0, 0, 0, 531, 193, 173, - 177, 176, 209, 210, 211, 212, 214, 215, 216, 217, - 218, 219, 220, 221, 213, 0, 531, 0, 0, 0, - 167, 168, 172, 174, 186, 187, 184, 185, 188, 189, - 190, 191, 182, 183, 175, 178, 180, 181, 179, 0, - 0, 0, 0, 0, 0, 0, 519, 519, 519, 519, + 0, 0, 0, 0, 0, 0, 0, 531, 0, 0, + 0, 0, 167, 168, 179, 182, 183, 184, 185, 186, + 187, 189, 191, 0, 0, 0, 531, 809, 808, 0, + 0, 0, 0, 193, 173, 177, 176, 0, 0, 0, + 0, 0, 172, 0, 174, 178, 180, 181, 188, 190, + 175, 0, 0, 0, 0, 0, 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, 0, 0, 519, 0, 209, 210, 211, - 212, 214, 215, 216, 217, 218, 219, 220, 221, 213, - 0, 0, 0, 0, 0, 0, 0, 668, 666, 667, + 519, 519, 519, 0, 0, 519, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 668, 666, 667, 0, 0, 0, 0, 0, 0, 519, 0, 0, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, - 786, 788, 869, 0, 685, 653, 0, 679, 661, 655, - 654, 209, 210, 211, 212, 214, 215, 216, 217, 218, - 219, 220, 221, 213, 0, 0, 0, 0, 0, 670, - 669, 660, 662, 673, 674, 671, 672, 675, 677, 676, - 678, 663, 664, 665, 656, 658, 659, 657, 0, 0, - 519, 0, 0, 0, 0, 0, 519, 519, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 349, 0, 0, 0, 0, 31, 0, 0, 0, 0, - 0, 0, 0, 0, 519, 209, 210, 211, 212, 214, - 215, 216, 217, 218, 219, 220, 221, 213, 0, 147, + 786, 788, 0, 0, 685, 670, 669, 657, 663, 664, + 671, 672, 673, 674, 677, 678, 668, 666, 667, 0, + 0, 869, 0, 0, 653, 0, 679, 661, 655, 654, + 0, 0, 0, 0, 0, 660, 0, 662, 656, 658, + 659, 675, 676, 665, 0, 0, 0, 0, 0, 0, + 519, 0, 0, 0, 0, 0, 519, 519, 670, 669, + 657, 663, 664, 671, 672, 673, 674, 677, 678, 0, + 0, 0, 0, 0, 0, 31, 0, 653, 867, 679, + 661, 655, 654, 0, 519, 0, 0, 0, 660, 0, + 662, 656, 658, 659, 675, 676, 665, 0, 0, 147, 151, 155, 0, 0, 0, 165, 0, 0, 0, 868, 0, 0, 51, 198, 0, 871, 872, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 519, 235, 236, 237, 238, 0, 154, 240, - 0, 242, 243, 244, 245, 246, 247, 248, 653, 252, - 0, 661, 655, 654, 262, 205, 0, 0, 0, 276, + 0, 242, 243, 244, 245, 246, 247, 248, 0, 252, + 0, 0, 0, 0, 262, 205, 0, 0, 0, 276, 277, 0, 279, 280, 0, 0, 0, 0, 227, 227, - 0, 0, 0, 291, 519, 662, 673, 674, 671, 672, - 675, 677, 676, 678, 663, 664, 665, 656, 658, 659, - 657, 910, 0, 0, 519, 0, 0, 519, 0, 0, - 519, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, - 342, 0, 519, 0, 0, 0, 0, 0, 0, 126, - 0, 121, 0, 942, 0, 0, 0, 0, 0, 0, - 0, 519, 0, 361, 362, 363, 364, 365, 366, 367, + 0, 0, 0, 291, 519, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 0, 0, 0, + 0, 910, 0, 0, 519, 0, 0, 519, 0, 0, + 519, 0, 670, 669, 657, 663, 664, 671, 672, 673, + 674, 677, 678, 0, 0, 240, 0, 0, 209, 0, + 342, 653, 519, 679, 661, 655, 654, 0, 0, 0, + 0, 0, 660, 942, 662, 656, 658, 659, 675, 676, + 665, 519, 0, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 0, 387, - 0, 155, 0, 354, 0, 0, 0, 0, 717, 0, + 0, 155, 0, 354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 406, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 229, 0, - 0, 230, 0, 0, 0, 0, 0, 391, 392, 0, - 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, - 0, 0, 0, 0, 0, 0, 240, 0, 0, 433, - 433, 0, 0, 0, 0, 422, 441, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 716, 0, 0, - 155, 155, 0, 120, 466, 0, 0, 433, 0, 0, + 412, 413, 414, 415, 416, 417, 418, 419, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 391, 392, 670, + 669, 657, 663, 664, 671, 672, 673, 674, 677, 678, + 0, 0, 0, 0, 0, 0, 240, 0, 653, 433, + 433, 661, 655, 654, 0, 422, 441, 0, 0, 660, + 0, 662, 656, 658, 659, 675, 676, 665, 0, 0, + 155, 155, 0, 0, 466, 0, 0, 433, 0, 0, 0, 0, 0, 433, 291, 0, 0, 0, 0, 433, 433, 0, 0, 155, 443, 0, 433, 496, 0, 0, - 0, 0, 500, 0, 0, 0, 653, 462, 464, 661, - 655, 654, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 478, 0, 0, 0, 0, - 487, 669, 660, 662, 673, 674, 671, 672, 675, 677, - 676, 678, 663, 664, 665, 656, 658, 659, 657, 549, - 0, 0, 0, 0, 0, 0, 553, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4, 0, 83, 84, 72, 18, 105, 106, 13, - 88, 121, 0, 30, 555, 0, 0, 95, 29, 20, - 19, 0, 21, 0, 33, 0, 34, 0, 0, 22, - 0, 155, 0, 23, 24, 38, 45, 16, 25, 36, - 0, 0, 37, 10, 0, 27, 0, 32, 81, 82, - 8, 46, 48, 50, 0, 0, 0, 0, 52, 96, - 0, 94, 110, 111, 112, 107, 108, 0, 582, 0, - 583, 0, 0, 93, 0, 0, 0, 613, 9, 113, - 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, - 80, 53, 0, 0, 0, 78, 42, 28, 47, 49, - 0, 626, 628, 55, 56, 911, 65, 66, 67, 68, - 69, 70, 71, 0, 0, 636, 92, 77, 17, 644, - 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, - 59, 60, 73, 120, 668, 666, 667, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 478, 0, 653, 0, 0, 0, 655, 654, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 342, 701, + 0, 0, 500, 0, 0, 0, 0, 462, 464, 0, + 0, 0, 83, 84, 72, 0, 105, 106, 126, 88, + 121, 0, 0, 0, 0, 478, 95, 0, 0, 0, + 487, 0, 0, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 45, 0, 0, 0, 549, + 0, 0, 0, 0, 0, 0, 553, 81, 82, 0, + 349, 0, 0, 0, 0, 0, 0, 52, 96, 0, + 94, 110, 111, 112, 107, 108, 209, 0, 0, 0, + 0, 0, 93, 0, 555, 0, 0, 143, 113, 109, + 103, 489, 85, 86, 87, 0, 0, 0, 0, 80, + 53, 155, 911, 0, 78, 42, 149, 0, 0, 0, + 0, 0, 55, 56, 0, 65, 66, 67, 68, 69, + 70, 71, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 668, 666, 667, 0, 0, 0, 0, 582, 0, + 583, 0, 0, 0, 0, 0, 0, 613, 92, 77, + 0, 0, 0, 0, 63, 482, 97, 0, 0, 488, + 58, 57, 59, 60, 73, 120, 0, 0, 0, 0, + 0, 626, 628, 670, 669, 657, 663, 664, 671, 672, + 673, 674, 677, 678, 667, 636, 0, 0, 0, 0, 0, 0, 653, 0, 679, 661, 655, 654, 0, 0, - 711, 673, 674, 671, 672, 675, 677, 676, 678, 663, - 664, 665, 656, 658, 659, 657, 670, 669, 660, 662, - 673, 674, 671, 672, 675, 677, 676, 678, 663, 664, - 665, 656, 658, 659, 657, 0, 0, 0, 0, 433, - 391, 715, 715, 0, 0, 0, 0, 0, 0, 0, - 746, 0, 0, 0, 0, 0, 433, 751, 668, 666, - 667, 0, 0, 0, 0, 155, 0, 0, 0, 422, + 0, 0, 0, 660, 0, 662, 656, 658, 659, 675, + 676, 665, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 478, 0, 0, 670, 669, 657, 663, 664, 671, + 672, 673, 674, 677, 678, 0, 192, 0, 342, 701, + 0, 0, 0, 653, 0, 679, 661, 655, 654, 0, + 711, 0, 0, 0, 660, 0, 662, 656, 658, 659, + 675, 676, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 179, 182, 183, + 184, 185, 186, 187, 189, 191, 0, 0, 0, 433, + 391, 715, 715, 169, 171, 170, 192, 173, 177, 176, + 746, 0, 0, 0, 0, 0, 433, 751, 178, 180, + 181, 188, 190, 175, 0, 155, 0, 0, 0, 422, 422, 0, 0, 0, 0, 0, 0, 0, 0, 155, + 0, 0, 668, 666, 667, 167, 168, 179, 182, 183, + 184, 185, 186, 187, 189, 191, 0, 0, 0, 862, + 0, 0, 462, 0, 0, 841, 193, 173, 177, 176, + 478, 842, 478, 0, 840, 172, 487, 174, 178, 180, + 181, 188, 190, 175, 670, 669, 657, 663, 664, 671, + 672, 673, 674, 677, 678, 0, 0, 0, 0, 0, + 0, 0, 797, 653, 0, 679, 661, 655, 654, 806, + 0, 0, 0, 0, 660, 0, 662, 656, 658, 659, + 675, 676, 665, 0, 0, 847, 848, 849, 846, 845, + 844, 657, 663, 664, 671, 672, 673, 674, 677, 678, + 0, 0, 0, 852, 0, 0, 433, 0, 653, 0, + 0, 661, 655, 654, 433, 433, 0, 0, 0, 817, + 0, 865, 656, 658, 659, 675, 676, 665, 0, 0, + 894, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 83, 84, 72, + 18, 105, 106, 13, 88, 121, 0, 30, 0, 0, + 0, 95, 29, 20, 19, 0, 21, 0, 33, 0, + 34, 342, 0, 22, 0, 0, 0, 23, 24, 38, + 45, 16, 25, 36, 0, 0, 37, 10, 0, 27, + 0, 32, 81, 82, 8, 46, 48, 50, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 715, + 0, 422, 9, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 42, 28, 47, 49, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 653, 867, 679, 661, - 655, 654, 462, 666, 667, 0, 0, 0, 0, 0, - 478, 0, 478, 0, 0, 0, 487, 0, 0, 0, - 670, 669, 660, 662, 673, 674, 671, 672, 675, 677, - 676, 678, 663, 664, 665, 656, 658, 659, 657, 0, - 653, 0, 679, 661, 655, 654, 0, 0, 0, 806, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 670, 669, 660, 662, 673, 674, - 671, 672, 675, 677, 676, 678, 663, 664, 665, 656, - 658, 659, 657, 852, 0, 0, 433, 0, 0, 0, - 0, 0, 0, 0, 433, 433, 0, 0, 0, 817, - 0, 865, 0, 0, 0, 0, 0, 0, 4, 0, - 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, - 30, 0, 0, 0, 95, 29, 20, 19, 0, 21, - 0, 33, 0, 34, 0, 0, 22, 0, 0, 0, - 23, 24, 38, 45, 16, 25, 36, 0, 0, 37, - 10, 342, 27, 0, 32, 81, 82, 8, 46, 48, - 50, 0, 0, 0, 0, 52, 96, 0, 94, 110, - 111, 112, 107, 108, 0, 0, 0, 0, 0, 0, - 93, 0, 0, 0, 0, 9, 113, 109, 103, 0, - 85, 86, 87, 0, 0, 0, 0, 80, 53, 715, - 0, 422, 78, 42, 28, 47, 49, 0, 0, 0, - 55, 56, 0, 65, 66, 67, 68, 69, 70, 71, - 0, 0, 0, 92, 77, 17, 503, 35, 0, 63, + 0, 0, 0, 92, 77, 17, 644, 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, 59, 60, 73, - 120, 0, 0, 0, 0, 0, 0, 0, 4, 478, - 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, - 30, 0, 0, 0, 95, 29, 20, 19, 0, 21, - 0, 33, 0, 34, 0, 0, 22, 0, 0, 0, - 23, 24, 38, 45, 16, 25, 36, 0, 0, 37, - 10, 0, 27, 0, 32, 81, 82, 8, 46, 48, - 50, 0, 0, 0, 0, 52, 96, 0, 94, 110, - 111, 112, 107, 108, 0, 0, 0, 0, 0, 0, - 93, 0, 0, 0, 0, 9, 113, 109, 103, 0, - 85, 86, 87, 0, 0, 0, 0, 80, 53, 0, - 0, 0, 78, 42, 28, 47, 49, 0, 0, 0, - 55, 56, 0, 65, 66, 67, 68, 69, 70, 71, - 0, 0, 0, 92, 77, 17, 0, 35, 0, 63, - 0, 97, 0, 0, 0, 58, 57, 59, 60, 73, - 120, 328, 0, 83, 84, 72, 18, 105, 106, 13, + 120, 4, 0, 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, 95, 29, 20, 19, 0, 21, 0, 33, 0, 34, 0, 0, 22, - 0, 0, 0, 23, 24, 38, 45, 0, 25, 36, - 0, 0, 37, 0, 0, 27, 0, 32, 81, 82, - 332, 46, 48, 50, 0, 0, 0, 0, 52, 96, + 0, 0, 0, 23, 24, 38, 45, 16, 25, 36, + 0, 0, 37, 10, 0, 27, 0, 32, 81, 82, + 8, 46, 48, 50, 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, - 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, + 0, 0, 0, 93, 0, 0, 0, 0, 9, 113, 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, 47, 49, 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, - 69, 70, 71, 0, 0, 0, 92, 77, 17, 1021, - 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, - 59, 60, 73, 120, 328, 0, 83, 84, 72, 18, - 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, - 95, 29, 20, 19, 0, 21, 0, 33, 0, 34, - 0, 0, 22, 0, 0, 0, 23, 24, 38, 45, - 0, 25, 36, 0, 0, 37, 0, 0, 27, 0, - 32, 81, 82, 332, 46, 48, 50, 0, 0, 0, - 0, 52, 96, 0, 94, 110, 111, 112, 107, 108, - 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, - 0, 143, 113, 109, 103, 0, 85, 86, 87, 0, - 0, 0, 0, 80, 53, 0, 0, 0, 78, 42, - 28, 47, 49, 0, 0, 0, 55, 56, 0, 65, - 66, 67, 68, 69, 70, 71, 0, 0, 0, 92, - 77, 17, 1016, 35, 0, 63, 0, 97, 0, 0, - 0, 58, 57, 59, 60, 73, 120, 328, 0, 83, + 69, 70, 71, 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, 92, + 77, 17, 503, 35, 0, 63, 0, 97, 0, 0, + 0, 58, 57, 59, 60, 73, 120, 4, 0, 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, 95, 29, 20, 19, 0, 21, 0, 33, 0, 34, 0, 0, 22, 0, 0, 0, 23, - 24, 38, 45, 0, 25, 36, 0, 0, 37, 0, - 0, 27, 0, 32, 81, 82, 332, 46, 48, 50, + 24, 38, 45, 16, 25, 36, 0, 0, 37, 10, + 0, 27, 0, 32, 81, 82, 8, 46, 48, 50, 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, - 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 0, 0, 0, 0, 9, 113, 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, 47, 49, 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, 71, 0, - 0, 0, 92, 77, 17, 1000, 35, 0, 63, 0, - 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, - 328, 0, 83, 84, 72, 18, 105, 106, 13, 88, - 121, 0, 30, 0, 0, 0, 95, 29, 20, 19, - 0, 21, 988, 33, 0, 34, 0, 0, 22, 0, - 0, 0, 23, 24, 38, 45, 0, 25, 36, 0, - 0, 37, 0, 0, 27, 0, 32, 81, 82, 332, - 46, 48, 50, 0, 0, 0, 0, 52, 96, 0, - 94, 110, 111, 112, 107, 108, 0, 0, 0, 0, - 0, 0, 93, 0, 0, 0, 0, 143, 113, 109, - 103, 0, 85, 86, 87, 0, 0, 0, 0, 80, - 53, 0, 0, 0, 78, 42, 28, 47, 49, 0, - 0, 0, 55, 56, 0, 65, 66, 67, 68, 69, - 70, 71, 0, 0, 0, 92, 77, 17, 0, 35, + 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, 92, 77, 17, 0, 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, 328, 0, 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, 95, - 29, 20, 19, 0, 21, 0, 33, 974, 34, 0, + 29, 20, 19, 0, 21, 0, 33, 0, 34, 0, 0, 22, 0, 0, 0, 23, 24, 38, 45, 0, 25, 36, 0, 0, 37, 0, 0, 27, 0, 32, 81, 82, 332, 46, 48, 50, 0, 0, 0, 0, @@ -925,20 +893,87 @@ var yyAct = [...]int{ 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, 47, 49, 0, 0, 0, 55, 56, 0, 65, 66, - 67, 68, 69, 70, 71, 0, 0, 0, 92, 77, - 17, 0, 35, 0, 63, 0, 97, 0, 0, 0, - 58, 57, 59, 60, 73, 120, 328, 0, 83, 84, - 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, - 0, 0, 95, 29, 20, 19, 0, 21, 0, 33, - 0, 34, 0, 0, 22, 0, 0, 0, 23, 24, - 38, 45, 0, 25, 36, 0, 0, 37, 0, 0, - 27, 0, 32, 81, 82, 332, 46, 48, 50, 0, - 0, 0, 0, 52, 96, 0, 94, 110, 111, 112, - 107, 108, 0, 0, 0, 0, 0, 0, 93, 0, - 0, 0, 0, 143, 113, 109, 103, 0, 85, 86, - 87, 0, 0, 0, 0, 80, 53, 0, 0, 0, - 78, 42, 28, 47, 49, 0, 0, 0, 55, 56, - 0, 65, 66, 67, 68, 69, 70, 71, 0, 0, + 67, 68, 69, 70, 71, 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, 92, 77, 17, 1021, 35, 0, 63, 0, 97, + 0, 0, 0, 58, 57, 59, 60, 73, 120, 328, + 0, 83, 84, 72, 18, 105, 106, 13, 88, 121, + 0, 30, 0, 0, 0, 95, 29, 20, 19, 0, + 21, 0, 33, 0, 34, 0, 0, 22, 0, 0, + 0, 23, 24, 38, 45, 0, 25, 36, 0, 0, + 37, 0, 0, 27, 0, 32, 81, 82, 332, 46, + 48, 50, 0, 0, 0, 0, 52, 96, 0, 94, + 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, + 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, + 0, 0, 0, 78, 42, 28, 47, 49, 0, 0, + 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, + 71, 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, 92, 77, 17, + 1016, 35, 0, 63, 0, 97, 0, 0, 0, 58, + 57, 59, 60, 73, 120, 328, 0, 83, 84, 72, + 18, 105, 106, 13, 88, 121, 0, 30, 0, 0, + 0, 95, 29, 20, 19, 0, 21, 0, 33, 0, + 34, 0, 0, 22, 0, 0, 0, 23, 24, 38, + 45, 0, 25, 36, 0, 0, 37, 0, 0, 27, + 0, 32, 81, 82, 332, 46, 48, 50, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 42, 28, 47, 49, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 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, 92, 77, 17, 1000, 35, 0, 63, + 0, 97, 0, 0, 0, 58, 57, 59, 60, 73, + 120, 328, 0, 83, 84, 72, 18, 105, 106, 13, + 88, 121, 0, 30, 0, 0, 0, 95, 29, 20, + 19, 0, 21, 988, 33, 0, 34, 0, 0, 22, + 0, 0, 0, 23, 24, 38, 45, 0, 25, 36, + 0, 0, 37, 0, 0, 27, 0, 32, 81, 82, + 332, 46, 48, 50, 0, 0, 0, 0, 52, 96, + 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, + 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, + 80, 53, 0, 0, 0, 78, 42, 28, 47, 49, + 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, + 69, 70, 71, 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, 92, + 77, 17, 0, 35, 0, 63, 0, 97, 0, 0, + 0, 58, 57, 59, 60, 73, 120, 328, 0, 83, + 84, 72, 18, 105, 106, 13, 88, 121, 0, 30, + 0, 0, 0, 95, 29, 20, 19, 0, 21, 0, + 33, 974, 34, 0, 0, 22, 0, 0, 0, 23, + 24, 38, 45, 0, 25, 36, 0, 0, 37, 0, + 0, 27, 0, 32, 81, 82, 332, 46, 48, 50, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 42, 28, 47, 49, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 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, 92, 77, 17, 0, 35, + 0, 63, 0, 97, 0, 0, 0, 58, 57, 59, + 60, 73, 120, 328, 0, 83, 84, 72, 18, 105, + 106, 13, 88, 121, 0, 30, 0, 0, 0, 95, + 29, 20, 19, 0, 21, 0, 33, 0, 34, 0, + 0, 22, 0, 0, 0, 23, 24, 38, 45, 0, + 25, 36, 0, 0, 37, 0, 0, 27, 0, 32, + 81, 82, 332, 46, 48, 50, 0, 0, 0, 0, + 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, + 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, + 47, 49, 0, 0, 0, 55, 56, 0, 65, 66, + 67, 68, 69, 70, 71, 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, 92, 77, 17, 973, 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, 328, 0, 83, 84, 72, 18, 105, 106, 13, 88, 121, @@ -952,21 +987,10 @@ var yyAct = [...]int{ 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, 47, 49, 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, - 71, 0, 0, 0, 92, 77, 17, 952, 35, 0, - 63, 0, 97, 0, 0, 0, 58, 57, 59, 60, - 73, 120, 328, 0, 83, 84, 72, 18, 105, 106, - 13, 88, 121, 0, 30, 0, 0, 0, 95, 29, - 20, 19, 0, 21, 0, 33, 0, 34, 0, 0, - 22, 0, 0, 0, 23, 24, 38, 45, 0, 25, - 36, 0, 0, 37, 0, 0, 27, 0, 32, 81, - 82, 332, 46, 48, 50, 0, 0, 0, 0, 52, - 96, 0, 94, 110, 111, 112, 107, 108, 0, 0, - 0, 0, 0, 0, 93, 0, 0, 0, 0, 143, - 113, 109, 103, 0, 85, 86, 87, 0, 0, 0, - 0, 80, 53, 0, 0, 0, 78, 42, 28, 47, - 49, 0, 0, 0, 55, 56, 0, 65, 66, 67, - 68, 69, 70, 71, 0, 0, 0, 92, 77, 17, - 951, 35, 0, 63, 0, 97, 0, 0, 0, 58, + 71, 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, 92, 77, 17, + 952, 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, 328, 0, 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, 95, 29, 20, 19, 0, 21, 0, 33, 0, @@ -979,24 +1003,13 @@ var yyAct = [...]int{ 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, 47, 49, 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, - 92, 77, 17, 949, 35, 0, 63, 0, 97, 0, - 0, 0, 58, 57, 59, 60, 73, 120, 328, 0, - 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, - 30, 0, 0, 0, 95, 29, 20, 19, 0, 21, - 0, 33, 0, 34, 886, 0, 22, 0, 0, 0, - 23, 24, 38, 45, 0, 25, 36, 0, 0, 37, - 0, 0, 27, 0, 32, 81, 82, 332, 46, 48, - 50, 0, 0, 0, 0, 52, 96, 0, 94, 110, - 111, 112, 107, 108, 0, 0, 0, 0, 0, 0, - 93, 0, 0, 0, 0, 143, 113, 109, 103, 0, - 85, 86, 87, 0, 0, 0, 0, 80, 53, 0, - 0, 0, 78, 42, 28, 47, 49, 0, 0, 0, - 55, 56, 0, 65, 66, 67, 68, 69, 70, 71, - 0, 0, 0, 92, 77, 17, 0, 35, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 92, 77, 17, 951, 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, 328, 0, 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, 95, 29, 20, - 19, 698, 21, 0, 33, 0, 34, 0, 0, 22, + 19, 0, 21, 0, 33, 0, 34, 0, 0, 22, 0, 0, 0, 23, 24, 38, 45, 0, 25, 36, 0, 0, 37, 0, 0, 27, 0, 32, 81, 82, 332, 46, 48, 50, 0, 0, 0, 0, 52, 96, @@ -1005,25 +1018,14 @@ var yyAct = [...]int{ 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, 47, 49, 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, - 69, 70, 71, 0, 0, 0, 92, 77, 17, 0, - 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, - 59, 60, 73, 120, 328, 0, 83, 84, 72, 18, - 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, - 95, 29, 20, 19, 0, 21, 0, 33, 0, 34, - 0, 0, 22, 0, 0, 0, 23, 24, 38, 45, - 0, 25, 36, 0, 0, 37, 0, 0, 27, 0, - 32, 81, 82, 332, 46, 48, 50, 0, 0, 0, - 0, 52, 96, 0, 94, 110, 111, 112, 107, 108, - 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, - 0, 143, 113, 109, 103, 0, 85, 86, 87, 0, - 0, 0, 0, 80, 53, 0, 0, 0, 78, 42, - 28, 47, 49, 0, 0, 0, 55, 56, 0, 65, - 66, 67, 68, 69, 70, 71, 0, 0, 0, 92, - 77, 17, 563, 35, 0, 63, 0, 97, 0, 0, + 69, 70, 71, 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, 92, + 77, 17, 949, 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, 328, 0, 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, 95, 29, 20, 19, 0, 21, 0, - 33, 0, 34, 0, 0, 22, 0, 0, 0, 23, + 33, 0, 34, 886, 0, 22, 0, 0, 0, 23, 24, 38, 45, 0, 25, 36, 0, 0, 37, 0, 0, 27, 0, 32, 81, 82, 332, 46, 48, 50, 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, @@ -1032,73 +1034,72 @@ var yyAct = [...]int{ 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, 47, 49, 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, 71, 0, - 0, 0, 92, 77, 17, 327, 35, 0, 63, 0, - 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, - 328, 0, 83, 84, 72, 18, 105, 106, 13, 88, - 121, 0, 30, 0, 0, 0, 95, 29, 20, 19, - 0, 21, 0, 33, 0, 34, 0, 0, 22, 0, - 0, 0, 23, 24, 38, 45, 0, 25, 36, 0, - 0, 37, 0, 0, 27, 0, 32, 81, 82, 332, - 46, 48, 50, 0, 0, 0, 0, 52, 96, 0, - 94, 110, 111, 112, 107, 108, 0, 0, 0, 0, - 0, 0, 93, 0, 0, 0, 0, 143, 113, 109, - 103, 0, 85, 86, 87, 0, 0, 0, 0, 80, - 53, 0, 0, 0, 78, 42, 28, 47, 49, 0, - 0, 0, 55, 56, 0, 65, 66, 67, 68, 69, - 70, 71, 0, 0, 0, 92, 77, 17, 0, 35, + 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, 92, 77, 17, 0, 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, 59, - 60, 73, 120, 83, 84, 72, 18, 105, 106, 13, - 88, 121, 0, 30, 0, 0, 0, 95, 29, 20, - 19, 0, 21, 0, 33, 0, 34, 0, 0, 22, - 0, 0, 0, 23, 24, 38, 45, 0, 25, 36, - 0, 0, 37, 0, 0, 27, 0, 32, 81, 82, - 0, 0, 0, 0, 0, 0, 0, 0, 52, 96, - 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, - 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, - 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, - 80, 53, 0, 0, 0, 78, 42, 28, 0, 0, - 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, - 69, 70, 71, 0, 0, 0, 92, 77, 17, 0, - 35, 946, 63, 0, 97, 0, 0, 0, 58, 57, - 59, 60, 73, 120, 83, 84, 72, 18, 105, 106, - 13, 88, 121, 0, 30, 0, 0, 0, 95, 29, - 20, 19, 0, 21, 0, 33, 0, 34, 0, 0, - 22, 0, 0, 0, 23, 24, 38, 45, 0, 25, - 36, 0, 0, 37, 0, 0, 27, 0, 32, 81, - 82, 0, 0, 0, 0, 0, 0, 0, 0, 52, - 96, 0, 94, 110, 111, 112, 107, 108, 0, 0, - 0, 0, 0, 0, 93, 0, 0, 0, 0, 143, - 113, 109, 103, 0, 85, 86, 87, 0, 0, 0, - 0, 80, 53, 0, 0, 0, 78, 42, 28, 0, - 0, 0, 0, 0, 55, 56, 0, 65, 66, 67, - 68, 69, 70, 71, 0, 0, 0, 92, 77, 17, - 0, 35, 920, 63, 0, 97, 0, 0, 0, 58, - 57, 59, 60, 73, 120, 83, 84, 72, 18, 105, + 60, 73, 120, 328, 0, 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, 95, - 29, 20, 19, 0, 21, 0, 33, 0, 34, 0, + 29, 20, 19, 698, 21, 0, 33, 0, 34, 0, 0, 22, 0, 0, 0, 23, 24, 38, 45, 0, 25, 36, 0, 0, 37, 0, 0, 27, 0, 32, - 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, + 81, 82, 332, 46, 48, 50, 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, - 0, 0, 0, 0, 0, 55, 56, 0, 65, 66, - 67, 68, 69, 70, 71, 0, 0, 0, 92, 77, - 17, 0, 35, 721, 63, 0, 97, 0, 0, 0, - 58, 57, 59, 60, 73, 120, 83, 84, 72, 18, - 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, - 95, 29, 20, 19, 0, 21, 0, 33, 0, 34, - 0, 0, 22, 0, 0, 0, 23, 24, 38, 45, - 0, 25, 36, 0, 0, 37, 0, 0, 27, 0, - 32, 81, 82, 0, 0, 0, 0, 0, 0, 0, - 0, 52, 96, 0, 94, 110, 111, 112, 107, 108, - 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, - 0, 143, 113, 109, 103, 0, 85, 86, 87, 0, - 0, 0, 0, 80, 53, 0, 0, 0, 78, 42, - 28, 0, 0, 0, 0, 0, 55, 56, 0, 65, - 66, 67, 68, 69, 70, 71, 0, 0, 0, 92, - 77, 17, 0, 35, 337, 63, 0, 97, 0, 0, + 47, 49, 0, 0, 0, 55, 56, 0, 65, 66, + 67, 68, 69, 70, 71, 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, 92, 77, 17, 0, 35, 0, 63, 0, 97, + 0, 0, 0, 58, 57, 59, 60, 73, 120, 328, + 0, 83, 84, 72, 18, 105, 106, 13, 88, 121, + 0, 30, 0, 0, 0, 95, 29, 20, 19, 0, + 21, 0, 33, 0, 34, 0, 0, 22, 0, 0, + 0, 23, 24, 38, 45, 0, 25, 36, 0, 0, + 37, 0, 0, 27, 0, 32, 81, 82, 332, 46, + 48, 50, 0, 0, 0, 0, 52, 96, 0, 94, + 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, + 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, + 0, 0, 0, 78, 42, 28, 47, 49, 0, 0, + 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, + 71, 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, 92, 77, 17, + 563, 35, 0, 63, 0, 97, 0, 0, 0, 58, + 57, 59, 60, 73, 120, 328, 0, 83, 84, 72, + 18, 105, 106, 13, 88, 121, 0, 30, 0, 0, + 0, 95, 29, 20, 19, 0, 21, 0, 33, 0, + 34, 0, 0, 22, 0, 0, 0, 23, 24, 38, + 45, 0, 25, 36, 0, 0, 37, 0, 0, 27, + 0, 32, 81, 82, 332, 46, 48, 50, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 42, 28, 47, 49, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 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, 92, 77, 17, 327, 35, 0, 63, + 0, 97, 0, 0, 0, 58, 57, 59, 60, 73, + 120, 328, 0, 83, 84, 72, 18, 105, 106, 13, + 88, 121, 0, 30, 0, 0, 0, 95, 29, 20, + 19, 0, 21, 0, 33, 0, 34, 0, 0, 22, + 0, 0, 0, 23, 24, 38, 45, 0, 25, 36, + 0, 0, 37, 0, 0, 27, 0, 32, 81, 82, + 332, 46, 48, 50, 0, 0, 0, 0, 52, 96, + 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, + 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, + 80, 53, 0, 0, 0, 78, 42, 28, 47, 49, + 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, + 69, 70, 71, 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, 92, + 77, 17, 0, 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, 95, 29, 20, 19, 0, 21, 0, 33, 0, @@ -1111,490 +1112,539 @@ var yyAct = [...]int{ 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, 0, 0, 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, - 92, 77, 17, 0, 35, 334, 63, 0, 97, 0, - 0, 0, 58, 57, 59, 60, 73, 120, 83, 84, - 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, - 0, 0, 95, 29, 20, 19, 0, 21, 0, 33, - 0, 34, 0, 0, 22, 0, 0, 0, 23, 24, - 38, 45, 0, 25, 36, 0, 0, 37, 0, 0, - 27, 0, 32, 81, 82, 0, 0, 0, 0, 0, - 0, 0, 0, 52, 96, 0, 94, 110, 111, 112, - 107, 108, 0, 0, 0, 0, 0, 0, 93, 0, - 0, 0, 0, 143, 113, 109, 103, 0, 85, 86, - 87, 0, 192, 0, 0, 80, 53, 0, 0, 0, - 78, 42, 28, 0, 0, 0, 0, 0, 55, 56, - 0, 65, 66, 67, 68, 69, 70, 71, 0, 0, - 0, 92, 77, 17, 0, 35, 0, 63, 0, 97, - 173, 177, 176, 58, 57, 59, 60, 73, 120, 169, - 171, 170, 192, 0, 0, 0, 0, 0, 0, 0, - 0, 167, 168, 172, 174, 186, 187, 184, 185, 188, - 189, 190, 191, 182, 183, 175, 178, 180, 181, 179, - 0, 0, 862, 0, 0, 0, 0, 0, 0, 193, - 173, 177, 176, 169, 171, 170, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 167, 168, 172, 174, 186, 187, 184, 185, 188, - 189, 190, 191, 182, 183, 175, 178, 180, 181, 179, - 0, 0, 857, 193, 173, 177, 176, 668, 666, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 794, 0, 0, 167, 168, 172, 174, 186, - 187, 184, 185, 188, 189, 190, 191, 182, 183, 175, - 178, 180, 181, 179, 797, 653, 0, 679, 661, 655, - 654, 668, 666, 667, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 755, 0, 0, 670, - 669, 660, 662, 673, 674, 671, 672, 675, 677, 676, - 678, 663, 664, 665, 656, 658, 659, 657, 0, 653, - 0, 679, 661, 655, 654, 169, 171, 170, 192, 0, + 0, 0, 0, 92, 77, 17, 0, 35, 946, 63, + 0, 97, 0, 0, 0, 58, 57, 59, 60, 73, + 120, 83, 84, 72, 18, 105, 106, 13, 88, 121, + 0, 30, 0, 0, 0, 95, 29, 20, 19, 0, + 21, 0, 33, 0, 34, 0, 0, 22, 0, 0, + 0, 23, 24, 38, 45, 0, 25, 36, 0, 0, + 37, 0, 0, 27, 0, 32, 81, 82, 0, 0, + 0, 0, 0, 0, 0, 0, 52, 96, 0, 94, + 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, + 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, + 0, 0, 0, 78, 42, 28, 0, 0, 0, 0, + 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 670, 669, 660, 662, 673, 674, 671, - 672, 675, 677, 676, 678, 663, 664, 665, 656, 658, - 659, 657, 0, 0, 0, 193, 173, 177, 176, 0, - 0, 0, 0, 169, 171, 170, 192, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 167, 168, 172, - 174, 186, 187, 184, 185, 188, 189, 190, 191, 182, - 183, 175, 178, 180, 181, 179, 752, 0, 0, 0, - 0, 0, 0, 193, 173, 177, 176, 0, 0, 0, - 0, 169, 171, 170, 192, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 167, 168, 172, 174, 186, - 187, 184, 185, 188, 189, 190, 191, 182, 183, 175, - 178, 180, 181, 179, 708, 0, 0, 0, 0, 0, - 0, 193, 173, 177, 176, 0, 0, 0, 0, 169, - 171, 170, 192, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 167, 168, 172, 174, 186, 187, 184, - 185, 188, 189, 190, 191, 182, 183, 175, 178, 180, - 181, 179, 643, 0, 0, 0, 0, 0, 0, 193, - 173, 177, 176, 0, 0, 0, 0, 169, 171, 170, - 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 167, 168, 172, 174, 186, 187, 184, 185, 188, - 189, 190, 191, 182, 183, 175, 178, 180, 181, 179, - 640, 0, 0, 0, 0, 0, 0, 193, 173, 177, - 176, 169, 171, 170, 192, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, - 168, 172, 174, 186, 187, 184, 185, 188, 189, 190, - 191, 182, 183, 175, 178, 180, 181, 179, 622, 0, - 0, 193, 173, 177, 176, 0, 0, 0, 0, 169, - 171, 170, 192, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 167, 168, 172, 174, 186, 187, 184, - 185, 188, 189, 190, 191, 182, 183, 175, 178, 180, - 181, 179, 603, 0, 0, 0, 0, 0, 0, 193, - 173, 177, 176, 0, 0, 169, 171, 170, 192, 0, + 0, 0, 0, 0, 0, 0, 0, 92, 77, 17, + 0, 35, 920, 63, 0, 97, 0, 0, 0, 58, + 57, 59, 60, 73, 120, 83, 84, 72, 18, 105, + 106, 13, 88, 121, 0, 30, 0, 0, 0, 95, + 29, 20, 19, 0, 21, 0, 33, 0, 34, 0, + 0, 22, 0, 0, 0, 23, 24, 38, 45, 0, + 25, 36, 0, 0, 37, 0, 0, 27, 0, 32, + 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, + 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, + 0, 0, 0, 0, 0, 55, 56, 0, 65, 66, + 67, 68, 69, 70, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 476, 167, 168, 172, 174, 186, 187, 184, 185, 188, - 189, 190, 191, 182, 183, 175, 178, 180, 181, 179, - 554, 0, 0, 0, 0, 193, 173, 177, 176, 169, - 171, 170, 192, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 167, 168, 172, - 174, 186, 187, 184, 185, 188, 189, 190, 191, 182, - 183, 175, 178, 180, 181, 179, 0, 0, 0, 193, - 173, 177, 176, 169, 171, 170, 192, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, - 0, 167, 168, 172, 174, 186, 187, 184, 185, 188, - 189, 190, 191, 182, 183, 175, 178, 180, 181, 179, - 429, 0, 0, 193, 173, 177, 176, 169, 171, 170, - 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 167, 168, 172, 174, 186, - 187, 184, 185, 188, 189, 190, 191, 182, 183, 175, - 178, 180, 181, 179, 0, 0, 0, 193, 173, 177, - 176, 0, 0, 0, 169, 171, 170, 192, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, - 168, 172, 174, 186, 187, 184, 185, 188, 189, 190, - 191, 182, 183, 175, 178, 180, 181, 179, 397, 0, - 0, 0, 0, 0, 193, 173, 177, 176, 0, 0, - 0, 169, 171, 170, 192, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 167, 168, 172, 174, - 186, 187, 184, 185, 188, 189, 190, 191, 182, 183, - 175, 178, 180, 181, 179, 347, 0, 0, 0, 0, - 0, 193, 173, 177, 176, 0, 0, 0, 169, 171, - 170, 192, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 167, 168, 172, 174, 186, 187, 184, - 185, 188, 189, 190, 191, 182, 183, 175, 178, 180, - 181, 179, 346, 0, 0, 0, 0, 0, 193, 173, - 177, 176, 0, 0, 0, 169, 171, 170, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 167, 168, 172, 174, 186, 187, 184, 185, 188, 189, - 190, 191, 182, 183, 175, 178, 180, 181, 179, 166, - 0, 0, 0, 0, 0, 193, 173, 177, 176, 668, - 666, 667, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 167, 168, 172, - 174, 186, 187, 184, 185, 188, 189, 190, 191, 182, - 183, 175, 178, 180, 181, 179, 0, 653, 0, 679, - 661, 655, 654, 169, 171, 170, 192, 0, 0, 0, + 0, 92, 77, 17, 0, 35, 721, 63, 0, 97, + 0, 0, 0, 58, 57, 59, 60, 73, 120, 83, + 84, 72, 18, 105, 106, 13, 88, 121, 0, 30, + 0, 0, 0, 95, 29, 20, 19, 0, 21, 0, + 33, 0, 34, 0, 0, 22, 0, 0, 0, 23, + 24, 38, 45, 0, 25, 36, 0, 0, 37, 0, + 0, 27, 0, 32, 81, 82, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 42, 28, 0, 0, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 670, 669, 660, 662, 673, 674, 671, 672, 675, - 677, 676, 678, 663, 664, 665, 656, 658, 659, 657, - 0, 0, 0, 193, 173, 177, 176, 171, 170, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 167, 168, 172, 174, 186, - 187, 184, 185, 188, 189, 190, 191, 182, 183, 175, - 178, 180, 181, 179, 0, 0, 193, 173, 177, 176, - 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 167, 168, - 172, 174, 186, 187, 184, 185, 188, 189, 190, 191, - 182, 183, 175, 178, 180, 181, 179, 653, 0, 679, - 661, 655, 654, 170, 192, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 670, 669, 660, 662, 673, 674, 671, 672, 675, - 677, 676, 678, 663, 664, 665, 656, 658, 659, 657, - 0, 193, 173, 177, 176, 192, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 167, 168, 172, 174, 186, 187, 184, - 185, 188, 189, 190, 191, 182, 183, 175, 178, 180, - 181, 179, 193, 173, 177, 176, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 167, 168, 172, 174, 186, 187, - 184, 185, 188, 189, 190, 191, 182, 183, 175, 178, - 180, 181, 179, 653, 0, 679, 661, 655, 654, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 670, 669, 660, - 662, 673, 674, 671, 672, 675, 677, 676, 678, 663, - 664, 665, 656, 658, 659, 657, 653, 0, 0, 661, - 655, 654, 192, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 670, 669, 660, 662, 673, 674, 671, 672, 675, 677, - 676, 678, 663, 664, 665, 656, 658, 659, 657, 0, - 173, 177, 176, 0, 0, 0, 0, 83, 84, 72, - 0, 105, 106, 126, 88, 121, 0, 0, 0, 0, - 0, 95, 168, 172, 174, 186, 187, 184, 185, 188, - 189, 190, 191, 182, 183, 175, 178, 180, 181, 179, - 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 82, 0, 0, 0, 0, 0, 0, - 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, - 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, - 0, 0, 143, 113, 109, 103, 489, 85, 86, 87, - 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, - 42, 149, 0, 0, 0, 0, 0, 55, 56, 0, - 65, 66, 67, 68, 69, 70, 71, 0, 0, 653, - 92, 77, 661, 655, 654, 0, 63, 482, 97, 0, - 0, 488, 58, 57, 59, 60, 73, 120, 0, 0, - 0, 0, 0, 0, 0, 660, 662, 673, 674, 671, - 672, 675, 677, 676, 678, 663, 664, 665, 656, 658, - 659, 657, 83, 84, 72, 0, 105, 106, 126, 88, - 121, 0, 0, 0, 0, 0, 95, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 81, 82, 0, - 0, 0, 0, 0, 0, 0, 0, 52, 96, 0, - 94, 110, 111, 112, 107, 108, 0, 0, 0, 0, - 0, 0, 93, 0, 192, 0, 0, 143, 113, 109, - 103, 489, 85, 86, 87, 0, 0, 0, 0, 80, - 53, 0, 0, 0, 78, 148, 149, 0, 0, 0, - 0, 0, 55, 56, 0, 65, 66, 67, 68, 69, - 70, 71, 173, 177, 176, 92, 77, 0, 0, 0, - 0, 63, 0, 97, 0, 0, 488, 58, 57, 59, - 60, 73, 120, 0, 0, 172, 174, 186, 187, 184, - 185, 188, 189, 190, 191, 182, 183, 175, 178, 180, - 181, 179, 83, 84, 72, 0, 105, 106, 126, 88, - 121, 0, 0, 0, 0, 0, 95, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 81, 82, 0, - 0, 0, 0, 0, 0, 0, 0, 52, 96, 0, - 94, 110, 111, 112, 107, 108, 0, 0, 0, 0, - 0, 0, 93, 0, 0, 0, 0, 143, 113, 109, - 103, 0, 85, 86, 87, 192, 0, 0, 0, 80, - 53, 0, 0, 0, 78, 148, 149, 0, 0, 0, - 0, 0, 55, 56, 0, 65, 66, 67, 68, 69, - 70, 71, 0, 0, 0, 92, 77, 0, 0, 0, - 0, 63, 0, 97, 177, 176, 866, 58, 57, 59, - 60, 73, 120, 83, 84, 72, 0, 105, 106, 126, - 88, 121, 0, 0, 0, 0, 0, 95, 186, 187, - 184, 185, 188, 189, 190, 191, 182, 183, 175, 178, - 180, 181, 179, 0, 0, 0, 45, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 81, 82, + 0, 0, 0, 0, 0, 92, 77, 17, 0, 35, + 337, 63, 0, 97, 0, 0, 0, 58, 57, 59, + 60, 73, 120, 83, 84, 72, 18, 105, 106, 13, + 88, 121, 0, 30, 0, 0, 0, 95, 29, 20, + 19, 0, 21, 0, 33, 0, 34, 0, 0, 22, + 0, 0, 0, 23, 24, 38, 45, 0, 25, 36, + 0, 0, 37, 0, 0, 27, 0, 32, 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, - 80, 53, 0, 0, 0, 78, 148, 149, 0, 0, + 80, 53, 0, 0, 0, 78, 42, 28, 0, 0, 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, - 69, 70, 71, 0, 0, 0, 92, 77, 0, 0, - 0, 0, 63, 0, 97, 0, 0, 629, 58, 57, - 59, 60, 73, 120, 83, 84, 72, 0, 105, 106, - 126, 88, 121, 0, 0, 0, 0, 0, 95, 0, + 69, 70, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, - 82, 0, 0, 0, 0, 0, 0, 0, 0, 52, - 96, 0, 94, 110, 111, 112, 107, 108, 0, 0, - 0, 0, 0, 0, 93, 0, 192, 0, 0, 143, - 113, 109, 103, 0, 85, 86, 87, 0, 0, 0, - 0, 80, 53, 0, 0, 0, 78, 148, 149, 0, - 0, 0, 0, 0, 55, 56, 0, 65, 66, 67, - 68, 69, 70, 71, 173, 177, 176, 92, 77, 0, - 0, 0, 0, 63, 0, 97, 0, 0, 627, 58, - 57, 59, 60, 73, 120, 0, 0, 0, 174, 186, - 187, 184, 185, 188, 189, 190, 191, 182, 183, 175, - 178, 180, 181, 179, 83, 84, 72, 0, 105, 106, - 126, 88, 121, 0, 0, 0, 0, 0, 95, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, - 82, 0, 0, 0, 0, 0, 0, 0, 0, 52, - 96, 0, 94, 110, 111, 112, 107, 108, 0, 0, - 0, 0, 0, 0, 93, 0, 0, 0, 0, 143, - 113, 109, 103, 0, 85, 86, 87, 0, 0, 0, - 0, 80, 53, 0, 0, 0, 78, 148, 149, 0, - 0, 0, 0, 0, 55, 56, 0, 65, 66, 67, - 68, 69, 70, 71, 0, 0, 0, 92, 77, 0, - 0, 0, 0, 63, 0, 97, 0, 0, 292, 58, - 57, 59, 60, 73, 120, 83, 84, 72, 0, 105, - 106, 126, 88, 121, 0, 0, 0, 0, 0, 95, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, - 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, - 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, - 143, 113, 109, 103, 0, 85, 86, 87, 0, 192, - 0, 0, 80, 53, 0, 0, 0, 78, 42, 149, - 0, 0, 0, 0, 0, 55, 56, 0, 65, 66, - 67, 68, 69, 70, 71, 0, 0, 0, 92, 77, - 0, 0, 0, 0, 63, 431, 97, 173, 177, 176, - 58, 57, 59, 60, 73, 120, 83, 84, 72, 0, - 105, 106, 126, 88, 121, 0, 0, 0, 0, 0, - 95, 0, 186, 187, 184, 185, 188, 189, 190, 191, - 182, 183, 175, 178, 180, 181, 179, 0, 0, 45, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 81, 82, 0, 0, 0, 0, 0, 0, 0, - 0, 52, 96, 0, 94, 110, 111, 112, 107, 108, - 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, - 0, 143, 113, 109, 103, 0, 85, 86, 87, 0, - 0, 0, 0, 80, 53, 0, 0, 0, 78, 148, - 149, 0, 0, 0, 0, 0, 55, 56, 0, 65, - 66, 67, 68, 69, 70, 71, 0, 0, 0, 92, - 77, 0, 0, 0, 0, 63, 0, 97, 0, 0, - 407, 58, 57, 59, 60, 73, 120, 83, 84, 72, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, + 77, 17, 0, 35, 334, 63, 0, 97, 0, 0, + 0, 58, 57, 59, 60, 73, 120, 83, 84, 72, + 18, 105, 106, 13, 88, 121, 0, 30, 0, 0, + 0, 95, 29, 20, 19, 0, 21, 0, 33, 0, + 34, 0, 0, 22, 0, 0, 0, 23, 24, 38, + 45, 0, 25, 36, 0, 0, 37, 0, 0, 27, + 0, 32, 81, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 42, 28, 0, 0, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 83, 84, 72, 0, 105, 106, 126, 88, 121, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 92, 77, 17, 0, 35, 0, 63, + 45, 97, 0, 0, 0, 58, 57, 59, 60, 73, + 120, 0, 81, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 489, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 148, 149, 0, 0, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 83, 84, 72, + 0, 105, 106, 126, 88, 121, 0, 0, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 92, 77, 0, 0, 0, 0, 63, + 45, 97, 0, 0, 488, 58, 57, 59, 60, 73, + 120, 0, 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, 148, 149, 0, 0, 0, 0, 0, 55, 56, 0, - 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, - 92, 77, 0, 0, 0, 388, 63, 0, 97, 0, - 0, 0, 58, 57, 59, 60, 73, 120, 83, 84, - 72, 0, 105, 106, 126, 88, 121, 0, 0, 0, - 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 81, 82, 0, 0, 0, 0, 0, - 0, 0, 0, 52, 96, 0, 94, 110, 111, 112, - 107, 108, 0, 0, 0, 0, 0, 0, 93, 0, - 0, 0, 0, 143, 113, 109, 103, 0, 85, 86, - 87, 0, 0, 0, 0, 80, 53, 0, 0, 0, - 78, 148, 149, 0, 0, 0, 0, 0, 55, 56, - 0, 65, 66, 67, 68, 69, 70, 71, 0, 0, - 0, 92, 77, 0, 0, 152, 0, 63, 0, 97, - 0, 0, 0, 58, 57, 59, 60, 73, 120, 83, + 65, 66, 67, 68, 69, 70, 71, 83, 84, 72, + 0, 105, 106, 126, 88, 121, 0, 0, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 92, 77, 0, 0, 0, 0, 63, + 45, 97, 0, 0, 866, 58, 57, 59, 60, 73, + 120, 0, 81, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 148, 149, 0, 0, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 83, 84, 72, + 0, 105, 106, 126, 88, 121, 0, 0, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 92, 77, 0, 0, 0, 0, 63, + 45, 97, 0, 0, 629, 58, 57, 59, 60, 73, + 120, 0, 81, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 148, 149, 0, 0, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 83, 84, 72, + 0, 105, 106, 126, 88, 121, 0, 0, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 92, 77, 0, 0, 0, 0, 63, + 45, 97, 0, 0, 627, 58, 57, 59, 60, 73, + 120, 0, 81, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 148, 149, 0, 0, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 83, 84, 72, + 0, 105, 106, 126, 88, 121, 0, 0, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 92, 77, 0, 0, 0, 0, 63, + 45, 97, 0, 0, 292, 58, 57, 59, 60, 73, + 120, 0, 81, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 42, 149, 0, 0, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 0, 0, 83, 84, 72, 0, 105, 106, 126, 88, 121, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 81, 82, 0, 0, 0, 0, + 0, 0, 0, 92, 77, 0, 0, 0, 0, 63, + 431, 97, 45, 0, 0, 58, 57, 59, 60, 73, + 120, 0, 0, 0, 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, 148, 149, 0, 0, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 83, + 84, 72, 0, 105, 106, 126, 88, 121, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 92, 77, 0, 0, 0, + 0, 63, 45, 97, 0, 0, 407, 58, 57, 59, + 60, 73, 120, 0, 81, 82, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 148, 149, 0, 0, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 83, + 84, 72, 0, 105, 106, 126, 88, 121, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 92, 77, 0, 0, 0, + 388, 63, 45, 97, 0, 0, 0, 58, 57, 59, + 60, 73, 120, 0, 81, 82, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 148, 149, 0, 0, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 83, + 84, 72, 0, 105, 106, 126, 88, 121, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 92, 77, 0, 0, 152, + 0, 63, 45, 97, 0, 0, 0, 58, 57, 59, + 60, 73, 120, 0, 81, 82, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 148, 149, 0, 0, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 83, + 84, 72, 0, 105, 106, 126, 88, 121, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 92, 77, 0, 0, 150, + 0, 63, 45, 97, 0, 0, 0, 58, 57, 59, + 60, 73, 120, 0, 81, 82, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 148, 149, 0, 0, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 83, + 84, 72, 0, 105, 106, 126, 88, 121, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 92, 77, 0, 0, 146, + 0, 63, 45, 97, 0, 0, 0, 58, 57, 59, + 60, 73, 120, 0, 81, 82, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 148, 149, 0, 0, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 83, + 84, 72, 0, 105, 106, 126, 442, 121, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 92, 77, 0, 0, 0, + 0, 63, 45, 97, 0, 0, 0, 58, 57, 59, + 60, 73, 120, 0, 81, 82, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 148, 149, 0, 0, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 83, + 84, 72, 0, 105, 106, 126, 88, 121, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 92, 77, 0, 0, 0, + 0, 63, 45, 97, 0, 0, 0, 58, 57, 59, + 60, 73, 120, 0, 81, 82, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 841, 0, 0, 0, 0, 93, + 842, 0, 0, 840, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 42, 149, 0, 0, 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, 71, 0, - 0, 0, 92, 77, 0, 0, 150, 0, 63, 0, - 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, - 83, 84, 72, 0, 105, 106, 126, 88, 121, 0, - 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 81, 82, 0, 0, 0, - 0, 0, 0, 0, 0, 52, 96, 0, 94, 110, - 111, 112, 107, 108, 0, 0, 0, 0, 0, 0, - 93, 0, 0, 0, 0, 143, 113, 109, 103, 0, - 85, 86, 87, 0, 0, 0, 0, 80, 53, 0, - 0, 0, 78, 148, 149, 0, 0, 0, 0, 0, - 55, 56, 0, 65, 66, 67, 68, 69, 70, 71, - 0, 0, 0, 92, 77, 0, 0, 146, 0, 63, - 0, 97, 0, 0, 0, 58, 57, 59, 60, 73, - 120, 83, 84, 72, 0, 105, 106, 126, 88, 121, - 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 81, 82, 0, 0, - 0, 0, 0, 0, 0, 0, 52, 96, 0, 94, - 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, - 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, - 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, - 0, 0, 0, 78, 148, 149, 0, 0, 0, 0, - 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, - 71, 0, 0, 0, 92, 77, 0, 0, 0, 0, - 63, 0, 97, 0, 0, 0, 58, 57, 59, 60, - 73, 120, 83, 84, 72, 0, 105, 106, 126, 442, - 121, 0, 0, 0, 0, 0, 95, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 81, 82, 0, - 0, 0, 0, 0, 0, 0, 0, 52, 96, 0, - 94, 110, 111, 112, 107, 108, 0, 0, 0, 0, - 0, 0, 93, 0, 0, 0, 0, 143, 113, 109, - 103, 0, 85, 86, 87, 0, 0, 0, 0, 80, - 53, 0, 0, 0, 78, 148, 149, 0, 0, 0, - 0, 0, 55, 56, 0, 65, 66, 67, 68, 69, - 70, 71, 0, 0, 0, 92, 77, 0, 0, 0, + 0, 169, 171, 170, 192, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 847, 848, 849, 846, 845, 844, + 0, 0, 0, 0, 0, 92, 77, 794, 0, 0, 0, 63, 0, 97, 0, 0, 0, 58, 57, 59, - 60, 73, 120, 83, 84, 72, 0, 105, 106, 126, - 88, 121, 0, 0, 0, 0, 0, 95, 0, 0, + 60, 73, 120, 167, 168, 179, 182, 183, 184, 185, + 186, 187, 189, 191, 0, 0, 668, 666, 667, 833, + 0, 0, 0, 857, 193, 173, 177, 176, 0, 0, + 0, 0, 0, 172, 0, 174, 178, 180, 181, 188, + 190, 175, 755, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 670, 669, + 657, 663, 664, 671, 672, 673, 674, 677, 678, 0, + 0, 169, 171, 170, 192, 0, 0, 653, 0, 679, + 661, 655, 654, 0, 0, 0, 0, 0, 660, 0, + 662, 656, 658, 659, 675, 676, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 81, 82, - 0, 0, 0, 0, 0, 0, 0, 0, 52, 96, - 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, - 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, - 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, - 80, 53, 105, 106, 126, 78, 42, 149, 0, 0, - 0, 0, 529, 55, 56, 0, 65, 66, 67, 68, - 69, 70, 71, 0, 0, 0, 92, 77, 0, 0, - 0, 0, 63, 0, 97, 0, 0, 0, 58, 57, - 59, 60, 73, 120, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 524, 0, 527, 110, 111, 112, - 107, 108, 0, 0, 0, 0, 0, 0, 530, 0, - 0, 0, 0, 522, 113, 109, 523, 105, 106, 126, - 0, 0, 0, 0, 0, 0, 0, 529, 0, 0, - 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 167, 168, 179, 182, 183, 184, 185, + 186, 187, 189, 191, 169, 171, 170, 192, 0, 0, + 0, 0, 0, 0, 193, 173, 177, 176, 0, 0, + 0, 0, 0, 172, 0, 174, 178, 180, 181, 188, + 190, 175, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 167, 168, 179, 182, + 183, 184, 185, 186, 187, 189, 191, 0, 0, 0, + 752, 169, 171, 170, 192, 0, 0, 193, 173, 177, + 176, 0, 0, 0, 0, 0, 172, 0, 174, 178, + 180, 181, 188, 190, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 787, 536, 0, 525, - 0, 0, 0, 535, 534, 532, 533, 0, 0, 524, - 0, 527, 110, 111, 112, 107, 108, 0, 0, 0, - 0, 0, 0, 530, 0, 0, 0, 0, 522, 113, - 109, 523, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, + 0, 0, 0, 167, 168, 179, 182, 183, 184, 185, + 186, 187, 189, 191, 0, 0, 0, 708, 169, 171, + 170, 192, 0, 0, 193, 173, 177, 176, 0, 0, + 0, 0, 0, 172, 0, 174, 178, 180, 181, 188, + 190, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 167, 168, 179, 182, 183, 184, 185, 186, 187, 189, + 191, 0, 0, 0, 643, 169, 171, 170, 192, 0, + 0, 193, 173, 177, 176, 0, 0, 0, 0, 0, + 172, 0, 174, 178, 180, 181, 188, 190, 175, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 167, 168, 179, + 182, 183, 184, 185, 186, 187, 189, 191, 0, 0, + 0, 640, 169, 171, 170, 192, 0, 0, 193, 173, + 177, 176, 0, 0, 0, 0, 0, 172, 0, 174, + 178, 180, 181, 188, 190, 175, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 167, 168, 179, 182, 183, 184, + 185, 186, 187, 189, 191, 169, 171, 170, 192, 0, + 0, 0, 622, 0, 0, 193, 173, 177, 176, 0, + 0, 0, 0, 0, 172, 0, 174, 178, 180, 181, + 188, 190, 175, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 167, 168, 179, + 182, 183, 184, 185, 186, 187, 189, 191, 0, 0, + 0, 603, 169, 171, 170, 192, 0, 0, 193, 173, + 177, 176, 0, 0, 0, 0, 0, 172, 0, 174, + 178, 180, 181, 188, 190, 175, 476, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 167, 168, 179, 182, 183, 184, + 185, 186, 187, 189, 191, 169, 171, 170, 192, 0, + 554, 0, 0, 0, 0, 193, 173, 177, 176, 0, + 0, 0, 0, 0, 172, 0, 174, 178, 180, 181, + 188, 190, 175, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 167, 168, 179, + 182, 183, 184, 185, 186, 187, 189, 191, 169, 171, + 170, 192, 0, 0, 0, 0, 0, 0, 193, 173, + 177, 176, 0, 0, 0, 0, 0, 172, 0, 174, + 178, 180, 181, 188, 190, 175, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, + 167, 168, 179, 182, 183, 184, 185, 186, 187, 189, + 191, 0, 0, 0, 0, 0, 0, 0, 429, 0, + 0, 193, 173, 177, 176, 169, 171, 170, 192, 0, + 172, 0, 174, 178, 180, 181, 188, 190, 175, 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, 167, 168, 179, + 182, 183, 184, 185, 186, 187, 189, 191, 169, 171, + 170, 192, 0, 0, 0, 0, 0, 0, 193, 173, + 177, 176, 0, 0, 0, 0, 0, 172, 0, 174, + 178, 180, 181, 188, 190, 175, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 167, 168, 179, 182, 183, 184, 185, 186, 187, 189, + 191, 169, 171, 170, 192, 397, 0, 0, 0, 0, + 0, 193, 173, 177, 176, 0, 0, 0, 0, 0, + 172, 0, 174, 178, 180, 181, 188, 190, 175, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 167, 168, 179, 182, 183, 184, 185, + 186, 187, 189, 191, 169, 171, 170, 192, 347, 0, + 0, 0, 0, 0, 193, 173, 177, 176, 0, 0, + 0, 0, 0, 172, 0, 174, 178, 180, 181, 188, + 190, 175, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 167, 168, 179, 182, + 183, 184, 185, 186, 187, 189, 191, 169, 171, 170, + 192, 346, 0, 0, 0, 0, 0, 193, 173, 177, + 176, 0, 0, 0, 0, 0, 172, 0, 174, 178, + 180, 181, 188, 190, 175, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 668, 666, 667, 167, + 168, 179, 182, 183, 184, 185, 186, 187, 189, 191, + 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, + 193, 173, 177, 176, 0, 0, 0, 0, 0, 172, + 0, 174, 178, 180, 181, 188, 190, 175, 670, 669, + 657, 663, 664, 671, 672, 673, 674, 677, 678, 169, + 171, 170, 192, 0, 0, 0, 0, 653, 0, 679, + 661, 655, 654, 0, 0, 0, 0, 0, 660, 0, + 662, 656, 658, 659, 675, 676, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 666, + 667, 167, 168, 179, 182, 183, 184, 185, 186, 187, + 189, 191, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 193, 173, 177, 176, 0, 0, 0, 0, + 0, 172, 0, 174, 178, 180, 181, 188, 190, 175, + 670, 669, 657, 663, 664, 671, 672, 673, 674, 677, + 678, 171, 170, 192, 0, 0, 0, 0, 0, 653, + 0, 679, 661, 655, 654, 0, 0, 0, 0, 0, + 660, 0, 662, 656, 658, 659, 675, 676, 665, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 167, 168, 179, 182, 183, 184, 185, 186, + 187, 189, 191, 170, 192, 0, 0, 0, 0, 0, + 0, 0, 0, 193, 173, 177, 176, 0, 0, 0, + 0, 0, 172, 0, 174, 178, 180, 181, 188, 190, + 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 167, 168, 179, 182, 183, 184, 185, + 186, 187, 189, 191, 192, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 193, 173, 177, 176, 0, 0, + 0, 0, 0, 172, 0, 174, 178, 180, 181, 188, + 190, 175, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 167, 168, 179, 182, 183, 184, 185, + 186, 187, 189, 191, 192, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 193, 173, 177, 176, 0, 0, + 0, 0, 0, 172, 0, 174, 178, 180, 181, 188, + 190, 175, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 167, 168, 179, 182, 183, 184, 185, + 186, 187, 189, 191, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 173, 177, 176, 0, 0, + 0, 0, 0, 172, 0, 174, 178, 180, 181, 188, + 190, 175, 669, 657, 663, 664, 671, 672, 673, 674, + 677, 678, 192, 0, 0, 0, 0, 0, 0, 0, + 653, 0, 0, 661, 655, 654, 0, 0, 0, 0, + 0, 660, 0, 662, 656, 658, 659, 675, 676, 665, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 168, 179, 182, 183, 184, 185, 186, 187, + 189, 191, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 173, 177, 176, 0, 0, 0, 0, + 0, 172, 0, 174, 178, 180, 181, 188, 190, 175, + 657, 663, 664, 671, 672, 673, 674, 677, 678, 192, + 0, 0, 0, 0, 0, 0, 0, 653, 0, 0, + 661, 655, 654, 0, 0, 0, 0, 0, 660, 0, + 662, 656, 658, 659, 675, 676, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 179, 182, 183, 184, 185, 186, 187, 189, 191, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 173, 177, 176, 0, 0, 0, 0, 0, 172, 0, + 174, 178, 180, 181, 188, 190, 175, 657, 663, 664, + 671, 672, 673, 674, 677, 678, 192, 0, 0, 0, + 0, 0, 0, 0, 653, 0, 0, 661, 655, 654, + 0, 0, 0, 0, 0, 0, 0, 662, 656, 658, + 659, 675, 676, 665, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 179, 182, 183, + 184, 185, 186, 187, 189, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 173, 177, 176, + 0, 0, 0, 0, 0, 0, 0, 174, 178, 180, + 181, 188, 190, 175, 657, 663, 664, 671, 672, 673, + 674, 677, 678, 192, 0, 0, 0, 0, 0, 0, + 0, 653, 0, 0, 0, 655, 654, 0, 0, 0, + 0, 0, 0, 0, 0, 656, 658, 659, 675, 676, + 665, 105, 106, 126, 0, 0, 0, 0, 0, 0, + 0, 529, 0, 0, 179, 182, 183, 184, 185, 186, + 187, 189, 191, 0, 105, 106, 126, 0, 0, 0, + 0, 0, 0, 0, 529, 177, 176, 0, 0, 0, + 0, 0, 0, 0, 0, 178, 180, 181, 188, 190, + 175, 0, 0, 524, 0, 527, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 530, 0, 0, + 0, 0, 522, 113, 109, 523, 524, 0, 527, 110, + 111, 112, 107, 108, 0, 0, 0, 0, 0, 0, + 530, 233, 0, 0, 0, 522, 113, 109, 523, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 233, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 787, 536, + 0, 525, 0, 0, 0, 535, 534, 532, 533, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 0, 525, 0, 0, 0, 535, 534, 532, 533, } var yyPact = [...]int{ - -1000, -1000, 2286, -1000, -1000, -1000, -1000, -1000, 267, 471, - 610, 73, -1000, 269, -1000, -1000, 852, -1000, 209, 209, - 4934, 264, 209, 7826, 7695, 7564, 336, 163, 721, 7957, - -1000, 5808, 263, 262, 261, -1000, 373, 7957, 850, 53, - 844, 843, 7957, -1000, -1000, -1000, -1000, 661, -1000, 659, - -1000, 1185, 258, 7957, 402, 449, 449, 7957, 7957, 7957, - 7957, -1000, -1000, 8219, -1000, 7957, 7957, 7957, 7957, 7957, - 7957, 7957, 252, 7957, -1000, 170, 167, 891, 7957, 595, - 702, 250, 246, 7957, 7957, 245, 7957, 7957, -1000, 166, - -1000, -1000, 887, 781, -1000, 165, 244, 7040, -1000, 159, - 156, -1000, 206, 808, 543, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 103, 160, -1000, 537, 210, -1000, - 372, -1000, 199, 359, -1000, 808, -1000, 57, 571, 540, - -1000, 621, 808, -1000, 842, -1000, -17, 4015, 4803, 8219, - 4672, 718, 53, 485, 7957, 255, -1000, 5761, -1000, 688, - -1000, 5714, -1000, 333, 1259, 5896, -1000, 56, -1000, -1000, - 411, 45, 53, -18, 38, 5896, -1000, 7957, 7957, 7957, - 7957, 7957, 7957, 7957, 7957, 7957, 7957, 7957, 7957, 7957, - 7957, 7957, 7957, 7957, 7957, 7957, 7957, 7957, 7957, 7957, - 7957, 7957, 702, 7433, 449, 7957, 841, -1000, 5667, 332, - 286, -1000, 645, 639, -1000, 1185, 5620, -1000, -1000, 7302, - 7957, 7957, 7957, 7957, 7957, 7957, 7957, 7957, 7957, 7957, - 7957, 7957, 404, -1000, -1000, -1000, -1000, -1000, 206, 474, - 808, 536, 525, -1000, -1000, -115, -115, -47, -115, 196, - 5576, 195, -115, -115, -115, -115, -115, -115, -115, -1000, - 7171, -1000, -115, 7957, 7957, 376, 706, 684, -1000, 219, - 8088, 449, 6065, 67, 210, 524, -1000, 422, 445, 808, - 583, 103, 160, 513, 7957, 7957, 5896, 5896, 7957, 5896, - 5896, 7957, 532, 706, 697, -1000, 710, 7957, 7040, 145, - 30, 5532, 449, 7957, 7957, 839, -1000, 6323, 206, 55, - 7957, 7957, 103, 372, 68, -1000, 7957, 330, -1000, -1000, - 2146, 206, -1000, 613, 19, -1000, 609, 808, 7, -1000, - 606, 808, 838, 604, -27, 8379, -1000, -1000, -1000, -1000, - -1000, -1000, 241, -1000, -1000, -1000, -1000, -1000, 209, 239, - 329, 20, 5896, -1000, 325, 324, -1000, -1000, -1000, -1000, - -1000, 163, -1000, 7957, -1000, -1000, 784, 237, 8379, -1000, - 7957, 6192, 6464, 5939, 6065, 6024, 6876, 6625, 7169, 4, - 4, 4, -47, -115, -47, -47, 100, 100, 953, 953, - 953, 953, 863, 863, 863, 863, -1000, 5488, 7957, 3, - -1000, -1000, 1121, 715, -3, -39, 3882, -1000, -1000, 228, - 519, 628, 563, 368, 563, 7957, 6065, 351, 6065, 6065, - 6065, 6065, 6065, 6065, 6065, 6065, 6065, 6065, 6065, 6065, - -12, -1000, -1000, 224, 808, 206, 67, 67, 212, -1000, - -1000, -1000, 142, 5896, 133, -1000, -1000, -1000, -1000, 803, - 836, 5442, 155, 342, 210, 164, -1000, -1000, 103, 160, - -1000, 7957, -1000, -1000, 148, 808, 422, 67, 103, 148, - -22, -1000, 1185, -1000, 1046, 193, 5394, 125, -1000, -1000, - -1000, 107, 192, -1000, -1000, 6890, 6759, -1000, -1000, 106, - 99, -1000, -1000, -25, 189, -1000, -1000, 1185, 449, 7957, - -1000, 210, 210, -1000, -1000, 93, 5350, 210, 210, -1000, - 5302, -1000, 1759, -1000, -1000, -1000, -1000, 571, 831, 522, - -1000, 540, 830, 517, -1000, 825, 8379, -1000, 5852, -1000, - -1000, 422, 443, 808, 216, 8379, -1000, -1000, -1000, -1000, - 615, 508, 8379, 8379, 8379, 8379, 8379, 188, 447, 4148, - 3749, 323, 7957, 7957, 399, -1000, 737, -1000, -1000, 5254, - -40, 519, -1000, 5896, 7957, 4932, 322, 449, 1529, 1529, - 4541, 821, 8379, 687, 519, 187, -4, -1000, 53, -1000, - -1000, -1000, 422, 436, 808, 365, 563, -1000, -1000, -29, - -1000, -1000, 1185, -1000, 702, -43, 404, 404, 206, -1000, - -1000, 161, 572, 7957, -1000, 67, -1000, -1000, 88, -1000, - -1000, -1000, -1000, -1000, 7957, -1000, -1000, 154, 147, -1000, - 7957, 7957, 103, 5206, -1000, 422, -1000, -1000, -1000, 7957, - -1000, -1000, -1000, -1000, -1000, -1000, 5158, 449, 5896, 449, - -1000, -1000, -1000, 6478, -1000, -1000, 5896, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 818, -1000, -1000, - 811, -1000, -1000, 8379, 8379, 8379, 8379, 8379, 8379, 8379, - 8379, 8379, 8379, 8379, 8379, 8379, 8379, 8379, 8379, 8379, - 8379, 8379, 8379, 8379, 8379, 8379, 8379, 8379, 8379, 8304, - 808, 422, 8379, 83, -11, 5114, 535, 714, -72, -72, - -81, -81, 5070, 317, -1000, 209, 4934, 429, 316, -1000, - 315, 5896, -1000, 7957, 233, 396, 314, 709, -1000, 8379, - 186, 4932, -1000, -1000, 566, -1000, 449, 215, 566, -1000, - -1000, -1000, -62, -1000, 679, 213, 184, 676, 519, 412, - 808, 422, -1000, -29, 1023, 563, 210, 7957, -1000, -32, - 7957, 572, -1000, 80, 210, -1000, 5026, 572, 7957, 7957, - 79, 4982, -1000, 570, -1000, 6628, -1000, -1000, -1000, -1000, - -1000, 1911, -81, -81, -72, -72, -72, -72, 1333, 1788, - 82, 33, 33, -81, 5982, 6108, 1955, 6314, 1571, -14, - -14, -14, -14, 91, 91, 91, 91, 8379, 1190, 422, - 183, -1000, -1000, 8379, 8379, -1000, -1000, -1000, -1000, 4934, - -1000, 375, 209, 234, -1000, 7957, 1051, -1000, -1000, -1000, - -1000, -1000, 303, -1000, 676, 182, 1529, -1000, 404, 180, - 3616, 8379, -1000, 363, 563, 358, 355, 207, -1000, 778, - -1000, 422, 817, -1000, -1000, 767, -30, -1000, 688, 708, - -1000, 802, 563, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 6065, -1000, 77, -1000, -1000, 340, -1000, 62, - 59, -1000, -1000, -1000, 67, 5896, 449, -1000, 6151, 8379, - -1000, 1807, 5852, -1000, 296, 220, -1000, 179, -1000, 4148, - -1000, 352, 4410, -1000, -34, 4410, 294, -1000, -1000, 766, - -1000, -1000, 172, -64, -1000, -46, -66, -1000, 793, 53, - -1000, -67, -59, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 6151, 8379, -1000, -1000, 4148, 4279, 4148, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 3483, 178, 3350, 3217, -37, -1000, - 744, 8379, -1000, 736, 8379, -70, 791, 8379, -1000, 563, - -1000, 564, 5852, 4148, -1000, -1000, -1000, 3084, 2951, -1000, - 346, -1000, -1000, -1000, 171, -1000, -1000, -82, -1000, 8379, - 205, -1000, -1000, 338, 564, -1000, 292, 290, 670, 703, - 433, -1000, 2818, -1000, 273, -1000, -1000, 733, 8379, -1000, - 519, -1000, -1000, -1000, -1000, 563, 708, 789, 214, -1000, - 2685, -1000, -1000, 177, -80, -1000, 787, -1000, -1000, -1000, - 685, 281, 563, -1000, -1000, 685, -1000, 202, -1000, -1000, - -1000, -1000, -1000, 563, 2552, 723, -1000, 58, 345, -1000, - 2419, -1000, + -1000, -1000, 2475, -1000, -1000, -1000, -1000, -1000, 296, 501, + 570, 107, -1000, 306, -1000, -1000, 914, -1000, 227, 227, + 5583, 295, 227, 6795, 6685, 6575, 362, 162, 756, 6905, + -1000, 8040, 292, 291, 287, -1000, 387, 6905, 913, 26, + 912, 904, 6905, -1000, -1000, -1000, -1000, 680, -1000, 676, + -1000, 1368, 286, 6905, 436, 218, 218, 6905, 6905, 6905, + 6905, -1000, -1000, 7125, -1000, 6905, 6905, 6905, 6905, 6905, + 6905, 6905, 285, 6905, -1000, 177, 175, 891, 6905, 665, + 703, 278, 277, 6905, 6905, 270, 6905, 6905, -1000, 165, + -1000, -1000, 887, 840, -1000, 164, 269, 6133, -1000, 163, + 160, -1000, 228, 830, 560, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 116, 137, -1000, 556, 231, -1000, + 386, -1000, 216, 339, -1000, 830, -1000, 91, 610, 604, + -1000, 674, 830, -1000, 901, -1000, -70, 4503, 5429, 7125, + 5275, 752, 26, 521, 6905, 272, -1000, 7987, -1000, 707, + -1000, 7934, -1000, 360, 1606, 8132, -1000, 67, -1000, -1000, + 150, 64, 26, -73, 48, 8132, -1000, 6905, 6905, 6905, + 6905, 6905, 6905, 6905, 6905, 6905, 6905, 6905, 6905, 6905, + 6905, 6905, 6905, 6905, 6905, 6905, 6905, 6905, 6905, 6905, + 6905, 6905, 703, 6465, 218, 6905, 897, -1000, 7881, 358, + 341, -1000, 671, 670, -1000, 1368, 7828, -1000, -1000, 6355, + 6905, 6905, 6905, 6905, 6905, 6905, 6905, 6905, 6905, 6905, + 6905, 6905, 699, -1000, -1000, -1000, -1000, -1000, 228, 520, + 830, 555, 554, -1000, -1000, 400, 400, 448, 400, 215, + 7761, 213, 400, 400, 400, 400, 400, 400, 400, -1000, + 6243, -1000, 400, 6905, 6905, 389, 684, 852, -1000, 246, + 7015, 218, 8324, 134, 231, 543, -1000, 485, 517, 830, + 664, 116, 137, 537, 6905, 6905, 8132, 8132, 6905, 8132, + 8132, 6905, 574, 684, 843, -1000, 786, 6905, 6133, 152, + 17, 7708, 218, 6905, 6905, 892, -1000, 1698, 228, 111, + 6905, 6905, 116, 386, 138, -1000, 6905, 351, -1000, -1000, + 2319, 228, -1000, 630, 36, -1000, 666, 830, -4, -1000, + 606, 830, 856, 545, -77, 8856, -1000, -1000, -1000, -1000, + -1000, -1000, 267, -1000, -1000, -1000, -1000, -1000, 227, 265, + 350, -39, 8132, -1000, 349, 348, -1000, -1000, -1000, -1000, + -1000, 162, -1000, 6905, -1000, -1000, 806, 263, 8856, -1000, + 6905, 8462, 8549, 8223, 8324, 8274, 8636, 8723, 1836, 34, + 34, 34, 448, 400, 448, 448, 57, 57, 297, 297, + 297, 297, 38, 38, 38, 38, -1000, 7655, 6905, 31, + -1000, -1000, 996, 741, 8, -82, 4347, -1000, -1000, 256, + 563, 668, 612, 385, 612, 6905, 8324, 708, 8324, 8324, + 8324, 8324, 8324, 8324, 8324, 8324, 8324, 8324, 8324, 8324, + -15, -1000, -1000, 254, 830, 228, 134, 134, 242, -1000, + -1000, -1000, 147, 8132, 135, -1000, -1000, -1000, -1000, 803, + 848, 7598, 158, 370, 231, 140, -1000, -1000, 116, 137, + -1000, 6905, -1000, -1000, 133, 830, 485, 134, 116, 133, + -16, -1000, 1368, -1000, 119, 209, 7545, 132, -1000, -1000, + -1000, 123, 207, -1000, -1000, 6023, 5913, -1000, -1000, 122, + 118, -1000, -1000, -20, 197, -1000, -1000, 1368, 218, 6905, + -1000, 231, 231, -1000, -1000, 110, 7488, 231, 231, -1000, + 7431, -1000, 2163, -1000, -1000, -1000, -1000, 610, 844, 527, + -1000, 604, 841, 522, -1000, 839, 8856, -1000, 8079, -1000, + -1000, 485, 516, 830, 245, 8856, -1000, -1000, -1000, -1000, + 632, 532, 8856, 8856, 8856, 8856, 8856, 195, 456, 4659, + 4191, 342, 6905, 6905, 458, -1000, 919, -1000, -1000, 7374, + -84, 563, -1000, 8132, 6905, 8374, 340, 218, 204, 204, + 5121, 838, 8856, 704, 563, 192, -43, -1000, 26, -1000, + -1000, -1000, 485, 508, 830, 383, 612, -1000, -1000, -60, + -1000, -1000, 1368, -1000, 703, -91, 699, 699, 228, -1000, + -1000, 199, 643, 6905, -1000, 134, -1000, -1000, 108, -1000, + -1000, -1000, -1000, -1000, 6905, -1000, -1000, 156, 141, -1000, + 6905, 6905, 116, 7317, -1000, 485, -1000, -1000, -1000, 6905, + -1000, -1000, -1000, -1000, -1000, -1000, 7264, 218, 8132, 218, + -1000, -1000, -1000, 5693, -1000, -1000, 8132, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 836, -1000, -1000, + 831, -1000, -1000, 8856, 8856, 8856, 8856, 8856, 8856, 8856, + 8856, 8856, 8856, 8856, 8856, 8856, 8856, 8856, 8856, 8856, + 8856, 8856, 8856, 8856, 8856, 8856, 8856, 8856, 8856, 8833, + 830, 485, 8856, 106, -55, 7209, 573, 717, 121, 121, + -71, -71, 1935, 338, -1000, 227, 5583, 452, 336, -1000, + 334, 8132, -1000, 6905, 241, 438, 333, 916, -1000, 8856, + 190, 8374, -1000, -1000, 595, -1000, 218, 238, 595, -1000, + -1000, -1000, -93, -1000, 697, 235, 189, 691, 563, 464, + 830, 485, -1000, -60, 7156, 612, 231, 6905, -1000, -40, + 6905, 643, -1000, 105, 231, -1000, 7154, 643, 6905, 6905, + 69, 1896, -1000, 633, -1000, 5803, -1000, -1000, -1000, -1000, + -1000, 1239, -71, -71, 121, 121, 121, 121, 8586, 8673, + 1980, -51, -51, -71, 1785, 1383, 8171, 8499, 8412, 20, + 20, 20, 20, -78, -78, -78, -78, 8856, 1186, 485, + 188, -1000, -1000, 8856, 8856, -1000, -1000, -1000, -1000, 5583, + -1000, 449, 227, 299, -1000, 6905, 1053, -1000, -1000, -1000, + -1000, -1000, 330, -1000, 691, 186, 204, -1000, 699, 185, + 4035, 8856, -1000, 381, 612, 380, 377, 223, -1000, 788, + -1000, 485, 2007, -1000, -1000, 784, -38, -1000, 707, 709, + -1000, 826, 612, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 8324, -1000, 63, -1000, -1000, 366, -1000, 58, + 54, -1000, -1000, -1000, 134, 8132, 218, -1000, 1490, 8856, + -1000, 1734, 8079, -1000, 321, 219, -1000, 183, -1000, 4659, + -1000, 376, 4967, -1000, -48, 4967, 314, -1000, -1000, 774, + -1000, -1000, 187, -94, -1000, -49, -98, -1000, 825, 26, + -1000, -108, -79, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1490, 8856, -1000, -1000, 4659, 4813, 4659, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 3879, 182, 3723, 3567, -53, -1000, + 772, 8856, -1000, 771, 8856, -116, 821, 8856, -1000, 612, + -1000, 619, 8079, 4659, -1000, -1000, -1000, 3411, 3255, -1000, + 374, -1000, -1000, -1000, 169, -1000, -1000, -117, -1000, 8856, + 222, -1000, -1000, 364, 619, -1000, 313, 310, 688, 737, + 528, -1000, 3099, -1000, 309, -1000, -1000, 767, 8856, -1000, + 563, -1000, -1000, -1000, -1000, 612, 709, 818, 302, -1000, + 2943, -1000, -1000, 181, -62, -1000, 811, -1000, -1000, -1000, + 701, 301, 612, -1000, -1000, 701, -1000, 221, -1000, -1000, + -1000, -1000, -1000, 612, 2787, 762, -1000, 170, 343, -1000, + 2631, -1000, } var yyPgo = [...]int{ - 0, 29, 1091, 1090, 38, 31, 30, 572, 1088, 1086, - 134, 217, 204, 88, 1385, 82, 63, 59, 651, 1422, - 1085, 33, 1081, 1080, 1079, 136, 1078, 36, 37, 1077, - 1076, 1075, 1074, 135, 1073, 1072, 24, 1069, 26, 48, - 45, 1068, 634, 34, 1066, 1, 1065, 1063, 27, 1062, - 73, 68, 61, 1060, 1059, 1058, 35, 1057, 1056, 4, - 1055, 1054, 1053, 17, 1051, 1049, 1048, 1047, 1046, 51, - 5, 1045, 1042, 1041, 1040, 1037, 2, 1033, 631, 1032, - 39, 0, 1018, 1017, 1013, 117, 1007, 1001, 513, 1000, - 998, 42, 8, 995, 9, 991, 990, 988, 14, 49, - 985, 983, 982, 980, 976, 974, 3, 971, 16, 962, - 961, 959, 958, 955, 28, 952, 951, 950, 949, 948, - 947, 945, 21, 939, 933, 930, 25, 929, 23, 12, - 928, 40, 924, 923, 922, 914, 41, 6, 19, 18, - 22, 911, 907, 902, 13, 869, 866, 865, 15, 863, + 0, 29, 1094, 1092, 38, 31, 30, 572, 1091, 1090, + 134, 217, 204, 88, 1385, 82, 72, 59, 684, 1422, + 1088, 33, 1086, 1085, 1083, 136, 1082, 36, 37, 1081, + 1080, 1079, 1078, 135, 1077, 1076, 24, 1075, 26, 48, + 45, 1074, 708, 34, 1073, 1, 1072, 1070, 27, 1069, + 73, 68, 61, 1068, 1067, 1066, 35, 1065, 1063, 4, + 1062, 1061, 1060, 17, 1059, 1058, 1057, 1056, 1055, 51, + 5, 1054, 1053, 1051, 1049, 1048, 2, 1047, 631, 1046, + 39, 0, 1045, 1043, 1042, 117, 1041, 1040, 553, 1037, + 1033, 42, 8, 1032, 9, 1030, 1029, 1028, 14, 49, + 1027, 1026, 1024, 1018, 1017, 1013, 3, 1007, 16, 1001, + 1000, 998, 995, 993, 28, 992, 991, 990, 988, 985, + 983, 982, 21, 980, 976, 974, 25, 971, 23, 12, + 962, 40, 961, 959, 958, 955, 41, 6, 19, 18, + 22, 953, 945, 939, 13, 937, 933, 930, 15, 853, 7, 20, } var yyR1 = [...]int{ @@ -1710,108 +1760,108 @@ var yyR2 = [...]int{ var yyChk = [...]int{ -1000, -149, -80, -3, 2, -25, -51, -52, 51, 79, - 44, -53, -26, 10, -60, -61, 38, 119, 7, 21, + 44, -53, -26, 10, -60, -61, 38, 142, 7, 21, 20, 23, 30, 34, 35, 39, -50, 46, 98, 19, - 14, -14, 48, 25, 27, 121, 40, 43, 36, -1, + 14, -14, 48, 25, 27, 144, 40, 43, 36, -1, -64, -2, 97, -16, -15, 37, 52, 99, 53, 100, - 54, -19, 59, 92, -18, 104, 105, 130, 129, 131, - 132, -48, -42, 123, -37, 107, 108, 109, 110, 111, - 112, 113, 6, 133, -29, -47, -46, 118, 96, -20, + 54, -19, 59, 92, -18, 104, 105, 153, 152, 154, + 155, -48, -42, 146, -37, 107, 108, 109, 110, 111, + 112, 113, 6, 156, -29, -47, -46, 141, 96, -20, 91, 49, 50, 4, 5, 84, 85, 86, 11, -35, - -32, -7, 117, 74, 62, 18, 60, 125, -21, -22, + -32, -7, 140, 74, 62, 18, 60, 148, -21, -22, -23, -30, -81, 82, -11, 8, 9, 66, 67, 81, 63, 64, 65, 80, -10, -136, -44, -12, -40, -9, - 134, 12, 123, -81, 119, 82, 10, -82, 37, 38, - -4, -81, 82, 121, 135, 122, 10, -85, -48, 123, - -48, -25, -1, 79, 123, -48, 121, -14, 97, 98, - 121, -14, 121, -15, -19, -14, 121, -86, -27, 12, - 134, -87, -1, 12, -100, -14, 121, 149, 150, 87, - 89, 88, 151, 128, 152, 163, 130, 129, 164, 167, - 165, 166, 161, 162, 155, 156, 153, 154, 157, 158, - 159, 160, 90, 127, 123, 123, 123, 119, -14, 10, - -144, 128, 10, 10, -15, -19, -14, 52, 52, 136, - 137, 138, 139, 148, 140, 141, 142, 143, 144, 145, - 146, 147, 123, -14, 104, 105, -18, -19, -81, 79, + 157, 12, 146, -81, 142, 82, 10, -82, 37, 38, + -4, -81, 82, 144, 158, 145, 10, -85, -48, 146, + -48, -25, -1, 79, 146, -48, 144, -14, 97, 98, + 144, -14, 144, -15, -19, -14, 144, -86, -27, 12, + 157, -87, -1, 12, -100, -14, 144, 129, 130, 87, + 89, 88, 159, 151, 161, 167, 153, 152, 162, 131, + 163, 164, 132, 133, 134, 135, 136, 137, 165, 138, + 166, 139, 90, 150, 146, 146, 146, 142, -14, 10, + -144, 151, 10, 10, -15, -19, -14, 52, 52, 160, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 146, -14, 104, 105, -18, -19, -81, 79, 82, -11, -12, 98, -18, -14, -14, -14, -14, -42, -14, -50, -14, -14, -14, -14, -14, -14, -14, -49, - 123, -48, -14, 125, 125, -121, 17, -88, -33, 12, + 146, -48, -14, 148, 148, -121, 17, -88, -33, 12, 76, 77, -14, 57, -43, -11, -41, -81, 79, 82, - -21, -10, -136, -12, 123, 123, -14, -14, 123, -14, - -14, 125, -88, 17, 17, 75, -88, 125, 123, -91, - -90, -14, 128, 125, 125, 82, -140, 123, -81, 78, - 125, 119, -10, 134, 78, -140, 119, 124, 121, 119, - -80, -81, 121, 135, -83, -5, -81, 82, -84, -6, - -81, 82, 29, -81, 10, 136, -24, 120, 2, -25, - -51, -52, 51, -25, 122, -146, -25, 122, 21, -144, - -98, -97, -14, -141, 119, 122, 121, 121, 121, 121, - 121, 135, -16, 119, -19, 121, 135, -144, 136, 121, - 135, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -21, -10, -136, -12, 146, 146, -14, -14, 146, -14, + -14, 148, -88, 17, 17, 75, -88, 148, 146, -91, + -90, -14, 151, 148, 148, 82, -140, 146, -81, 78, + 148, 142, -10, 157, 78, -140, 142, 147, 144, 142, + -80, -81, 144, 158, -83, -5, -81, 82, -84, -6, + -81, 82, 29, -81, 10, 160, -24, 143, 2, -25, + -51, -52, 51, -25, 145, -146, -25, 145, 21, -144, + -98, -97, -14, -141, 142, 145, 144, 144, 144, 144, + 144, 158, -16, 142, -19, 144, 158, -144, 160, 144, + 158, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -43, -14, 122, -101, - -56, -19, -19, -15, -102, 10, -85, 121, 121, 10, - 123, -65, 55, -113, 55, 58, -14, 128, -14, -14, + -14, -14, -14, -14, -14, -14, -43, -14, 145, -101, + -56, -19, -19, -15, -102, 10, -85, 144, 144, 10, + 146, -65, 55, -113, 55, 58, -14, 151, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -92, -38, -19, 59, 82, -81, 78, 78, 124, 124, - 124, 124, -13, -14, -13, 118, -33, -33, 17, 125, + -92, -38, -19, 59, 82, -81, 78, 78, 147, 147, + 147, 147, -13, -14, -13, 141, -33, -33, 17, 148, 57, -14, 11, -19, -131, -132, -40, -39, -10, -136, - 10, 119, -139, -140, 78, 82, -81, 57, -10, 78, - -89, -36, -19, -15, -19, -15, -14, -13, 117, 75, - 75, -13, -91, 126, -151, 135, 58, -17, -19, -13, - -13, 10, 124, -115, -50, -69, -15, -19, 128, 83, + 10, 142, -139, -140, 78, 82, -81, 57, -10, 78, + -89, -36, -19, -15, -19, -15, -14, -13, 140, 75, + 75, -13, -91, 149, -151, 158, 58, -17, -19, -13, + -13, 10, 147, -115, -50, -69, -15, -19, 151, 83, -140, -39, -40, 10, 52, -13, -14, -39, -40, 10, - -14, 121, -80, 120, -140, -4, 121, 135, 29, -81, - 121, 135, 29, -81, 10, 29, 136, -28, -78, -7, - -31, -81, 79, 82, 60, 125, -8, 62, -79, 18, - 74, -11, 131, 132, 130, 129, 123, 123, -95, -85, - -85, -48, 121, 135, -99, 121, -99, 121, -27, -14, - 12, 123, -28, -14, 122, -14, 124, 135, 29, 29, - 124, 135, 136, 120, 123, -106, -107, -63, -62, 60, - 61, -45, -81, 79, 82, -109, 56, -45, 119, -114, - -45, -15, -19, -19, 91, 124, 135, 123, -81, -127, - -125, -124, -126, 125, -128, 57, 126, 126, -34, 10, - 13, 12, 10, 120, 125, 120, -129, -77, -130, -140, - 125, 119, -10, -14, -40, -81, -131, -40, 124, 135, - 124, 124, 124, 126, 126, 124, -14, 128, -14, 128, - 126, 126, 124, 135, 124, -17, -14, -140, -140, 126, - 120, -140, -140, 120, 120, -5, 10, 29, -6, 10, - 29, 10, -28, 125, 130, 129, 164, 167, 165, 166, - 151, 128, 152, 161, 162, 163, 88, 89, 87, 150, - 149, 155, 156, 153, 154, 157, 159, 158, 160, 127, - 82, -81, 123, -122, -123, -78, 17, 78, -78, -78, - -78, -78, -78, 124, -54, 93, 94, -96, 22, 121, - -98, -14, 120, 32, 33, -99, 31, -99, 120, 136, - -106, -14, 121, -56, -137, -19, 128, 59, -137, -57, - -25, 122, 10, -28, -103, 41, -106, 124, 135, -144, - 82, -81, 119, -114, -108, 135, -43, 136, -38, -92, - 125, -126, -128, -13, -131, 126, -14, -135, 125, 125, - -13, -14, 120, -134, -36, 58, -17, -17, -69, 10, + -14, 144, -80, 143, -140, -4, 144, 158, 29, -81, + 144, 158, 29, -81, 10, 29, 160, -28, -78, -7, + -31, -81, 79, 82, 60, 148, -8, 62, -79, 18, + 74, -11, 154, 155, 153, 152, 146, 146, -95, -85, + -85, -48, 144, 158, -99, 144, -99, 144, -27, -14, + 12, 146, -28, -14, 145, -14, 147, 158, 29, 29, + 147, 158, 160, 143, 146, -106, -107, -63, -62, 60, + 61, -45, -81, 79, 82, -109, 56, -45, 142, -114, + -45, -15, -19, -19, 91, 147, 158, 146, -81, -127, + -125, -124, -126, 148, -128, 57, 149, 149, -34, 10, + 13, 12, 10, 143, 148, 143, -129, -77, -130, -140, + 148, 142, -10, -14, -40, -81, -131, -40, 147, 158, + 147, 147, 147, 149, 149, 147, -14, 151, -14, 151, + 149, 149, 147, 158, 147, -17, -14, -140, -140, 149, + 143, -140, -140, 143, 143, -5, 10, 29, -6, 10, + 29, 10, -28, 148, 153, 152, 162, 131, 163, 164, + 159, 151, 161, 132, 133, 167, 88, 89, 87, 130, + 129, 134, 135, 136, 137, 165, 166, 138, 139, 150, + 82, -81, 146, -122, -123, -78, 17, 78, -78, -78, + -78, -78, -78, 147, -54, 93, 94, -96, 22, 144, + -98, -14, 143, 32, 33, -99, 31, -99, 143, 160, + -106, -14, 144, -56, -137, -19, 151, 59, -137, -57, + -25, 145, 10, -28, -103, 41, -106, 147, 158, -144, + 82, -81, 142, -114, -108, 158, -43, 160, -38, -92, + 148, -126, -128, -13, -131, 149, -14, -135, 148, 148, + -13, -14, 143, -134, -36, 58, -17, -17, -69, 10, 10, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, - -78, -78, -78, -78, -78, -78, -78, 122, -78, -81, - -122, 126, -151, 135, 58, 10, 52, 124, 121, -48, - -25, -55, 93, 94, 121, 121, -14, -150, 122, 121, - 120, 121, 31, -28, 124, -138, 58, -19, 123, -138, - -85, 136, -58, 42, 123, 124, -94, 44, -63, -145, - 83, -81, -108, 120, -66, -110, -67, -68, -111, -120, + -78, -78, -78, -78, -78, -78, -78, 145, -78, -81, + -122, 149, -151, 158, 58, 10, 52, 147, 144, -48, + -25, -55, 93, 94, 144, 144, -14, -150, 145, 144, + 143, 144, 31, -28, 147, -138, 58, -19, 146, -138, + -85, 160, -58, 42, 146, 147, -94, 44, -63, -145, + 83, -81, -108, 143, -66, -110, -67, -68, -111, -120, 47, 38, 44, -76, 103, 102, 101, 98, 99, 100, - -45, -139, -14, 124, -13, 126, -129, 126, -128, -13, - -13, 126, 120, -133, 57, -14, 128, 126, -78, 122, - 124, -78, -78, -25, 95, -48, 122, -98, -150, -85, - 121, -94, 124, -137, -92, 124, 28, -28, 119, -45, - 119, 119, 123, 12, 120, -112, 12, 121, 135, -1, - -76, 10, -116, -45, 126, 120, 126, 126, -131, -17, - -78, 58, 121, 122, -85, 124, -85, 119, -148, -25, - 122, 124, -148, 121, -85, 12, -85, -85, -93, 12, - 128, 136, 121, 135, 136, 10, -144, 136, -143, 135, - 121, 119, -78, -85, -147, -25, 122, -85, -85, 120, - 124, 120, 120, 124, 135, 12, -28, 12, -28, 136, + -45, -139, -14, 147, -13, 149, -129, 149, -128, -13, + -13, 149, 143, -133, 57, -14, 151, 149, -78, 145, + 147, -78, -78, -25, 95, -48, 145, -98, -150, -85, + 144, -94, 147, -137, -92, 147, 28, -28, 142, -45, + 142, 142, 146, 12, 143, -112, 12, 144, 158, -1, + -76, 10, -116, -45, 149, 143, 149, 149, -131, -17, + -78, 58, 144, 145, -85, 147, -85, 142, -148, -25, + 145, 147, -148, 144, -85, 12, -85, -85, -93, 12, + 151, 160, 144, 158, 160, 10, -144, 160, -143, 158, + 144, 142, -78, -85, -147, -25, 145, -85, -85, 143, + 147, 143, 143, 147, 158, 12, -28, 12, -28, 160, 10, -28, -45, -117, -118, -70, -71, -72, -73, -74, - -45, 10, -85, 120, 26, 119, 12, 128, 136, -28, - 123, 120, -70, 121, 121, 45, 29, 78, 24, 121, - -85, 12, -28, -106, -119, -45, -75, -76, 10, 121, - 120, 124, 135, 10, -104, -105, -59, 41, -142, 121, - 119, -45, -59, 123, -85, -45, 120, 12, 124, 119, - -85, 120, + -45, 10, -85, 143, 26, 142, 12, 151, 160, -28, + 146, 143, -70, 144, 144, 45, 29, 78, 24, 144, + -85, 12, -28, -106, -119, -45, -75, -76, 10, 144, + 143, 147, 158, 10, -104, -105, -59, 41, -142, 144, + 142, -45, -59, 146, -85, -45, 143, 12, 147, 142, + -85, 143, } var yyDef = [...]int{ @@ -1924,16 +1974,16 @@ var yyTok1 = [...]int{ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 131, 117, 3, 134, 166, 128, 3, - 123, 124, 164, 130, 135, 129, 163, 165, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 122, 121, - 157, 136, 159, 127, 133, 3, 3, 3, 3, 3, + 3, 3, 3, 154, 140, 3, 157, 164, 151, 3, + 146, 147, 162, 153, 158, 152, 167, 163, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 145, 144, + 165, 160, 166, 150, 156, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 125, 3, 126, 152, 3, 118, 3, 3, 3, + 3, 148, 3, 149, 161, 3, 141, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 119, 151, 120, 132, + 3, 3, 3, 142, 159, 143, 155, } var yyTok2 = [...]int{ @@ -1948,9 +1998,9 @@ var yyTok2 = [...]int{ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 153, - 154, 155, 156, 158, 160, 161, 162, 167, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, } var yyTok3 = [...]int{ 0, @@ -2295,14 +2345,14 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:236 + //line php5/php5.y:268 { yylex.(*Parser).rootNode = stmt.NewStmtList(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(yylex.(*Parser).rootNode, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) } case 2: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:244 + //line php5/php5.y:276 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2310,13 +2360,13 @@ yydefault: } case 3: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:249 + //line php5/php5.y:281 { yyVAL.list = []node.Node{} } case 4: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:254 + //line php5/php5.y:286 { namePart := name.NewNamePart(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -2325,7 +2375,7 @@ yydefault: } case 5: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:261 + //line php5/php5.y:293 { namePart := name.NewNamePart(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -2334,32 +2384,32 @@ yydefault: } case 6: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:271 + //line php5/php5.y:303 { // error yyVAL.node = nil } case 7: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:276 + //line php5/php5.y:308 { yyVAL.node = yyDollar[1].node } case 8: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:278 + //line php5/php5.y:310 { yyVAL.node = yyDollar[1].node } case 9: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:280 + //line php5/php5.y:312 { yyVAL.node = yyDollar[1].node } case 10: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:282 + //line php5/php5.y:314 { yyVAL.node = stmt.NewHaltCompiler() yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -2367,7 +2417,7 @@ yydefault: } case 11: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:288 + //line php5/php5.y:320 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2379,7 +2429,7 @@ yydefault: } case 12: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:298 + //line php5/php5.y:330 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2391,7 +2441,7 @@ yydefault: } case 13: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:308 + //line php5/php5.y:340 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -2399,7 +2449,7 @@ yydefault: } case 14: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:314 + //line php5/php5.y:346 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2407,7 +2457,7 @@ yydefault: } case 15: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:320 + //line php5/php5.y:352 { useType := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -2419,7 +2469,7 @@ yydefault: } case 16: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:330 + //line php5/php5.y:362 { useType := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -2431,25 +2481,25 @@ yydefault: } case 17: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:340 + //line php5/php5.y:372 { yyVAL.node = yyDollar[1].node } case 18: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:345 + //line php5/php5.y:377 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 19: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:347 + //line php5/php5.y:379 { yyVAL.list = []node.Node{yyDollar[1].node} } case 20: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:352 + //line php5/php5.y:384 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2461,7 +2511,7 @@ yydefault: } case 21: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:362 + //line php5/php5.y:394 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2476,7 +2526,7 @@ yydefault: } case 22: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:375 + //line php5/php5.y:407 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2488,7 +2538,7 @@ yydefault: } case 23: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:385 + //line php5/php5.y:417 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2503,19 +2553,19 @@ yydefault: } case 24: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:401 + //line php5/php5.y:433 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 25: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:403 + //line php5/php5.y:435 { yyVAL.list = []node.Node{yyDollar[1].node} } case 26: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:408 + //line php5/php5.y:440 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2527,7 +2577,7 @@ yydefault: } case 27: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:418 + //line php5/php5.y:450 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2542,7 +2592,7 @@ yydefault: } case 28: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:431 + //line php5/php5.y:463 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2554,7 +2604,7 @@ yydefault: } case 29: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:441 + //line php5/php5.y:473 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2569,19 +2619,19 @@ yydefault: } case 30: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:457 + //line php5/php5.y:489 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 31: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:459 + //line php5/php5.y:491 { yyVAL.list = []node.Node{yyDollar[1].node} } case 32: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:464 + //line php5/php5.y:496 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2593,7 +2643,7 @@ yydefault: } case 33: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:474 + //line php5/php5.y:506 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2608,7 +2658,7 @@ yydefault: } case 34: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:487 + //line php5/php5.y:519 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2620,7 +2670,7 @@ yydefault: } case 35: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:497 + //line php5/php5.y:529 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2635,7 +2685,7 @@ yydefault: } case 36: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:513 + //line php5/php5.y:545 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -2653,7 +2703,7 @@ yydefault: } case 37: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:529 + //line php5/php5.y:561 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -2671,7 +2721,7 @@ yydefault: } case 38: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:548 + //line php5/php5.y:580 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2679,38 +2729,38 @@ yydefault: } case 39: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:554 + //line php5/php5.y:586 { yyVAL.list = []node.Node{} } case 40: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:560 + //line php5/php5.y:592 { // error yyVAL.node = nil } case 41: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:565 + //line php5/php5.y:597 { yyVAL.node = yyDollar[1].node } case 42: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:567 + //line php5/php5.y:599 { yyVAL.node = yyDollar[1].node } case 43: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:569 + //line php5/php5.y:601 { yyVAL.node = yyDollar[1].node } case 44: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:571 + //line php5/php5.y:603 { yyVAL.node = stmt.NewHaltCompiler() yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -2718,13 +2768,13 @@ yydefault: } case 45: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:581 + //line php5/php5.y:613 { yyVAL.node = yyDollar[1].node } case 46: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:583 + //line php5/php5.y:615 { label := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -2736,7 +2786,7 @@ yydefault: } case 47: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:596 + //line php5/php5.y:628 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2744,7 +2794,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:602 + //line php5/php5.y:634 { yyVAL.node = stmt.NewIf(yyDollar[2].node, yyDollar[3].node, yyDollar[4].list, yyDollar[5].node) @@ -2760,7 +2810,7 @@ yydefault: } case 49: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:616 + //line php5/php5.y:648 { stmts := stmt.NewStmtList(yyDollar[4].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[4].list)) @@ -2771,7 +2821,7 @@ yydefault: } case 50: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:625 + //line php5/php5.y:657 { if yyDollar[3].altSyntaxNode.isAlt { yyVAL.node = stmt.NewAltWhile(yyDollar[2].node, yyDollar[3].altSyntaxNode.node) @@ -2783,7 +2833,7 @@ yydefault: } case 51: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:635 + //line php5/php5.y:667 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) @@ -2791,7 +2841,7 @@ yydefault: } case 52: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:641 + //line php5/php5.y:673 { if yyDollar[9].altSyntaxNode.isAlt { yyVAL.node = stmt.NewAltFor(yyDollar[3].list, yyDollar[5].list, yyDollar[7].list, yyDollar[9].altSyntaxNode.node) @@ -2803,7 +2853,7 @@ yydefault: } case 53: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:651 + //line php5/php5.y:683 { if yyDollar[3].nodesWithEndToken.endToken.Value == ";" { yyVAL.node = stmt.NewAltSwitch(yyDollar[2].node, yyDollar[3].nodesWithEndToken.nodes) @@ -2815,7 +2865,7 @@ yydefault: } case 54: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:661 + //line php5/php5.y:693 { yyVAL.node = stmt.NewBreak(nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -2823,7 +2873,7 @@ yydefault: } case 55: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:667 + //line php5/php5.y:699 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2831,7 +2881,7 @@ yydefault: } case 56: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:673 + //line php5/php5.y:705 { yyVAL.node = stmt.NewContinue(nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -2839,7 +2889,7 @@ yydefault: } case 57: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:679 + //line php5/php5.y:711 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2847,7 +2897,7 @@ yydefault: } case 58: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:685 + //line php5/php5.y:717 { yyVAL.node = stmt.NewReturn(nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -2855,7 +2905,7 @@ yydefault: } case 59: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:691 + //line php5/php5.y:723 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2863,7 +2913,7 @@ yydefault: } case 60: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:697 + //line php5/php5.y:729 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2871,7 +2921,7 @@ yydefault: } case 61: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:703 + //line php5/php5.y:735 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -2879,7 +2929,7 @@ yydefault: } case 62: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:709 + //line php5/php5.y:741 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2887,7 +2937,7 @@ yydefault: } case 63: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:715 + //line php5/php5.y:747 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2895,7 +2945,7 @@ yydefault: } case 64: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:721 + //line php5/php5.y:753 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2903,7 +2953,7 @@ yydefault: } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:727 + //line php5/php5.y:759 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -2911,7 +2961,7 @@ yydefault: } case 66: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:733 + //line php5/php5.y:765 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -2919,7 +2969,7 @@ yydefault: } case 67: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:739 + //line php5/php5.y:771 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) @@ -2927,7 +2977,7 @@ yydefault: } case 68: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:745 + //line php5/php5.y:777 { if yyDollar[6].foreachVariable.node == nil { if yyDollar[8].altSyntaxNode.isAlt { @@ -2947,7 +2997,7 @@ yydefault: } case 69: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:763 + //line php5/php5.y:795 { if yyDollar[6].foreachVariable.node == nil { if yyDollar[8].altSyntaxNode.isAlt { @@ -2967,7 +3017,7 @@ yydefault: } case 70: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:781 + //line php5/php5.y:813 { yyVAL.node = stmt.NewDeclare(yyDollar[3].list, yyDollar[5].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) @@ -2975,7 +3025,7 @@ yydefault: } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:787 + //line php5/php5.y:819 { yyVAL.node = stmt.NewNop() yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -2983,7 +3033,7 @@ yydefault: } case 72: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:793 + //line php5/php5.y:825 { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -2997,7 +3047,7 @@ yydefault: } case 73: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:805 + //line php5/php5.y:837 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -3005,7 +3055,7 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:811 + //line php5/php5.y:843 { label := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -3017,13 +3067,13 @@ yydefault: } case 75: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:824 + //line php5/php5.y:856 { yyVAL.list = []node.Node{} } case 76: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:826 + //line php5/php5.y:858 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3041,13 +3091,13 @@ yydefault: } case 77: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:844 + //line php5/php5.y:876 { yyVAL.node = nil } case 78: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:846 + //line php5/php5.y:878 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3055,31 +3105,31 @@ yydefault: } case 79: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:855 + //line php5/php5.y:887 { yyVAL.list = yyDollar[1].list } case 80: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:857 + //line php5/php5.y:889 { yyVAL.list = []node.Node{} } case 81: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:862 + //line php5/php5.y:894 { yyVAL.list = []node.Node{yyDollar[1].node} } case 82: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:864 + //line php5/php5.y:896 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 83: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:869 + //line php5/php5.y:901 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3095,61 +3145,61 @@ yydefault: } case 84: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:886 + //line php5/php5.y:918 { yyVAL.list = []node.Node{yyDollar[1].node} } case 85: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:888 + //line php5/php5.y:920 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:893 + //line php5/php5.y:925 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:898 + //line php5/php5.y:930 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:903 + //line php5/php5.y:935 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:908 + //line php5/php5.y:940 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:910 + //line php5/php5.y:942 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 91: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:915 + //line php5/php5.y:947 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 92: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:917 + //line php5/php5.y:949 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 93: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:922 + //line php5/php5.y:954 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3161,7 +3211,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-7 : yypt+1] - //line php5/php5.y:935 + //line php5/php5.y:967 { switch n := yyDollar[1].node.(type) { case *stmt.Class: @@ -3184,7 +3234,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:956 + //line php5/php5.y:988 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -3196,7 +3246,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:970 + //line php5/php5.y:1002 { yyVAL.node = stmt.NewClass(nil, nil, nil, nil, nil, nil, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3204,7 +3254,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:976 + //line php5/php5.y:1008 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(classModifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3216,7 +3266,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:986 + //line php5/php5.y:1018 { yyVAL.node = stmt.NewTrait(nil, nil, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3224,7 +3274,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:992 + //line php5/php5.y:1024 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(classModifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3236,85 +3286,85 @@ yydefault: } case 100: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1005 + //line php5/php5.y:1037 { yyVAL.node = nil } case 101: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1007 + //line php5/php5.y:1039 { yyVAL.node = yyDollar[2].node } case 102: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1012 + //line php5/php5.y:1044 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1017 + //line php5/php5.y:1049 { yyVAL.list = nil } case 104: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1019 + //line php5/php5.y:1051 { yyVAL.list = yyDollar[2].list } case 105: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1024 + //line php5/php5.y:1056 { yyVAL.list = nil } case 106: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1026 + //line php5/php5.y:1058 { yyVAL.list = yyDollar[2].list } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1031 + //line php5/php5.y:1063 { yyVAL.list = []node.Node{yyDollar[1].node} } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1033 + //line php5/php5.y:1065 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 109: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1038 + //line php5/php5.y:1070 { yyVAL.foreachVariable = foreachVariable{nil, false} } case 110: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1040 + //line php5/php5.y:1072 { yyVAL.foreachVariable = yyDollar[2].foreachVariable } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1045 + //line php5/php5.y:1077 { yyVAL.foreachVariable = foreachVariable{yyDollar[1].node, false} } case 112: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1047 + //line php5/php5.y:1079 { yyVAL.foreachVariable = foreachVariable{yyDollar[2].node, true} } case 113: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1049 + //line php5/php5.y:1081 { list := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3323,39 +3373,39 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1059 + //line php5/php5.y:1091 { yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} } case 115: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1061 + //line php5/php5.y:1093 { yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1070 + //line php5/php5.y:1102 { yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} } case 117: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1072 + //line php5/php5.y:1104 { yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1081 + //line php5/php5.y:1113 { yyVAL.node = yyDollar[1].node } case 119: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1083 + //line php5/php5.y:1115 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3363,7 +3413,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1093 + //line php5/php5.y:1125 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3377,7 +3427,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1105 + //line php5/php5.y:1137 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3391,37 +3441,37 @@ yydefault: } case 122: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1121 + //line php5/php5.y:1153 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 123: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1123 + //line php5/php5.y:1155 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[3].list, yyDollar[4].token} } case 124: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1125 + //line php5/php5.y:1157 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[4].token} } case 125: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1127 + //line php5/php5.y:1159 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[3].list, yyDollar[5].token} } case 126: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1133 + //line php5/php5.y:1165 { yyVAL.list = []node.Node{} } case 127: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1135 + //line php5/php5.y:1167 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yylex.(*Parser).positions.AddPosition(_case, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) @@ -3430,7 +3480,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1142 + //line php5/php5.y:1174 { _default := stmt.NewDefault(yyDollar[4].list) yylex.(*Parser).positions.AddPosition(_default, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) @@ -3439,26 +3489,26 @@ yydefault: } case 131: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1159 + //line php5/php5.y:1191 { yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} } case 132: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1161 + //line php5/php5.y:1193 { yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) } case 133: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1171 + //line php5/php5.y:1203 { yyVAL.list = nil } case 134: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1173 + //line php5/php5.y:1205 { _elseIf := stmt.NewElseIf(yyDollar[3].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(_elseIf, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[4].node)) @@ -3468,13 +3518,13 @@ yydefault: } case 135: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1185 + //line php5/php5.y:1217 { yyVAL.list = nil } case 136: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1187 + //line php5/php5.y:1219 { stmts := stmt.NewStmtList(yyDollar[5].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[5].list)) @@ -3487,13 +3537,13 @@ yydefault: } case 137: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1202 + //line php5/php5.y:1234 { yyVAL.node = nil } case 138: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1204 + //line php5/php5.y:1236 { yyVAL.node = stmt.NewElse(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -3501,13 +3551,13 @@ yydefault: } case 139: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1214 + //line php5/php5.y:1246 { yyVAL.node = nil } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1216 + //line php5/php5.y:1248 { stmts := stmt.NewStmtList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[3].list)) @@ -3518,31 +3568,31 @@ yydefault: } case 141: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1229 + //line php5/php5.y:1261 { yyVAL.list = yyDollar[1].list } case 142: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1231 + //line php5/php5.y:1263 { yyVAL.list = nil } case 143: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1236 + //line php5/php5.y:1268 { yyVAL.list = []node.Node{yyDollar[1].node} } case 144: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1238 + //line php5/php5.y:1270 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 145: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1243 + //line php5/php5.y:1275 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3570,7 +3620,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1269 + //line php5/php5.y:1301 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3598,13 +3648,13 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1299 + //line php5/php5.y:1331 { yyVAL.node = nil } case 148: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1301 + //line php5/php5.y:1333 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3612,7 +3662,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1307 + //line php5/php5.y:1339 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3620,25 +3670,25 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1313 + //line php5/php5.y:1345 { yyVAL.node = yyDollar[1].node } case 151: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1319 + //line php5/php5.y:1351 { yyVAL.nodesWithEndToken = &nodesWithEndToken{[]node.Node{}, yyDollar[2].token} } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1321 + //line php5/php5.y:1353 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1323 + //line php5/php5.y:1355 { arg := node.NewArgument(yyDollar[2].node, false, false) yylex.(*Parser).positions.AddPosition(arg, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) @@ -3648,19 +3698,19 @@ yydefault: } case 154: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1335 + //line php5/php5.y:1367 { yyVAL.list = []node.Node{yyDollar[1].node} } case 155: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1337 + //line php5/php5.y:1369 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 156: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1342 + //line php5/php5.y:1374 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -3668,7 +3718,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1348 + //line php5/php5.y:1380 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -3676,7 +3726,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1354 + //line php5/php5.y:1386 { yyVAL.node = node.NewArgument(yyDollar[2].node, false, true) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) @@ -3684,7 +3734,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1360 + //line php5/php5.y:1392 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -3692,19 +3742,19 @@ yydefault: } case 160: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1369 + //line php5/php5.y:1401 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1371 + //line php5/php5.y:1403 { yyVAL.list = []node.Node{yyDollar[1].node} } case 162: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1377 + //line php5/php5.y:1409 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3716,7 +3766,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1387 + //line php5/php5.y:1419 { yyVAL.node = expr.NewVariable(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -3724,7 +3774,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1393 + //line php5/php5.y:1425 { yyVAL.node = expr.NewVariable(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3732,7 +3782,7 @@ yydefault: } case 165: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1403 + //line php5/php5.y:1435 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3751,7 +3801,7 @@ yydefault: } case 166: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1420 + //line php5/php5.y:1452 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3770,7 +3820,7 @@ yydefault: } case 167: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1437 + //line php5/php5.y:1469 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3789,7 +3839,7 @@ yydefault: } case 168: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1454 + //line php5/php5.y:1486 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3808,19 +3858,19 @@ yydefault: } case 169: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1476 + //line php5/php5.y:1508 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 170: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1478 + //line php5/php5.y:1510 { yyVAL.list = []node.Node{} } case 171: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1484 + //line php5/php5.y:1516 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) @@ -3828,19 +3878,19 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1490 + //line php5/php5.y:1522 { yyVAL.node = yyDollar[1].node } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1492 + //line php5/php5.y:1524 { yyVAL.node = yyDollar[1].node } case 174: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1494 + //line php5/php5.y:1526 { name := node.NewIdentifier(yyDollar[4].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3852,7 +3902,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1507 + //line php5/php5.y:1539 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].nodesWithEndToken.nodes) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].nodesWithEndToken.endToken)) @@ -3860,67 +3910,67 @@ yydefault: } case 176: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1516 + //line php5/php5.y:1548 { yyVAL.list = []node.Node{yyDollar[1].node} } case 177: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1518 + //line php5/php5.y:1550 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 178: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1523 + //line php5/php5.y:1555 { yyVAL.nodesWithEndToken = &nodesWithEndToken{nil, yyDollar[1].token} } case 179: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1525 + //line php5/php5.y:1557 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 180: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1530 + //line php5/php5.y:1562 { yyVAL.list = nil } case 181: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1532 + //line php5/php5.y:1564 { yyVAL.list = yyDollar[1].list } case 182: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1537 + //line php5/php5.y:1569 { yyVAL.list = []node.Node{yyDollar[1].node} } case 183: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1539 + //line php5/php5.y:1571 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1544 + //line php5/php5.y:1576 { yyVAL.node = yyDollar[1].node } case 185: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1546 + //line php5/php5.y:1578 { yyVAL.node = yyDollar[1].node } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1551 + //line php5/php5.y:1583 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeNodeListPosition(yyDollar[1].node, yyDollar[3].list)) @@ -3928,19 +3978,19 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1560 + //line php5/php5.y:1592 { yyVAL.list = []node.Node{yyDollar[1].node} } case 188: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1562 + //line php5/php5.y:1594 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1567 + //line php5/php5.y:1599 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3952,13 +4002,13 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1577 + //line php5/php5.y:1609 { yyVAL.node = yyDollar[1].node } case 191: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1582 + //line php5/php5.y:1614 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3970,7 +4020,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1595 + //line php5/php5.y:1627 { alias := node.NewIdentifier(yyDollar[4].token.Value) yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3982,7 +4032,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1605 + //line php5/php5.y:1637 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -3990,37 +4040,37 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1614 + //line php5/php5.y:1646 { yyVAL.node = nil } case 195: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1616 + //line php5/php5.y:1648 { yyVAL.node = yyDollar[1].node } case 196: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1621 + //line php5/php5.y:1653 { yyVAL.nodesWithEndToken = &nodesWithEndToken{nil, yyDollar[1].token} } case 197: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1623 + //line php5/php5.y:1655 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 198: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1628 + //line php5/php5.y:1660 { yyVAL.list = yyDollar[1].list } case 199: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1630 + //line php5/php5.y:1662 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(modifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4030,31 +4080,31 @@ yydefault: } case 200: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1641 + //line php5/php5.y:1673 { yyVAL.list = nil } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1643 + //line php5/php5.y:1675 { yyVAL.list = yyDollar[1].list } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1648 + //line php5/php5.y:1680 { yyVAL.list = []node.Node{yyDollar[1].node} } case 203: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1650 + //line php5/php5.y:1682 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 204: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1655 + //line php5/php5.y:1687 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4062,7 +4112,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1661 + //line php5/php5.y:1693 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4070,7 +4120,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1667 + //line php5/php5.y:1699 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4078,7 +4128,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1673 + //line php5/php5.y:1705 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4086,7 +4136,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1679 + //line php5/php5.y:1711 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4094,7 +4144,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1685 + //line php5/php5.y:1717 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4102,7 +4152,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1694 + //line php5/php5.y:1726 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4120,7 +4170,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1710 + //line php5/php5.y:1742 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4138,7 +4188,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1726 + //line php5/php5.y:1758 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4156,7 +4206,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1742 + //line php5/php5.y:1774 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4174,7 +4224,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1761 + //line php5/php5.y:1793 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4191,7 +4241,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1776 + //line php5/php5.y:1808 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -4207,55 +4257,55 @@ yydefault: } case 216: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1793 + //line php5/php5.y:1825 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 217: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1795 + //line php5/php5.y:1827 { yyVAL.list = []node.Node{yyDollar[1].node} } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1801 + //line php5/php5.y:1833 { yyVAL.list = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1803 + //line php5/php5.y:1835 { yyVAL.list = yyDollar[1].list } case 220: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1808 + //line php5/php5.y:1840 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 221: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1810 + //line php5/php5.y:1842 { yyVAL.list = []node.Node{yyDollar[1].node} } case 222: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1815 + //line php5/php5.y:1847 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1817 + //line php5/php5.y:1849 { yyVAL.list = yyDollar[1].list } case 224: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1822 + //line php5/php5.y:1854 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -4264,7 +4314,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1829 + //line php5/php5.y:1861 { fetch := expr.NewArrayDimFetch(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) @@ -4273,37 +4323,37 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1839 + //line php5/php5.y:1871 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 227: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1841 + //line php5/php5.y:1873 { yyVAL.list = yyDollar[1].list } case 228: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1843 + //line php5/php5.y:1875 { yyVAL.list = yyDollar[1].list } case 229: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1848 + //line php5/php5.y:1880 { yyVAL.list = nil } case 230: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1850 + //line php5/php5.y:1882 { yyVAL.list = yyDollar[1].list } case 231: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1855 + //line php5/php5.y:1887 { if yyDollar[3].nodesWithEndToken != nil { yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].nodesWithEndToken.nodes) @@ -4317,7 +4367,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1870 + //line php5/php5.y:1902 { list := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -4329,7 +4379,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1880 + //line php5/php5.y:1912 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4337,7 +4387,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1886 + //line php5/php5.y:1918 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -4345,7 +4395,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1892 + //line php5/php5.y:1924 { _new := expr.NewNew(yyDollar[5].node, nil) yylex.(*Parser).positions.AddPosition(_new, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[4].token, yyDollar[5].node)) @@ -4362,7 +4412,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1907 + //line php5/php5.y:1939 { yyVAL.node = expr.NewClone(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4370,7 +4420,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1913 + //line php5/php5.y:1945 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4378,7 +4428,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1919 + //line php5/php5.y:1951 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4386,7 +4436,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1925 + //line php5/php5.y:1957 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4394,7 +4444,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1931 + //line php5/php5.y:1963 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4402,7 +4452,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1937 + //line php5/php5.y:1969 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4410,7 +4460,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1943 + //line php5/php5.y:1975 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4418,7 +4468,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1949 + //line php5/php5.y:1981 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4426,7 +4476,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1955 + //line php5/php5.y:1987 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4434,7 +4484,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1961 + //line php5/php5.y:1993 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4442,7 +4492,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1967 + //line php5/php5.y:1999 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4450,7 +4500,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1973 + //line php5/php5.y:2005 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4458,7 +4508,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1979 + //line php5/php5.y:2011 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4466,7 +4516,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1985 + //line php5/php5.y:2017 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -4474,7 +4524,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1991 + //line php5/php5.y:2023 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4482,7 +4532,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1997 + //line php5/php5.y:2029 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -4490,7 +4540,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2003 + //line php5/php5.y:2035 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4498,7 +4548,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2009 + //line php5/php5.y:2041 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4506,7 +4556,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2015 + //line php5/php5.y:2047 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4514,7 +4564,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2021 + //line php5/php5.y:2053 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4522,7 +4572,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2027 + //line php5/php5.y:2059 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4530,7 +4580,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2033 + //line php5/php5.y:2065 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4538,7 +4588,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2039 + //line php5/php5.y:2071 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4546,7 +4596,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2045 + //line php5/php5.y:2077 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4554,7 +4604,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2051 + //line php5/php5.y:2083 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4562,7 +4612,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2057 + //line php5/php5.y:2089 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4570,7 +4620,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2063 + //line php5/php5.y:2095 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4578,7 +4628,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2069 + //line php5/php5.y:2101 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4586,7 +4636,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2075 + //line php5/php5.y:2107 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4594,7 +4644,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2081 + //line php5/php5.y:2113 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4602,7 +4652,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2087 + //line php5/php5.y:2119 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4610,7 +4660,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2093 + //line php5/php5.y:2125 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4618,7 +4668,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2099 + //line php5/php5.y:2131 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4626,7 +4676,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2105 + //line php5/php5.y:2137 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4634,7 +4684,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2111 + //line php5/php5.y:2143 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4642,7 +4692,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2117 + //line php5/php5.y:2149 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4650,7 +4700,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2123 + //line php5/php5.y:2155 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4658,7 +4708,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2129 + //line php5/php5.y:2161 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4666,7 +4716,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2135 + //line php5/php5.y:2167 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4674,7 +4724,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2141 + //line php5/php5.y:2173 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4682,7 +4732,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2147 + //line php5/php5.y:2179 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4690,7 +4740,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2153 + //line php5/php5.y:2185 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4698,7 +4748,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2159 + //line php5/php5.y:2191 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4706,7 +4756,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2165 + //line php5/php5.y:2197 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4714,7 +4764,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2171 + //line php5/php5.y:2203 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4722,7 +4772,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2177 + //line php5/php5.y:2209 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4730,7 +4780,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2183 + //line php5/php5.y:2215 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4738,19 +4788,19 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2189 + //line php5/php5.y:2221 { yyVAL.node = yyDollar[1].node } case 284: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2191 + //line php5/php5.y:2223 { yyVAL.node = yyDollar[1].node } case 285: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2193 + //line php5/php5.y:2225 { yyVAL.node = yyDollar[2].node @@ -4778,7 +4828,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2219 + //line php5/php5.y:2251 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) @@ -4786,7 +4836,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2225 + //line php5/php5.y:2257 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -4794,13 +4844,13 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2231 + //line php5/php5.y:2263 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2233 + //line php5/php5.y:2265 { yyVAL.node = cast.NewInt(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4808,7 +4858,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2239 + //line php5/php5.y:2271 { yyVAL.node = cast.NewDouble(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4816,7 +4866,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2245 + //line php5/php5.y:2277 { yyVAL.node = cast.NewString(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4824,7 +4874,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2251 + //line php5/php5.y:2283 { yyVAL.node = cast.NewArray(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4832,7 +4882,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2257 + //line php5/php5.y:2289 { yyVAL.node = cast.NewObject(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4840,7 +4890,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2263 + //line php5/php5.y:2295 { yyVAL.node = cast.NewBool(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4848,7 +4898,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2269 + //line php5/php5.y:2301 { yyVAL.node = cast.NewUnset(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4856,7 +4906,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2275 + //line php5/php5.y:2307 { if strings.EqualFold(yyDollar[1].token.Value, "die") { yyVAL.node = expr.NewDie(yyDollar[2].node) @@ -4868,7 +4918,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2285 + //line php5/php5.y:2317 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4876,25 +4926,25 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2291 + //line php5/php5.y:2323 { yyVAL.node = yyDollar[1].node } case 299: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2293 + //line php5/php5.y:2325 { yyVAL.node = yyDollar[1].node } case 300: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2295 + //line php5/php5.y:2327 { yyVAL.node = yyDollar[1].node } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2297 + //line php5/php5.y:2329 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -4902,7 +4952,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2303 + //line php5/php5.y:2335 { yyVAL.node = expr.NewPrint(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4910,7 +4960,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2309 + //line php5/php5.y:2341 { yyVAL.node = expr.NewYield(nil, nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4918,7 +4968,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:2315 + //line php5/php5.y:2347 { yyVAL.node = expr.NewClosure(yyDollar[4].list, yyDollar[6].list, nil, yyDollar[8].list, false, yyDollar[2].boolWithToken.value, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[9].token)) @@ -4927,7 +4977,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] - //line php5/php5.y:2322 + //line php5/php5.y:2354 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].list, nil, yyDollar[9].list, true, yyDollar[3].boolWithToken.value, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[10].token)) @@ -4936,7 +4986,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2332 + //line php5/php5.y:2364 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4944,7 +4994,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2338 + //line php5/php5.y:2370 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4952,7 +5002,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2344 + //line php5/php5.y:2376 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) @@ -4960,7 +5010,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2350 + //line php5/php5.y:2382 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) @@ -4968,7 +5018,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2359 + //line php5/php5.y:2391 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -4976,7 +5026,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2365 + //line php5/php5.y:2397 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -4984,7 +5034,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2371 + //line php5/php5.y:2403 { str := scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(str, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4996,7 +5046,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2381 + //line php5/php5.y:2413 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -5004,7 +5054,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2390 + //line php5/php5.y:2422 { yyVAL.node = expr.NewArray(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -5012,7 +5062,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2396 + //line php5/php5.y:2428 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5020,25 +5070,25 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2405 + //line php5/php5.y:2437 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2410 + //line php5/php5.y:2442 { yyVAL.list = []node.Node{} } case 318: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2412 + //line php5/php5.y:2444 { yyVAL.list = yyDollar[3].list } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2417 + //line php5/php5.y:2449 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -5056,7 +5106,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2433 + //line php5/php5.y:2465 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -5074,7 +5124,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2449 + //line php5/php5.y:2481 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5092,7 +5142,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2465 + //line php5/php5.y:2497 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[2].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -5110,7 +5160,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2484 + //line php5/php5.y:2516 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5122,7 +5172,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2494 + //line php5/php5.y:2526 { funcName := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(funcName, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5134,7 +5184,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2504 + //line php5/php5.y:2536 { funcName := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(funcName, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5146,7 +5196,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2514 + //line php5/php5.y:2546 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) @@ -5154,7 +5204,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2520 + //line php5/php5.y:2552 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) @@ -5162,7 +5212,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2526 + //line php5/php5.y:2558 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) @@ -5170,7 +5220,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2532 + //line php5/php5.y:2564 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) @@ -5178,7 +5228,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2538 + //line php5/php5.y:2570 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].nodesWithEndToken.nodes) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].nodesWithEndToken.endToken)) @@ -5186,7 +5236,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2547 + //line php5/php5.y:2579 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5194,7 +5244,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2553 + //line php5/php5.y:2585 { yyVAL.node = name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5202,7 +5252,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2559 + //line php5/php5.y:2591 { yyVAL.node = name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5210,7 +5260,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2565 + //line php5/php5.y:2597 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5218,7 +5268,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2574 + //line php5/php5.y:2606 { yyVAL.node = name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5226,7 +5276,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2580 + //line php5/php5.y:2612 { yyVAL.node = name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5234,7 +5284,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2586 + //line php5/php5.y:2618 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5242,19 +5292,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2595 + //line php5/php5.y:2627 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2597 + //line php5/php5.y:2629 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2602 + //line php5/php5.y:2634 { yyVAL.node = yyDollar[1].node @@ -5292,79 +5342,79 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2638 + //line php5/php5.y:2670 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2644 + //line php5/php5.y:2676 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2646 + //line php5/php5.y:2678 { yyVAL.list = []node.Node{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2652 + //line php5/php5.y:2684 { yyVAL.list = yyDollar[2].list } case 345: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2657 + //line php5/php5.y:2689 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2659 + //line php5/php5.y:2691 { yyVAL.node = nil } case 347: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2661 + //line php5/php5.y:2693 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2666 + //line php5/php5.y:2698 { yyVAL.list = []node.Node{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2668 + //line php5/php5.y:2700 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} } case 350: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2670 + //line php5/php5.y:2702 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2675 + //line php5/php5.y:2707 { yyVAL.nodesWithEndToken = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2677 + //line php5/php5.y:2709 { yyVAL.nodesWithEndToken = yyDollar[1].nodesWithEndToken } case 353: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2682 + //line php5/php5.y:2714 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5372,7 +5422,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2688 + //line php5/php5.y:2720 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5380,7 +5430,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2694 + //line php5/php5.y:2726 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5388,7 +5438,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2700 + //line php5/php5.y:2732 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5396,7 +5446,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2706 + //line php5/php5.y:2738 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5404,7 +5454,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2712 + //line php5/php5.y:2744 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5412,7 +5462,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2718 + //line php5/php5.y:2750 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5420,7 +5470,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2724 + //line php5/php5.y:2756 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5428,7 +5478,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2730 + //line php5/php5.y:2762 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5436,7 +5486,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2736 + //line php5/php5.y:2768 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5444,7 +5494,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2742 + //line php5/php5.y:2774 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -5456,7 +5506,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2752 + //line php5/php5.y:2784 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -5464,7 +5514,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2761 + //line php5/php5.y:2793 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -5476,25 +5526,25 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2774 + //line php5/php5.y:2806 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2779 + //line php5/php5.y:2811 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2781 + //line php5/php5.y:2813 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2783 + //line php5/php5.y:2815 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5506,7 +5556,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2793 + //line php5/php5.y:2825 { name := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5518,7 +5568,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2803 + //line php5/php5.y:2835 { name := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5530,7 +5580,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2813 + //line php5/php5.y:2845 { yyVAL.node = expr.NewArray(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -5538,7 +5588,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2819 + //line php5/php5.y:2851 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5546,13 +5596,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2825 + //line php5/php5.y:2857 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2827 + //line php5/php5.y:2859 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5560,13 +5610,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2833 + //line php5/php5.y:2865 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2838 + //line php5/php5.y:2870 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -5574,7 +5624,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2844 + //line php5/php5.y:2876 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5582,7 +5632,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2850 + //line php5/php5.y:2882 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5590,7 +5640,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2856 + //line php5/php5.y:2888 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5598,7 +5648,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2862 + //line php5/php5.y:2894 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5606,7 +5656,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2868 + //line php5/php5.y:2900 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5614,7 +5664,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2874 + //line php5/php5.y:2906 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5622,7 +5672,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2880 + //line php5/php5.y:2912 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5630,7 +5680,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2886 + //line php5/php5.y:2918 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5638,7 +5688,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2892 + //line php5/php5.y:2924 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5646,7 +5696,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2898 + //line php5/php5.y:2930 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5654,7 +5704,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2904 + //line php5/php5.y:2936 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5662,7 +5712,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2910 + //line php5/php5.y:2942 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5670,7 +5720,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2916 + //line php5/php5.y:2948 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5678,7 +5728,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2922 + //line php5/php5.y:2954 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5686,7 +5736,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2928 + //line php5/php5.y:2960 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5694,7 +5744,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2934 + //line php5/php5.y:2966 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5702,7 +5752,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2940 + //line php5/php5.y:2972 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5710,7 +5760,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2946 + //line php5/php5.y:2978 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5718,7 +5768,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2952 + //line php5/php5.y:2984 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5726,7 +5776,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2958 + //line php5/php5.y:2990 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5734,7 +5784,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2964 + //line php5/php5.y:2996 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5742,7 +5792,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2970 + //line php5/php5.y:3002 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5750,7 +5800,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2976 + //line php5/php5.y:3008 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5758,7 +5808,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2982 + //line php5/php5.y:3014 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5766,7 +5816,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2988 + //line php5/php5.y:3020 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5774,7 +5824,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2994 + //line php5/php5.y:3026 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5782,7 +5832,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3000 + //line php5/php5.y:3032 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5790,7 +5840,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3006 + //line php5/php5.y:3038 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -5798,7 +5848,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3012 + //line php5/php5.y:3044 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) @@ -5806,7 +5856,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3018 + //line php5/php5.y:3050 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5814,7 +5864,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3024 + //line php5/php5.y:3056 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5822,19 +5872,19 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3030 + //line php5/php5.y:3062 { yyVAL.node = yyDollar[2].node } case 410: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3035 + //line php5/php5.y:3067 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3037 + //line php5/php5.y:3069 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5846,7 +5896,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3047 + //line php5/php5.y:3079 { name := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5858,7 +5908,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3057 + //line php5/php5.y:3089 { name := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5870,7 +5920,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3070 + //line php5/php5.y:3102 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5882,25 +5932,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3080 + //line php5/php5.y:3112 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3082 + //line php5/php5.y:3114 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3084 + //line php5/php5.y:3116 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3086 + //line php5/php5.y:3118 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5908,7 +5958,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3092 + //line php5/php5.y:3124 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5916,7 +5966,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3098 + //line php5/php5.y:3130 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5924,19 +5974,19 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3107 + //line php5/php5.y:3139 { yyVAL.list = nil } case 422: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3109 + //line php5/php5.y:3141 { yyVAL.list = yyDollar[1].list } case 425: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3119 + //line php5/php5.y:3151 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node)) @@ -5946,7 +5996,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3127 + //line php5/php5.y:3159 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -5956,7 +6006,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3135 + //line php5/php5.y:3167 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5966,7 +6016,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3143 + //line php5/php5.y:3175 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -5976,49 +6026,49 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3154 + //line php5/php5.y:3186 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3156 + //line php5/php5.y:3188 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3161 + //line php5/php5.y:3193 { yyVAL.node = yyDollar[2].node } case 432: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3163 + //line php5/php5.y:3195 { yyVAL.node = yyDollar[2].node } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3169 + //line php5/php5.y:3201 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3175 + //line php5/php5.y:3207 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3180 + //line php5/php5.y:3212 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3185 + //line php5/php5.y:3217 { yyVAL.node = yyDollar[1].node @@ -6073,25 +6123,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3238 + //line php5/php5.y:3270 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3243 + //line php5/php5.y:3275 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3245 + //line php5/php5.y:3277 { yyVAL.list = []node.Node{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3251 + //line php5/php5.y:3283 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*expr.MethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*expr.PropertyFetch).Property @@ -6102,7 +6152,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3263 + //line php5/php5.y:3295 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6111,7 +6161,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3270 + //line php5/php5.y:3302 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6120,38 +6170,38 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3280 + //line php5/php5.y:3312 { yyVAL.node = expr.NewMethodCall(nil, nil, yyDollar[1].nodesWithEndToken.nodes) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].nodesWithEndToken.nodes, yyDollar[1].nodesWithEndToken.endToken)) } case 444: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3288 + //line php5/php5.y:3320 { yyVAL.list = []node.Node{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3290 + //line php5/php5.y:3322 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3292 + //line php5/php5.y:3324 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3297 + //line php5/php5.y:3329 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3299 + //line php5/php5.y:3331 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -6163,7 +6213,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3312 + //line php5/php5.y:3344 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -6171,7 +6221,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3318 + //line php5/php5.y:3350 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -6179,13 +6229,13 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3328 + //line php5/php5.y:3360 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3333 + //line php5/php5.y:3365 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -6193,7 +6243,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3339 + //line php5/php5.y:3371 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -6201,31 +6251,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3347 + //line php5/php5.y:3379 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3348 + //line php5/php5.y:3380 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3349 + //line php5/php5.y:3381 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3355 + //line php5/php5.y:3387 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3357 + //line php5/php5.y:3389 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -6237,13 +6287,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3367 + //line php5/php5.y:3399 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3372 + //line php5/php5.y:3404 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -6251,7 +6301,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3378 + //line php5/php5.y:3410 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -6259,13 +6309,13 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3384 + //line php5/php5.y:3416 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3390 + //line php5/php5.y:3422 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6277,7 +6327,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3400 + //line php5/php5.y:3432 { yyVAL.node = expr.NewVariable(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6285,25 +6335,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3409 + //line php5/php5.y:3441 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3411 + //line php5/php5.y:3443 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3417 + //line php5/php5.y:3449 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3419 + //line php5/php5.y:3451 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6312,7 +6362,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3429 + //line php5/php5.y:3461 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6321,7 +6371,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3436 + //line php5/php5.y:3468 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6330,7 +6380,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3443 + //line php5/php5.y:3475 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6339,7 +6389,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3453 + //line php5/php5.y:3485 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6347,13 +6397,13 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3459 + //line php5/php5.y:3491 { yyVAL.node = yyDollar[2].node } case 474: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3464 + //line php5/php5.y:3496 { n := expr.NewVariable(nil) yylex.(*Parser).positions.AddPosition(n, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6363,7 +6413,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3472 + //line php5/php5.y:3504 { n := expr.NewVariable(nil) yylex.(*Parser).positions.AddPosition(n, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6377,13 +6427,13 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3487 + //line php5/php5.y:3519 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3489 + //line php5/php5.y:3521 { if yyDollar[1].node == nil { yyVAL.list = []node.Node{} @@ -6393,7 +6443,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3501 + //line php5/php5.y:3533 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6401,7 +6451,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3507 + //line php5/php5.y:3539 { item := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(item, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6413,25 +6463,25 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3517 + //line php5/php5.y:3549 { yyVAL.node = nil } case 481: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3523 + //line php5/php5.y:3555 { yyVAL.list = []node.Node{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3525 + //line php5/php5.y:3557 { yyVAL.list = yyDollar[1].list } case 483: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3530 + //line php5/php5.y:3562 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node)) @@ -6441,7 +6491,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3538 + //line php5/php5.y:3570 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6451,7 +6501,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3546 + //line php5/php5.y:3578 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -6461,7 +6511,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3554 + //line php5/php5.y:3586 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6471,7 +6521,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3562 + //line php5/php5.y:3594 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[6].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[6].node)) @@ -6481,7 +6531,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3570 + //line php5/php5.y:3602 { arrayItem := expr.NewArrayItem(nil, yyDollar[4].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node)) @@ -6491,7 +6541,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3578 + //line php5/php5.y:3610 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[4].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -6501,7 +6551,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3586 + //line php5/php5.y:3618 { arrayItem := expr.NewArrayItem(nil, yyDollar[2].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6511,13 +6561,13 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3597 + //line php5/php5.y:3629 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3599 + //line php5/php5.y:3631 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6526,13 +6576,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3606 + //line php5/php5.y:3638 { yyVAL.list = []node.Node{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3608 + //line php5/php5.y:3640 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6541,7 +6591,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3618 + //line php5/php5.y:3650 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6553,7 +6603,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3628 + //line php5/php5.y:3660 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6568,7 +6618,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3641 + //line php5/php5.y:3673 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6586,7 +6636,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3657 + //line php5/php5.y:3689 { yyVAL.node = yyDollar[2].node yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -6594,7 +6644,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3663 + //line php5/php5.y:3695 { identifier := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6609,13 +6659,13 @@ yydefault: } case 500: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3677 + //line php5/php5.y:3709 { yyVAL.node = yyDollar[2].node } case 501: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3682 + //line php5/php5.y:3714 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6623,7 +6673,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3688 + //line php5/php5.y:3720 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -6637,7 +6687,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3700 + //line php5/php5.y:3732 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6649,7 +6699,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3713 + //line php5/php5.y:3745 { yyVAL.node = expr.NewIsset(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6657,7 +6707,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3719 + //line php5/php5.y:3751 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6665,7 +6715,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3725 + //line php5/php5.y:3757 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6673,7 +6723,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3731 + //line php5/php5.y:3763 { yyVAL.node = expr.NewInclude(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6681,7 +6731,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3737 + //line php5/php5.y:3769 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6689,7 +6739,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3743 + //line php5/php5.y:3775 { yyVAL.node = expr.NewEval(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6697,7 +6747,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3749 + //line php5/php5.y:3781 { yyVAL.node = expr.NewRequire(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6705,7 +6755,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3755 + //line php5/php5.y:3787 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6713,31 +6763,31 @@ yydefault: } case 512: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3764 + //line php5/php5.y:3796 { yyVAL.list = []node.Node{yyDollar[1].node} } case 513: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3766 + //line php5/php5.y:3798 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 514: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3771 + //line php5/php5.y:3803 { yyVAL.node = yyDollar[1].node } case 515: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3773 + //line php5/php5.y:3805 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3778 + //line php5/php5.y:3810 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -6749,7 +6799,7 @@ yydefault: } case 517: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3788 + //line php5/php5.y:3820 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -6761,7 +6811,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3801 + //line php5/php5.y:3833 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -6773,7 +6823,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3814 + //line php5/php5.y:3846 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) diff --git a/php5/php5.y b/php5/php5.y index 6ea6dd3..52df78e 100644 --- a/php5/php5.y +++ b/php5/php5.y @@ -143,6 +143,29 @@ import ( %token T_COALESCE %token T_SPACESHIP %token T_NOELSE +%token T_PLUS_EQUAL +%token T_MINUS_EQUAL +%token T_MUL_EQUAL +%token T_POW_EQUAL +%token T_DIV_EQUAL +%token T_CONCAT_EQUAL +%token T_MOD_EQUAL +%token T_AND_EQUAL +%token T_OR_EQUAL +%token T_XOR_EQUAL +%token T_SL_EQUAL +%token T_SR_EQUAL +%token T_BOOLEAN_OR +%token T_BOOLEAN_AND +%token T_POW +%token T_SL +%token T_SR +%token T_IS_IDENTICAL +%token T_IS_NOT_IDENTICAL +%token T_IS_EQUAL +%token T_IS_NOT_EQUAL +%token T_IS_SMALLER_OR_EQUAL +%token T_IS_GREATER_OR_EQUAL %token '"' %token '`' %token '{' @@ -161,6 +184,15 @@ import ( %token '~' %token '@' %token '$' +%token ',' +%token '|' +%token '=' +%token '^' +%token '*' +%token '/' +%token '%' +%token '<' +%token '>' %left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE %left ',' diff --git a/php7/parser.go b/php7/parser.go index 67e5b59..4ca16d4 100644 --- a/php7/parser.go +++ b/php7/parser.go @@ -3,7 +3,6 @@ package php7 import ( "io" - "github.com/z7zmey/php-parser/comment" "github.com/z7zmey/php-parser/errors" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/parser" @@ -72,16 +71,6 @@ func (l *Parser) Parse() int { return yyParse(l) } -func (l *Parser) listGetFirstNodeComments(list []node.Node) []*comment.Comment { - if len(list) == 0 { - return nil - } - - node := list[0] - - return l.comments[node] -} - // GetPath return path to file func (l *Parser) GetPath() string { return l.path @@ -106,3 +95,19 @@ func (l *Parser) GetComments() parser.Comments { func (l *Parser) GetPositions() parser.Positions { return l.positions } + +// GetPositions returns positions list +func (l *Parser) setCommentsFromChildNode(n node.Node, c node.Node) { + l.comments.AddComments(n, l.comments[c]) + delete(l.comments, c) +} + +// helpers + +func lastNode(nn []node.Node) node.Node { + return nn[len(nn)-1] +} + +func firstNode(nn []node.Node) node.Node { + return nn[0] +} diff --git a/php7/php7.go b/php7/php7.go index da05aaf..3f7b6a8 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -148,26 +148,26 @@ const T_NOELSE = 57458 const T_PLUS_EQUAL = 57459 const T_MINUS_EQUAL = 57460 const T_MUL_EQUAL = 57461 -const T_DIV_EQUAL = 57462 -const T_CONCAT_EQUAL = 57463 -const T_MOD_EQUAL = 57464 -const T_AND_EQUAL = 57465 -const T_OR_EQUAL = 57466 -const T_XOR_EQUAL = 57467 -const T_SL_EQUAL = 57468 -const T_SR_EQUAL = 57469 -const T_POW_EQUAL = 57470 +const T_POW_EQUAL = 57462 +const T_DIV_EQUAL = 57463 +const T_CONCAT_EQUAL = 57464 +const T_MOD_EQUAL = 57465 +const T_AND_EQUAL = 57466 +const T_OR_EQUAL = 57467 +const T_XOR_EQUAL = 57468 +const T_SL_EQUAL = 57469 +const T_SR_EQUAL = 57470 const T_BOOLEAN_OR = 57471 const T_BOOLEAN_AND = 57472 -const T_IS_EQUAL = 57473 -const T_IS_NOT_EQUAL = 57474 -const T_IS_IDENTICAL = 57475 -const T_IS_NOT_IDENTICAL = 57476 -const T_IS_SMALLER_OR_EQUAL = 57477 -const T_IS_GREATER_OR_EQUAL = 57478 -const T_SL = 57479 -const T_SR = 57480 -const T_POW = 57481 +const T_POW = 57473 +const T_SL = 57474 +const T_SR = 57475 +const T_IS_IDENTICAL = 57476 +const T_IS_NOT_IDENTICAL = 57477 +const T_IS_EQUAL = 57478 +const T_IS_NOT_EQUAL = 57479 +const T_IS_SMALLER_OR_EQUAL = 57480 +const T_IS_GREATER_OR_EQUAL = 57481 var yyToknames = [...]string{ "$end", @@ -286,6 +286,29 @@ var yyToknames = [...]string{ "T_COALESCE", "T_SPACESHIP", "T_NOELSE", + "T_PLUS_EQUAL", + "T_MINUS_EQUAL", + "T_MUL_EQUAL", + "T_POW_EQUAL", + "T_DIV_EQUAL", + "T_CONCAT_EQUAL", + "T_MOD_EQUAL", + "T_AND_EQUAL", + "T_OR_EQUAL", + "T_XOR_EQUAL", + "T_SL_EQUAL", + "T_SR_EQUAL", + "T_BOOLEAN_OR", + "T_BOOLEAN_AND", + "T_POW", + "T_SL", + "T_SR", + "T_IS_IDENTICAL", + "T_IS_NOT_IDENTICAL", + "T_IS_EQUAL", + "T_IS_NOT_EQUAL", + "T_IS_SMALLER_OR_EQUAL", + "T_IS_GREATER_OR_EQUAL", "'\"'", "'`'", "'{'", @@ -305,38 +328,15 @@ var yyToknames = [...]string{ "'@'", "'$'", "','", - "'='", - "T_PLUS_EQUAL", - "T_MINUS_EQUAL", - "T_MUL_EQUAL", - "T_DIV_EQUAL", - "T_CONCAT_EQUAL", - "T_MOD_EQUAL", - "T_AND_EQUAL", - "T_OR_EQUAL", - "T_XOR_EQUAL", - "T_SL_EQUAL", - "T_SR_EQUAL", - "T_POW_EQUAL", - "T_BOOLEAN_OR", - "T_BOOLEAN_AND", "'|'", + "'='", "'^'", - "T_IS_EQUAL", - "T_IS_NOT_EQUAL", - "T_IS_IDENTICAL", - "T_IS_NOT_IDENTICAL", - "'<'", - "T_IS_SMALLER_OR_EQUAL", - "'>'", - "T_IS_GREATER_OR_EQUAL", - "T_SL", - "T_SR", - "'.'", "'*'", "'/'", "'%'", - "T_POW", + "'<'", + "'>'", + "'.'", } var yyStatenames = [...]string{} @@ -344,7 +344,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php7/php7.y:2635 +//line php7/php7.y:4107 type foreachVariable struct { node node.Node @@ -377,18 +377,18 @@ var yyExca = [...]int{ -1, 44, 57, 422, 78, 422, - 119, 422, - 125, 422, + 142, 422, + 148, 422, -2, 417, -1, 48, - 123, 425, + 146, 425, -2, 434, -1, 84, 57, 424, 78, 424, - 119, 424, - 123, 427, - 125, 424, + 142, 424, + 146, 427, + 148, 424, -2, 412, -1, 107, 78, 385, @@ -396,127 +396,127 @@ var yyExca = [...]int{ -1, 229, 57, 422, 78, 422, - 119, 422, - 125, 422, + 142, 422, + 148, 422, -2, 313, -1, 232, - 123, 427, + 146, 427, -2, 424, -1, 235, 57, 422, 78, 422, - 119, 422, - 125, 422, + 142, 422, + 148, 422, -2, 315, -1, 354, 115, 0, - 153, 0, - 154, 0, - 155, 0, - 156, 0, + 134, 0, + 135, 0, + 136, 0, + 137, 0, -2, 337, -1, 355, 115, 0, - 153, 0, - 154, 0, - 155, 0, - 156, 0, + 134, 0, + 135, 0, + 136, 0, + 137, 0, -2, 338, -1, 356, 115, 0, - 153, 0, - 154, 0, - 155, 0, - 156, 0, + 134, 0, + 135, 0, + 136, 0, + 137, 0, -2, 339, -1, 357, 115, 0, - 153, 0, - 154, 0, - 155, 0, - 156, 0, + 134, 0, + 135, 0, + 136, 0, + 137, 0, -2, 340, -1, 358, - 157, 0, - 158, 0, - 159, 0, - 160, 0, + 138, 0, + 139, 0, + 165, 0, + 166, 0, -2, 341, -1, 359, - 157, 0, - 158, 0, - 159, 0, - 160, 0, + 138, 0, + 139, 0, + 165, 0, + 166, 0, -2, 342, -1, 360, - 157, 0, - 158, 0, - 159, 0, - 160, 0, + 138, 0, + 139, 0, + 165, 0, + 166, 0, -2, 343, -1, 361, - 157, 0, - 158, 0, - 159, 0, - 160, 0, + 138, 0, + 139, 0, + 165, 0, + 166, 0, -2, 344, -1, 362, 115, 0, - 153, 0, - 154, 0, - 155, 0, - 156, 0, + 134, 0, + 135, 0, + 136, 0, + 137, 0, -2, 345, -1, 369, - 124, 163, - 135, 163, + 147, 163, + 158, 163, -2, 422, -1, 413, - 124, 462, - 126, 462, - 135, 462, + 147, 462, + 149, 462, + 158, 462, -2, 422, -1, 417, 57, 423, 78, 423, - 119, 423, - 123, 426, - 125, 423, + 142, 423, + 146, 426, + 148, 423, -2, 347, -1, 431, - 123, 448, + 146, 448, -2, 415, -1, 432, - 123, 450, + 146, 450, -2, 440, -1, 511, - 123, 448, + 146, 448, -2, 416, -1, 512, - 123, 450, + 146, 450, -2, 441, -1, 571, - 124, 213, + 147, 213, -2, 218, -1, 596, - 123, 426, + 146, 426, -2, 423, -1, 648, - 124, 213, + 147, 213, -2, 218, -1, 653, - 124, 183, + 147, 183, -2, 422, -1, 661, - 124, 213, + 147, 213, -2, 218, -1, 686, - 124, 461, - 126, 461, - 135, 461, + 147, 461, + 149, 461, + 158, 461, -2, 422, -1, 719, - 124, 184, + 147, 184, -2, 422, -1, 739, 12, 265, @@ -527,10 +527,10 @@ var yyExca = [...]int{ 95, 208, -2, 0, -1, 778, - 124, 183, + 147, 183, -2, 422, -1, 780, - 124, 186, + 147, 186, -2, 396, -1, 800, 93, 209, @@ -541,7 +541,7 @@ var yyExca = [...]int{ 31, 199, 32, 199, 33, 199, - 120, 199, + 143, 199, -2, 0, -1, 882, 29, 76, @@ -550,16 +550,16 @@ var yyExca = [...]int{ 31, 198, 32, 198, 33, 198, - 120, 198, + 143, 198, -2, 0, -1, 914, - 124, 213, + 147, 213, -2, 218, } const yyPrivate = 57344 -const yyLast = 7331 +const yyLast = 7805 var yyAct = [...]int{ @@ -571,143 +571,199 @@ var yyAct = [...]int{ 132, 189, 8, 225, 228, 128, 143, 236, 237, 238, 239, 240, 147, 2, 241, 242, 243, 244, 245, 246, 247, 127, 250, 125, 513, 258, 259, 260, 315, 314, - 137, 7, 6, 430, 264, 165, 854, 870, 864, 273, - 274, 892, 276, 277, 842, 684, 841, 269, 230, 230, - 82, 868, 893, 140, 141, 835, 179, 406, 832, 105, - 677, 541, 590, 568, 335, 869, 331, 334, 309, 254, - 105, 111, 833, 677, 308, 302, 329, 759, 336, 307, - 332, 301, 319, 115, 121, 704, 324, 325, 84, 728, - 330, 44, 306, 308, 626, 302, 621, 105, 566, 285, - 287, 190, 556, 411, 337, 338, 339, 340, 341, 342, + 137, 7, 6, 430, 264, 870, 864, 684, 835, 273, + 274, 854, 276, 277, 842, 590, 841, 269, 230, 230, + 82, 334, 309, 140, 141, 406, 892, 105, 868, 832, + 677, 541, 335, 568, 331, 329, 307, 893, 677, 254, + 759, 111, 869, 833, 308, 302, 336, 704, 332, 330, + 308, 301, 319, 115, 121, 728, 324, 325, 84, 626, + 621, 44, 306, 105, 566, 302, 556, 411, 105, 285, + 287, 190, 862, 730, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 295, 364, 366, 165, 370, 321, 266, 372, 730, 780, - 219, 269, 862, 232, 232, 693, 229, 235, 333, 79, - 424, 380, 388, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 689, 407, 402, 138, 404, - 179, 225, 610, 261, 144, 855, 230, 283, 179, 384, - 597, 106, 415, 606, 290, 225, 292, 600, 607, 603, - 601, 299, 106, 585, 305, 410, 926, 409, 888, 820, - 138, 819, 218, 809, 826, 801, 371, 425, 217, 163, - 162, 416, 138, 784, 363, 773, 431, 511, 423, 106, - 230, 727, 523, 524, 717, 698, 525, 179, 696, 688, - 266, 650, 638, 628, 529, 270, 598, 533, 117, 225, - 589, 168, 169, 161, 164, 166, 167, 165, 403, 291, - 914, 230, 164, 166, 167, 165, 284, 828, 863, 782, - 551, 813, 812, 920, 720, 535, 163, 162, 687, 661, - 306, 232, 648, 646, 369, 286, 647, 5, 571, 554, - 418, 552, 414, 385, 383, 561, 288, 151, 669, 670, - 560, 9, 429, 520, 275, 8, 272, 510, 518, 271, - 161, 164, 166, 167, 165, 249, 602, 134, 538, 220, - 112, 117, 216, 105, 550, 232, 564, 184, 413, 519, - 289, 183, 420, 421, 7, 6, 544, 182, 136, 270, - 135, 131, 570, 562, 580, 113, 581, 558, 577, 582, - 583, 575, 751, 387, 579, 559, 232, 188, 420, 427, - 421, 421, 420, 268, 903, 668, 179, 294, 588, 293, - 517, 902, 225, 592, 887, 225, 516, 850, 930, 408, - 929, 821, 543, 815, 546, 572, 157, 156, 179, 609, - 134, 808, 765, 112, 612, 752, 768, 769, 768, 769, - 716, 595, 714, 712, 710, 163, 162, 587, 707, 233, - 555, 540, 181, 178, 537, 738, 591, 386, 740, 120, - 374, 328, 432, 512, 327, 180, 159, 163, 162, 326, - 296, 909, 611, 174, 175, 176, 177, 168, 169, 161, - 164, 166, 167, 165, 844, 106, 807, 153, 154, 158, - 160, 172, 173, 170, 171, 174, 175, 176, 177, 168, - 169, 161, 164, 166, 167, 165, 214, 215, 804, 745, - 746, 747, 744, 743, 742, 802, 761, 138, 616, 738, - 536, 117, 740, 105, 814, 608, 767, 886, 859, 110, - 144, 883, 117, 536, 857, 627, 803, 536, 201, 202, - 203, 204, 206, 207, 208, 209, 210, 211, 212, 213, - 205, 620, 613, 790, 783, 642, 324, 644, 637, 617, - 733, 625, 676, 536, 649, 306, 576, 634, 619, 185, - 5, 109, 419, 745, 746, 747, 744, 743, 742, 298, - 673, 789, 674, 671, 9, 640, 579, 255, 8, 643, - 134, 685, 422, 112, 304, 865, 304, 615, 117, 117, - 658, 105, 196, 197, 114, 651, 114, 289, 691, 233, - 230, 230, 672, 198, 200, 199, 681, 7, 6, 117, - 906, 117, 523, 253, 117, 123, 124, 533, 515, 702, - 191, 117, 263, 304, 231, 262, 234, 230, 718, 574, - 379, 116, 636, 708, 304, 106, 630, 289, 382, 631, - 701, 256, 257, 715, 304, 705, 634, 225, 904, 695, - 671, 722, 703, 699, 697, 46, 726, 546, 134, 546, - 122, 112, 547, 671, 706, 786, 713, 77, 78, 732, - 671, 669, 670, 721, 753, 754, 549, 233, 225, 749, - 134, 545, 528, 112, 748, 255, 300, 542, 230, 146, - 134, 731, 757, 112, 192, 232, 232, 303, 369, 653, - 750, 324, 255, 905, 755, 614, 320, 422, 408, 618, - 690, 225, 701, 106, 634, 894, 762, 280, 281, 794, - 758, 829, 232, 760, 148, 686, 763, 724, 725, 777, - 671, 770, 255, 772, 766, 117, 797, 779, 798, 775, - 579, 791, 546, 800, 787, 796, 795, 546, 546, 256, - 257, 148, 230, 745, 746, 747, 744, 743, 742, 810, - 117, 635, 123, 124, 604, 527, 256, 257, 818, 805, - 129, 816, 768, 769, 119, 824, 146, 548, 827, 536, - 806, 377, 817, 232, 823, 375, 719, 1, 195, 255, - 194, 834, 193, 845, 278, 526, 256, 257, 830, 639, - 187, 255, 38, 849, 739, 736, 422, 771, 768, 769, - 851, 843, 737, 381, 546, 255, 546, 848, 663, 531, - 282, 222, 521, 860, 853, 367, 867, 738, 671, 255, - 740, 846, 858, 871, 252, 873, 880, 866, 839, 884, - 885, 775, 145, 792, 879, 142, 323, 232, 149, 890, - 778, 891, 279, 256, 257, 895, 836, 889, 660, 822, - 251, 898, 840, 645, 896, 256, 257, 880, 899, 928, - 224, 546, 897, 43, 901, 879, 42, 16, 908, 256, - 257, 745, 746, 747, 744, 743, 742, 15, 599, 912, - 267, 49, 48, 256, 257, 913, 108, 50, 83, 81, - 919, 922, 915, 831, 918, 917, 579, 72, 248, 923, - 62, 265, 924, 61, 878, 877, 671, 876, 875, 927, - 735, 4, 931, 88, 89, 70, 47, 93, 94, 36, - 45, 105, 665, 27, 723, 657, 310, 110, 26, 18, - 17, 118, 19, 297, 30, 3, 31, 435, 788, 20, - 729, 0, 0, 21, 22, 35, 37, 13, 23, 33, + 295, 364, 366, 219, 370, 321, 266, 372, 780, 693, + 689, 269, 610, 232, 232, 606, 229, 235, 333, 79, + 607, 380, 388, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 597, 585, 402, 138, 404, + 424, 225, 179, 410, 144, 600, 230, 603, 601, 384, + 261, 926, 415, 888, 290, 225, 292, 407, 855, 820, + 179, 299, 826, 819, 305, 809, 801, 409, 518, 784, + 138, 773, 106, 727, 717, 698, 371, 425, 696, 688, + 650, 416, 138, 165, 363, 638, 431, 511, 218, 519, + 230, 628, 523, 524, 217, 598, 525, 589, 283, 914, + 266, 165, 168, 169, 529, 270, 291, 533, 106, 225, + 117, 863, 105, 106, 164, 166, 167, 828, 403, 813, + 812, 230, 163, 162, 782, 720, 284, 687, 661, 289, + 551, 423, 164, 166, 167, 535, 648, 161, 286, 646, + 306, 232, 647, 751, 369, 571, 554, 5, 552, 414, + 418, 385, 268, 517, 383, 561, 288, 151, 275, 516, + 560, 9, 429, 520, 179, 8, 272, 510, 271, 249, + 220, 216, 184, 183, 117, 182, 105, 136, 538, 134, + 135, 387, 112, 131, 550, 232, 564, 602, 413, 294, + 113, 293, 420, 421, 7, 6, 544, 188, 233, 270, + 920, 903, 570, 562, 580, 165, 581, 558, 577, 582, + 583, 575, 768, 769, 579, 559, 232, 902, 420, 427, + 421, 421, 420, 930, 887, 929, 163, 162, 588, 850, + 821, 179, 225, 592, 815, 225, 164, 166, 167, 408, + 808, 161, 543, 134, 546, 572, 112, 768, 769, 609, + 765, 752, 716, 714, 612, 712, 710, 106, 707, 555, + 540, 595, 233, 537, 386, 374, 328, 587, 155, 157, + 156, 179, 165, 168, 169, 327, 591, 326, 296, 175, + 177, 117, 432, 512, 536, 844, 807, 804, 802, 761, + 536, 536, 611, 163, 162, 181, 178, 608, 909, 886, + 859, 117, 536, 164, 166, 167, 174, 176, 161, 857, + 153, 154, 165, 168, 169, 170, 171, 172, 173, 175, + 177, 106, 179, 814, 803, 813, 812, 790, 783, 733, + 255, 180, 159, 163, 162, 422, 676, 138, 616, 576, + 158, 185, 160, 164, 166, 167, 174, 176, 161, 419, + 144, 669, 670, 114, 165, 627, 253, 304, 767, 198, + 200, 199, 789, 165, 114, 120, 304, 191, 196, 197, + 134, 620, 613, 112, 117, 642, 324, 644, 637, 617, + 304, 625, 117, 117, 649, 306, 304, 634, 619, 289, + 5, 304, 906, 718, 256, 257, 574, 515, 263, 117, + 673, 262, 674, 671, 9, 640, 579, 379, 8, 643, + 289, 685, 904, 116, 77, 78, 702, 615, 382, 631, + 658, 786, 636, 630, 146, 651, 123, 124, 691, 905, + 230, 230, 672, 549, 547, 320, 681, 7, 6, 542, + 690, 668, 523, 134, 303, 894, 112, 533, 117, 46, + 105, 255, 724, 725, 545, 300, 110, 230, 528, 794, + 280, 281, 829, 708, 745, 746, 747, 744, 743, 742, + 701, 122, 148, 715, 117, 705, 634, 225, 148, 695, + 671, 722, 703, 699, 697, 298, 726, 546, 192, 546, + 796, 795, 117, 671, 706, 604, 713, 146, 109, 732, + 671, 123, 124, 721, 753, 754, 635, 117, 225, 749, + 816, 768, 769, 129, 748, 256, 257, 134, 230, 119, + 112, 731, 757, 548, 536, 232, 232, 255, 369, 653, + 750, 324, 422, 377, 755, 614, 233, 255, 408, 618, + 375, 225, 701, 195, 634, 194, 762, 771, 768, 769, + 758, 193, 232, 760, 187, 686, 763, 669, 670, 777, + 671, 770, 1, 772, 766, 845, 797, 779, 798, 775, + 579, 791, 546, 800, 787, 639, 134, 546, 546, 112, + 38, 739, 230, 736, 231, 737, 234, 381, 663, 810, + 527, 256, 257, 531, 738, 106, 222, 740, 818, 805, + 526, 256, 257, 521, 860, 824, 367, 873, 827, 145, + 806, 792, 817, 232, 823, 142, 719, 323, 149, 255, + 836, 834, 660, 822, 278, 255, 251, 840, 830, 645, + 422, 255, 928, 849, 224, 43, 282, 42, 16, 15, + 851, 843, 599, 267, 546, 49, 546, 848, 745, 746, + 747, 744, 743, 742, 853, 48, 867, 108, 671, 255, + 50, 846, 858, 871, 252, 83, 880, 866, 839, 884, + 885, 775, 81, 72, 879, 248, 62, 232, 265, 890, + 778, 891, 279, 256, 257, 895, 61, 889, 878, 256, + 257, 898, 877, 883, 896, 256, 257, 880, 899, 876, + 875, 546, 897, 735, 901, 879, 45, 665, 908, 723, + 657, 310, 118, 297, 3, 435, 788, 729, 0, 912, + 0, 0, 0, 256, 257, 913, 0, 0, 0, 0, + 919, 922, 915, 0, 918, 917, 579, 0, 0, 923, + 0, 0, 924, 0, 0, 0, 671, 0, 0, 927, + 0, 4, 931, 88, 89, 70, 47, 93, 94, 36, + 0, 105, 0, 27, 0, 0, 0, 110, 26, 18, + 17, 0, 19, 0, 30, 0, 31, 0, 0, 20, + 0, 0, 0, 21, 22, 35, 37, 13, 23, 33, 0, 0, 34, 12, 0, 24, 0, 29, 86, 87, 10, 39, 40, 41, 0, 0, 0, 0, 51, 109, - 0, 102, 98, 99, 100, 95, 96, 0, 0, 0, - 0, 0, 0, 103, 0, 0, 0, 0, 11, 101, + 0, 102, 98, 99, 100, 95, 96, 738, 0, 0, + 740, 0, 0, 103, 0, 0, 0, 0, 11, 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, 0, 85, 53, 0, 0, 0, 74, 75, 25, 77, 78, 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, - 67, 68, 69, 0, 0, 0, 104, 73, 14, 629, - 32, 0, 60, 0, 52, 0, 0, 0, 57, 56, - 58, 59, 71, 106, 4, 0, 88, 89, 70, 47, - 93, 94, 36, 0, 105, 0, 27, 0, 0, 0, - 110, 26, 18, 17, 0, 19, 0, 30, 0, 31, - 0, 0, 20, 0, 0, 0, 21, 22, 35, 37, - 13, 23, 33, 0, 0, 34, 12, 0, 24, 0, - 29, 86, 87, 10, 39, 40, 41, 0, 0, 0, - 0, 51, 109, 0, 102, 98, 99, 100, 95, 96, - 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, - 0, 11, 101, 97, 112, 0, 90, 91, 92, 0, - 0, 0, 0, 85, 53, 0, 0, 0, 74, 75, - 25, 77, 78, 0, 0, 0, 54, 55, 76, 63, - 64, 65, 66, 67, 68, 69, 0, 0, 0, 104, - 73, 14, 539, 32, 0, 60, 0, 52, 0, 0, + 67, 68, 69, 0, 214, 215, 0, 0, 0, 0, + 0, 745, 746, 747, 744, 743, 742, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 104, + 73, 14, 629, 32, 0, 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, 106, 4, 0, 88, - 89, 70, 47, 93, 94, 36, 0, 105, 0, 27, - 0, 0, 0, 110, 26, 18, 17, 0, 19, 0, + 89, 70, 47, 93, 94, 36, 865, 105, 0, 27, + 201, 0, 0, 110, 26, 18, 17, 0, 19, 0, 30, 0, 31, 0, 0, 20, 0, 0, 0, 21, 22, 35, 37, 13, 23, 33, 0, 0, 34, 12, 0, 24, 0, 29, 86, 87, 10, 39, 40, 41, 0, 0, 0, 0, 51, 109, 0, 102, 98, 99, - 100, 95, 96, 0, 0, 0, 0, 0, 0, 103, + 100, 95, 96, 738, 0, 0, 740, 0, 0, 103, 0, 0, 0, 0, 11, 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, 0, 85, 53, 0, 0, 0, 74, 75, 25, 77, 78, 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, 67, 68, 69, 0, - 0, 0, 104, 73, 14, 0, 32, 0, 60, 0, - 52, 0, 0, 0, 57, 56, 58, 59, 71, 106, - 312, 0, 88, 89, 70, 47, 93, 94, 36, 0, - 105, 0, 27, 0, 0, 0, 110, 26, 18, 17, - 0, 19, 0, 30, 0, 31, 0, 0, 20, 0, - 0, 0, 21, 22, 35, 37, 0, 23, 33, 0, - 0, 34, 0, 0, 24, 0, 29, 86, 87, 318, - 39, 40, 41, 0, 0, 0, 0, 51, 109, 0, - 102, 98, 99, 100, 95, 96, 0, 0, 0, 0, - 0, 0, 103, 0, 0, 0, 0, 134, 101, 97, - 112, 0, 90, 91, 92, 0, 0, 0, 0, 85, - 53, 0, 0, 0, 74, 75, 25, 77, 78, 0, - 0, 0, 54, 55, 76, 63, 64, 65, 66, 67, - 68, 69, 0, 0, 0, 104, 73, 14, 932, 32, + 0, 0, 0, 0, 0, 0, 0, 745, 746, 747, + 744, 743, 742, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 104, 73, 14, 539, 32, + 0, 60, 0, 52, 0, 0, 0, 57, 56, 58, + 59, 71, 106, 4, 0, 88, 89, 70, 47, 93, + 94, 36, 831, 105, 0, 27, 0, 0, 0, 110, + 26, 18, 17, 0, 19, 0, 30, 0, 31, 0, + 0, 20, 0, 0, 0, 21, 22, 35, 37, 13, + 23, 33, 0, 0, 34, 12, 0, 24, 0, 29, + 86, 87, 10, 39, 40, 41, 0, 0, 0, 0, + 51, 109, 0, 102, 98, 99, 100, 95, 96, 738, + 0, 0, 740, 0, 0, 103, 0, 0, 0, 0, + 11, 101, 97, 112, 0, 90, 91, 92, 0, 0, + 0, 0, 85, 53, 0, 0, 0, 74, 75, 25, + 77, 78, 0, 0, 0, 54, 55, 76, 63, 64, + 65, 66, 67, 68, 69, 0, 0, 0, 0, 0, + 0, 0, 0, 745, 746, 747, 744, 743, 742, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 104, 73, 14, 0, 32, 0, 60, 0, 52, + 0, 0, 0, 57, 56, 58, 59, 71, 106, 312, + 0, 88, 89, 70, 47, 93, 94, 36, 799, 105, + 0, 27, 0, 0, 0, 110, 26, 18, 17, 0, + 19, 0, 30, 0, 31, 0, 0, 20, 0, 0, + 0, 21, 22, 35, 37, 0, 23, 33, 0, 0, + 34, 0, 0, 24, 0, 29, 86, 87, 318, 39, + 40, 41, 0, 0, 0, 0, 51, 109, 0, 102, + 98, 99, 100, 95, 96, 738, 0, 0, 740, 0, + 0, 103, 0, 0, 0, 0, 134, 101, 97, 112, + 0, 90, 91, 92, 0, 0, 0, 0, 85, 53, + 0, 0, 0, 74, 75, 25, 77, 78, 0, 0, + 0, 54, 55, 76, 63, 64, 65, 66, 67, 68, + 69, 0, 0, 0, 0, 0, 0, 0, 0, 745, + 746, 747, 744, 743, 742, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 104, 73, 14, + 932, 32, 0, 60, 0, 52, 0, 0, 0, 57, + 56, 58, 59, 71, 106, 312, 0, 88, 89, 70, + 47, 93, 94, 36, 734, 105, 0, 27, 0, 0, + 0, 110, 26, 18, 17, 0, 19, 0, 30, 0, + 31, 0, 0, 20, 0, 0, 0, 21, 22, 35, + 37, 0, 23, 33, 0, 0, 34, 0, 0, 24, + 0, 29, 86, 87, 318, 39, 40, 41, 0, 0, + 0, 0, 51, 109, 0, 102, 98, 99, 100, 95, + 96, 0, 0, 0, 0, 0, 0, 103, 0, 0, + 0, 0, 134, 101, 97, 112, 0, 90, 91, 92, + 0, 0, 0, 0, 85, 53, 0, 0, 0, 74, + 75, 25, 77, 78, 0, 0, 0, 54, 55, 76, + 63, 64, 65, 66, 67, 68, 69, 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, 104, 73, 14, 925, 32, 0, 60, + 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, + 106, 312, 0, 88, 89, 70, 47, 93, 94, 36, + 0, 105, 0, 27, 0, 0, 0, 110, 26, 18, + 17, 0, 19, 0, 30, 0, 31, 0, 0, 20, + 0, 0, 0, 21, 22, 35, 37, 0, 23, 33, + 0, 0, 34, 0, 0, 24, 0, 29, 86, 87, + 318, 39, 40, 41, 0, 0, 0, 0, 51, 109, + 0, 102, 98, 99, 100, 95, 96, 0, 0, 0, + 0, 0, 0, 103, 0, 0, 0, 0, 134, 101, + 97, 112, 0, 90, 91, 92, 0, 0, 0, 0, + 85, 53, 0, 0, 0, 74, 75, 25, 77, 78, + 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, + 67, 68, 69, 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, 104, + 73, 14, 921, 32, 0, 60, 0, 52, 0, 0, + 0, 57, 56, 58, 59, 71, 106, 312, 0, 88, + 89, 70, 47, 93, 94, 36, 0, 105, 0, 27, + 0, 0, 0, 110, 26, 18, 17, 0, 19, 0, + 30, 0, 31, 0, 0, 20, 0, 0, 0, 21, + 22, 35, 37, 0, 23, 33, 0, 0, 34, 0, + 0, 24, 0, 29, 86, 87, 318, 39, 40, 41, + 0, 0, 0, 0, 51, 109, 0, 102, 98, 99, + 100, 95, 96, 0, 0, 0, 0, 0, 0, 103, + 0, 0, 0, 0, 134, 101, 97, 112, 0, 90, + 91, 92, 0, 0, 0, 0, 85, 53, 0, 0, + 0, 74, 75, 25, 77, 78, 0, 0, 0, 54, + 55, 76, 63, 64, 65, 66, 67, 68, 69, 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, 104, 73, 14, 911, 32, 0, 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, 106, 312, 0, 88, 89, 70, 47, 93, 94, 36, 0, 105, 0, 27, 0, 0, 0, 110, @@ -720,25 +776,14 @@ var yyAct = [...]int{ 134, 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, 0, 85, 53, 0, 0, 0, 74, 75, 25, 77, 78, 0, 0, 0, 54, 55, 76, 63, 64, - 65, 66, 67, 68, 69, 0, 0, 0, 104, 73, - 14, 925, 32, 0, 60, 0, 52, 0, 0, 0, - 57, 56, 58, 59, 71, 106, 312, 0, 88, 89, - 70, 47, 93, 94, 36, 0, 105, 0, 27, 0, - 0, 0, 110, 26, 18, 17, 0, 19, 0, 30, - 0, 31, 0, 0, 20, 0, 0, 0, 21, 22, - 35, 37, 0, 23, 33, 0, 0, 34, 0, 0, - 24, 0, 29, 86, 87, 318, 39, 40, 41, 0, - 0, 0, 0, 51, 109, 0, 102, 98, 99, 100, - 95, 96, 0, 0, 0, 0, 0, 0, 103, 0, - 0, 0, 0, 134, 101, 97, 112, 0, 90, 91, - 92, 0, 0, 0, 0, 85, 53, 0, 0, 0, - 74, 75, 25, 77, 78, 0, 0, 0, 54, 55, - 76, 63, 64, 65, 66, 67, 68, 69, 0, 0, - 0, 104, 73, 14, 921, 32, 0, 60, 0, 52, + 65, 66, 67, 68, 69, 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, 104, 73, 14, 910, 32, 0, 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, 106, 312, 0, 88, 89, 70, 47, 93, 94, 36, 0, 105, 0, 27, 0, 0, 0, 110, 26, 18, 17, 0, - 19, 0, 30, 0, 31, 0, 0, 20, 0, 0, + 19, 907, 30, 0, 31, 0, 0, 20, 0, 0, 0, 21, 22, 35, 37, 0, 23, 33, 0, 0, 34, 0, 0, 24, 0, 29, 86, 87, 318, 39, 40, 41, 0, 0, 0, 0, 51, 109, 0, 102, @@ -747,24 +792,13 @@ var yyAct = [...]int{ 0, 90, 91, 92, 0, 0, 0, 0, 85, 53, 0, 0, 0, 74, 75, 25, 77, 78, 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, 67, 68, - 69, 0, 0, 0, 104, 73, 14, 911, 32, 0, - 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, - 71, 106, 312, 0, 88, 89, 70, 47, 93, 94, - 36, 0, 105, 0, 27, 0, 0, 0, 110, 26, - 18, 17, 0, 19, 0, 30, 0, 31, 0, 0, - 20, 0, 0, 0, 21, 22, 35, 37, 0, 23, - 33, 0, 0, 34, 0, 0, 24, 0, 29, 86, - 87, 318, 39, 40, 41, 0, 0, 0, 0, 51, - 109, 0, 102, 98, 99, 100, 95, 96, 0, 0, - 0, 0, 0, 0, 103, 0, 0, 0, 0, 134, - 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, - 0, 85, 53, 0, 0, 0, 74, 75, 25, 77, - 78, 0, 0, 0, 54, 55, 76, 63, 64, 65, - 66, 67, 68, 69, 0, 0, 0, 104, 73, 14, - 910, 32, 0, 60, 0, 52, 0, 0, 0, 57, + 69, 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, 104, 73, 14, + 0, 32, 0, 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, 106, 312, 0, 88, 89, 70, 47, 93, 94, 36, 0, 105, 0, 27, 0, 0, - 0, 110, 26, 18, 17, 0, 19, 907, 30, 0, + 0, 110, 26, 18, 17, 0, 19, 0, 30, 0, 31, 0, 0, 20, 0, 0, 0, 21, 22, 35, 37, 0, 23, 33, 0, 0, 34, 0, 0, 24, 0, 29, 86, 87, 318, 39, 40, 41, 0, 0, @@ -774,19 +808,8 @@ var yyAct = [...]int{ 0, 0, 0, 0, 85, 53, 0, 0, 0, 74, 75, 25, 77, 78, 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, 67, 68, 69, 0, 0, 0, - 104, 73, 14, 0, 32, 0, 60, 0, 52, 0, - 0, 0, 57, 56, 58, 59, 71, 106, 312, 0, - 88, 89, 70, 47, 93, 94, 36, 0, 105, 0, - 27, 0, 0, 0, 110, 26, 18, 17, 0, 19, - 0, 30, 0, 31, 0, 0, 20, 0, 0, 0, - 21, 22, 35, 37, 0, 23, 33, 0, 0, 34, - 0, 0, 24, 0, 29, 86, 87, 318, 39, 40, - 41, 0, 0, 0, 0, 51, 109, 0, 102, 98, - 99, 100, 95, 96, 0, 0, 0, 0, 0, 0, - 103, 0, 0, 0, 0, 134, 101, 97, 112, 0, - 90, 91, 92, 0, 0, 0, 0, 85, 53, 0, - 0, 0, 74, 75, 25, 77, 78, 0, 0, 0, - 54, 55, 76, 63, 64, 65, 66, 67, 68, 69, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 73, 14, 856, 32, 0, 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, 106, 312, 0, 88, 89, 70, 47, 93, 94, 36, @@ -800,25 +823,14 @@ var yyAct = [...]int{ 97, 112, 0, 90, 91, 92, 0, 0, 0, 0, 85, 53, 0, 0, 0, 74, 75, 25, 77, 78, 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, - 67, 68, 69, 0, 0, 0, 104, 73, 14, 0, - 32, 0, 60, 0, 52, 0, 0, 0, 57, 56, - 58, 59, 71, 106, 312, 0, 88, 89, 70, 47, - 93, 94, 36, 0, 105, 0, 27, 0, 0, 0, - 110, 26, 18, 17, 0, 19, 0, 30, 0, 31, - 781, 0, 20, 0, 0, 0, 21, 22, 35, 37, - 0, 23, 33, 0, 0, 34, 0, 0, 24, 0, - 29, 86, 87, 318, 39, 40, 41, 0, 0, 0, - 0, 51, 109, 0, 102, 98, 99, 100, 95, 96, - 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, - 0, 134, 101, 97, 112, 0, 90, 91, 92, 0, - 0, 0, 0, 85, 53, 0, 0, 0, 74, 75, - 25, 77, 78, 0, 0, 0, 54, 55, 76, 63, - 64, 65, 66, 67, 68, 69, 0, 0, 0, 104, + 67, 68, 69, 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, 104, 73, 14, 0, 32, 0, 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, 106, 312, 0, 88, 89, 70, 47, 93, 94, 36, 0, 105, 0, 27, - 0, 0, 0, 110, 26, 18, 17, 764, 19, 0, - 30, 0, 31, 0, 0, 20, 0, 0, 0, 21, + 0, 0, 0, 110, 26, 18, 17, 0, 19, 0, + 30, 0, 31, 781, 0, 20, 0, 0, 0, 21, 22, 35, 37, 0, 23, 33, 0, 0, 34, 0, 0, 24, 0, 29, 86, 87, 318, 39, 40, 41, 0, 0, 0, 0, 51, 109, 0, 102, 98, 99, @@ -827,24 +839,13 @@ var yyAct = [...]int{ 91, 92, 0, 0, 0, 0, 85, 53, 0, 0, 0, 74, 75, 25, 77, 78, 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, 67, 68, 69, 0, - 0, 0, 104, 73, 14, 0, 32, 0, 60, 0, - 52, 0, 0, 0, 57, 56, 58, 59, 71, 106, - 312, 0, 88, 89, 70, 47, 93, 94, 36, 0, - 105, 0, 27, 0, 0, 0, 110, 26, 18, 17, - 0, 19, 0, 30, 0, 31, 0, 0, 20, 0, - 0, 0, 21, 22, 35, 37, 0, 23, 33, 0, - 0, 34, 0, 0, 24, 0, 29, 86, 87, 318, - 39, 40, 41, 0, 0, 0, 0, 51, 109, 0, - 102, 98, 99, 100, 95, 96, 0, 0, 0, 0, - 0, 0, 103, 0, 0, 0, 0, 134, 101, 97, - 112, 0, 90, 91, 92, 0, 0, 0, 0, 85, - 53, 0, 0, 680, 74, 75, 25, 77, 78, 0, - 0, 0, 54, 55, 76, 63, 64, 65, 66, 67, - 68, 69, 0, 0, 0, 104, 73, 14, 0, 32, + 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, 104, 73, 14, 0, 32, 0, 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, 106, 312, 0, 88, 89, 70, 47, 93, 94, 36, 0, 105, 0, 27, 0, 0, 0, 110, - 26, 18, 17, 0, 19, 0, 30, 0, 31, 0, + 26, 18, 17, 764, 19, 0, 30, 0, 31, 0, 0, 20, 0, 0, 0, 21, 22, 35, 37, 0, 23, 33, 0, 0, 34, 0, 0, 24, 0, 29, 86, 87, 318, 39, 40, 41, 0, 0, 0, 0, @@ -853,21 +854,10 @@ var yyAct = [...]int{ 134, 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, 0, 85, 53, 0, 0, 0, 74, 75, 25, 77, 78, 0, 0, 0, 54, 55, 76, 63, 64, - 65, 66, 67, 68, 69, 0, 0, 0, 104, 73, - 14, 569, 32, 0, 60, 0, 52, 0, 0, 0, - 57, 56, 58, 59, 71, 106, 312, 0, 88, 89, - 70, 47, 93, 94, 36, 0, 105, 0, 27, 0, - 0, 0, 110, 26, 18, 17, 0, 19, 0, 30, - 0, 31, 0, 0, 20, 0, 0, 0, 21, 22, - 35, 37, 0, 23, 33, 0, 0, 34, 0, 0, - 24, 0, 29, 86, 87, 318, 39, 40, 41, 0, - 0, 0, 0, 51, 109, 0, 102, 98, 99, 100, - 95, 96, 0, 0, 0, 0, 0, 0, 103, 0, - 0, 0, 0, 134, 101, 97, 112, 0, 90, 91, - 92, 0, 0, 0, 0, 85, 53, 0, 0, 0, - 74, 75, 25, 77, 78, 0, 0, 0, 54, 55, - 76, 63, 64, 65, 66, 67, 68, 69, 0, 0, - 0, 104, 73, 14, 311, 32, 0, 60, 0, 52, + 65, 66, 67, 68, 69, 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, 104, 73, 14, 0, 32, 0, 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, 106, 312, 0, 88, 89, 70, 47, 93, 94, 36, 0, 105, 0, 27, 0, 0, 0, 110, 26, 18, 17, 0, @@ -878,59 +868,84 @@ var yyAct = [...]int{ 98, 99, 100, 95, 96, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 134, 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, 0, 85, 53, - 0, 0, 0, 74, 75, 25, 77, 78, 0, 0, + 0, 0, 680, 74, 75, 25, 77, 78, 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, 67, 68, - 69, 0, 0, 0, 104, 73, 14, 0, 32, 0, - 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, - 71, 106, 443, 444, 454, 455, 0, 0, 434, 0, - 105, 0, 0, 0, 0, 0, 0, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 489, 490, - 491, 492, 493, 481, 482, 483, 484, 485, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 0, - 501, 499, 500, 496, 497, 0, 0, 488, 494, 495, - 502, 503, 505, 504, 506, 507, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 498, 509, 508, - 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 456, 457, 458, 486, 487, 437, 438, 439, 440, - 441, 442, 0, 0, 88, 89, 70, 47, 93, 94, - 36, 0, 105, 0, 27, 0, 0, 433, 110, 26, - 18, 17, 0, 19, 0, 30, 0, 31, 0, 0, - 20, 0, 106, 0, 21, 22, 35, 133, 0, 23, - 33, 0, 0, 34, 0, 0, 24, 0, 29, 86, - 87, 0, 0, 0, 0, 0, 0, 0, 0, 51, - 109, 0, 102, 98, 99, 100, 95, 96, 0, 0, - 0, 0, 0, 0, 103, 0, 0, 0, 0, 134, - 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, - 0, 85, 53, 0, 0, 0, 74, 75, 25, 0, - 0, 0, 0, 0, 54, 55, 76, 63, 64, 65, - 66, 67, 68, 69, 0, 0, 0, 104, 73, 14, - 0, 32, 776, 60, 0, 52, 0, 0, 0, 57, - 56, 58, 59, 71, 106, 88, 89, 70, 47, 93, - 94, 36, 0, 105, 0, 27, 0, 0, 0, 110, - 26, 18, 17, 0, 19, 0, 30, 0, 31, 0, - 0, 20, 0, 0, 0, 21, 22, 35, 133, 0, - 23, 33, 0, 0, 34, 0, 0, 24, 0, 29, - 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, - 51, 109, 0, 102, 98, 99, 100, 95, 96, 0, - 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, - 134, 101, 97, 112, 0, 90, 91, 92, 0, 0, - 0, 0, 85, 53, 0, 0, 0, 74, 75, 25, - 0, 0, 0, 0, 0, 54, 55, 76, 63, 64, - 65, 66, 67, 68, 69, 0, 0, 0, 104, 73, - 14, 0, 32, 847, 60, 0, 52, 0, 0, 0, - 57, 56, 58, 59, 71, 106, 88, 89, 70, 47, - 93, 94, 36, 0, 105, 0, 27, 0, 0, 0, - 110, 26, 18, 17, 0, 19, 0, 30, 0, 31, - 0, 0, 20, 0, 0, 0, 21, 22, 35, 133, - 0, 23, 33, 0, 0, 34, 0, 0, 24, 0, - 29, 86, 87, 0, 0, 0, 0, 0, 0, 0, - 0, 51, 109, 0, 102, 98, 99, 100, 95, 96, - 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, - 0, 134, 101, 97, 112, 0, 90, 91, 92, 0, - 0, 0, 0, 85, 53, 0, 0, 0, 74, 75, - 25, 0, 0, 0, 0, 0, 54, 55, 76, 63, - 64, 65, 66, 67, 68, 69, 0, 0, 0, 104, - 73, 14, 0, 32, 682, 60, 0, 52, 0, 0, + 69, 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, 104, 73, 14, + 0, 32, 0, 60, 0, 52, 0, 0, 0, 57, + 56, 58, 59, 71, 106, 312, 0, 88, 89, 70, + 47, 93, 94, 36, 0, 105, 0, 27, 0, 0, + 0, 110, 26, 18, 17, 0, 19, 0, 30, 0, + 31, 0, 0, 20, 0, 0, 0, 21, 22, 35, + 37, 0, 23, 33, 0, 0, 34, 0, 0, 24, + 0, 29, 86, 87, 318, 39, 40, 41, 0, 0, + 0, 0, 51, 109, 0, 102, 98, 99, 100, 95, + 96, 0, 0, 0, 0, 0, 0, 103, 0, 0, + 0, 0, 134, 101, 97, 112, 0, 90, 91, 92, + 0, 0, 0, 0, 85, 53, 0, 0, 0, 74, + 75, 25, 77, 78, 0, 0, 0, 54, 55, 76, + 63, 64, 65, 66, 67, 68, 69, 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, 104, 73, 14, 569, 32, 0, 60, + 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, + 106, 312, 0, 88, 89, 70, 47, 93, 94, 36, + 0, 105, 0, 27, 0, 0, 0, 110, 26, 18, + 17, 0, 19, 0, 30, 0, 31, 0, 0, 20, + 0, 0, 0, 21, 22, 35, 37, 0, 23, 33, + 0, 0, 34, 0, 0, 24, 0, 29, 86, 87, + 318, 39, 40, 41, 0, 0, 0, 0, 51, 109, + 0, 102, 98, 99, 100, 95, 96, 0, 0, 0, + 0, 0, 0, 103, 0, 0, 0, 0, 134, 101, + 97, 112, 0, 90, 91, 92, 0, 0, 0, 0, + 85, 53, 0, 0, 0, 74, 75, 25, 77, 78, + 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, + 67, 68, 69, 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, 104, + 73, 14, 311, 32, 0, 60, 0, 52, 0, 0, + 0, 57, 56, 58, 59, 71, 106, 312, 0, 88, + 89, 70, 47, 93, 94, 36, 0, 105, 0, 27, + 0, 0, 0, 110, 26, 18, 17, 0, 19, 0, + 30, 0, 31, 0, 0, 20, 0, 0, 0, 21, + 22, 35, 37, 0, 23, 33, 0, 0, 34, 0, + 0, 24, 0, 29, 86, 87, 318, 39, 40, 41, + 0, 0, 0, 0, 51, 109, 0, 102, 98, 99, + 100, 95, 96, 0, 0, 0, 0, 0, 0, 103, + 0, 0, 0, 0, 134, 101, 97, 112, 0, 90, + 91, 92, 0, 0, 0, 0, 85, 53, 0, 0, + 0, 74, 75, 25, 77, 78, 0, 0, 0, 54, + 55, 76, 63, 64, 65, 66, 67, 68, 69, 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, 104, 73, 14, 0, 32, + 0, 60, 0, 52, 0, 0, 0, 57, 56, 58, + 59, 71, 106, 443, 444, 454, 455, 0, 0, 434, + 0, 105, 0, 0, 0, 0, 0, 0, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 489, + 490, 491, 492, 493, 481, 482, 483, 484, 485, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 0, 501, 499, 500, 496, 497, 0, 0, 488, 494, + 495, 502, 503, 505, 504, 506, 507, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 498, 509, + 508, 0, 0, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 456, 457, 458, 486, 487, 437, 438, 439, + 440, 441, 442, 88, 89, 70, 47, 93, 94, 36, + 0, 105, 0, 27, 0, 0, 0, 110, 26, 18, + 17, 0, 19, 0, 30, 0, 31, 0, 0, 20, + 0, 0, 0, 21, 22, 35, 133, 0, 23, 33, + 0, 433, 34, 0, 0, 24, 0, 29, 86, 87, + 0, 0, 0, 0, 0, 0, 106, 0, 51, 109, + 0, 102, 98, 99, 100, 95, 96, 0, 0, 0, + 0, 0, 0, 103, 0, 0, 0, 0, 134, 101, + 97, 112, 0, 90, 91, 92, 0, 0, 0, 0, + 85, 53, 0, 0, 0, 74, 75, 25, 0, 0, + 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, + 67, 68, 69, 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, 104, + 73, 14, 0, 32, 776, 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, 106, 88, 89, 70, 47, 93, 94, 36, 0, 105, 0, 27, 0, 0, 0, 110, 26, 18, 17, 0, 19, 0, 30, 0, @@ -943,20 +958,40 @@ var yyAct = [...]int{ 0, 0, 0, 0, 85, 53, 0, 0, 0, 74, 75, 25, 0, 0, 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, 67, 68, 69, 0, 0, 0, - 104, 73, 14, 0, 32, 659, 60, 0, 52, 0, - 0, 0, 57, 56, 58, 59, 71, 106, 88, 89, - 70, 47, 93, 94, 36, 0, 105, 0, 27, 0, - 0, 0, 110, 26, 18, 17, 0, 19, 0, 30, - 0, 31, 0, 0, 20, 0, 0, 0, 21, 22, - 35, 133, 0, 23, 33, 0, 0, 34, 0, 0, - 24, 0, 29, 86, 87, 0, 0, 0, 0, 0, - 0, 0, 0, 51, 109, 0, 102, 98, 99, 100, - 95, 96, 0, 0, 0, 0, 0, 0, 103, 0, - 0, 0, 0, 134, 101, 97, 112, 0, 90, 91, - 92, 0, 0, 0, 0, 85, 53, 0, 0, 0, - 74, 75, 25, 0, 0, 0, 0, 0, 54, 55, - 76, 63, 64, 65, 66, 67, 68, 69, 0, 0, - 0, 104, 73, 14, 0, 32, 641, 60, 0, 52, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 104, 73, 14, 0, 32, 847, 60, + 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, + 106, 88, 89, 70, 47, 93, 94, 36, 0, 105, + 0, 27, 0, 0, 0, 110, 26, 18, 17, 0, + 19, 0, 30, 0, 31, 0, 0, 20, 0, 0, + 0, 21, 22, 35, 133, 0, 23, 33, 0, 0, + 34, 0, 0, 24, 0, 29, 86, 87, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 109, 0, 102, + 98, 99, 100, 95, 96, 0, 0, 0, 0, 0, + 0, 103, 0, 0, 0, 0, 134, 101, 97, 112, + 0, 90, 91, 92, 0, 0, 0, 0, 85, 53, + 0, 0, 0, 74, 75, 25, 0, 0, 0, 0, + 0, 54, 55, 76, 63, 64, 65, 66, 67, 68, + 69, 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, 104, 73, 14, + 0, 32, 682, 60, 0, 52, 0, 0, 0, 57, + 56, 58, 59, 71, 106, 88, 89, 70, 47, 93, + 94, 36, 0, 105, 0, 27, 0, 0, 0, 110, + 26, 18, 17, 0, 19, 0, 30, 0, 31, 0, + 0, 20, 0, 0, 0, 21, 22, 35, 133, 0, + 23, 33, 0, 0, 34, 0, 0, 24, 0, 29, + 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, + 51, 109, 0, 102, 98, 99, 100, 95, 96, 0, + 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, + 134, 101, 97, 112, 0, 90, 91, 92, 0, 0, + 0, 0, 85, 53, 0, 0, 0, 74, 75, 25, + 0, 0, 0, 0, 0, 54, 55, 76, 63, 64, + 65, 66, 67, 68, 69, 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, 104, 73, 14, 0, 32, 659, 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, 106, 88, 89, 70, 47, 93, 94, 36, 0, 105, 0, 27, 0, 0, 0, 110, 26, 18, 17, 0, 19, 0, @@ -965,145 +1000,30 @@ var yyAct = [...]int{ 0, 24, 0, 29, 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, 51, 109, 0, 102, 98, 99, 100, 95, 96, 0, 0, 0, 0, 0, 0, 103, - 0, 179, 0, 0, 134, 101, 97, 112, 0, 90, + 0, 0, 0, 0, 134, 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, 0, 85, 53, 0, 0, - 0, 74, 75, 25, 0, 0, 178, 0, 0, 54, - 55, 76, 63, 64, 65, 66, 67, 68, 69, 159, - 163, 162, 104, 73, 14, 0, 32, 0, 60, 0, - 52, 0, 0, 0, 57, 56, 58, 59, 71, 106, - 155, 157, 156, 179, 172, 173, 170, 171, 174, 175, - 176, 177, 168, 169, 161, 164, 166, 167, 165, 0, - 0, 0, 0, 0, 0, 0, 0, 181, 178, 738, - 0, 0, 740, 0, 813, 812, 0, 0, 0, 0, - 180, 159, 163, 162, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 155, 157, 156, 179, 0, 0, - 0, 0, 153, 154, 158, 160, 172, 173, 170, 171, - 174, 175, 176, 177, 168, 169, 161, 164, 166, 167, - 165, 181, 178, 745, 746, 747, 744, 743, 742, 0, - 0, 0, 0, 756, 180, 159, 163, 162, 0, 0, - 0, 0, 0, 0, 0, 799, 0, 0, 155, 157, - 156, 179, 0, 0, 0, 0, 153, 154, 158, 160, - 172, 173, 170, 171, 174, 175, 176, 177, 168, 169, - 161, 164, 166, 167, 165, 181, 178, 0, 0, 0, - 0, 0, 0, 0, 0, 709, 0, 0, 180, 159, - 163, 162, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 155, 157, 156, 179, 0, 0, 0, 0, - 153, 154, 158, 160, 172, 173, 170, 171, 174, 175, - 176, 177, 168, 169, 161, 164, 166, 167, 165, 181, - 178, 0, 0, 0, 0, 694, 0, 0, 0, 0, - 0, 0, 180, 159, 163, 162, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 155, 157, 156, 179, - 0, 0, 0, 0, 153, 154, 158, 160, 172, 173, - 170, 171, 174, 175, 176, 177, 168, 169, 161, 164, - 166, 167, 165, 181, 178, 0, 0, 0, 0, 692, - 0, 0, 0, 0, 0, 0, 180, 159, 163, 162, + 0, 74, 75, 25, 0, 0, 0, 0, 0, 54, + 55, 76, 63, 64, 65, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 155, 157, 156, 179, 0, 0, 0, 0, 153, 154, - 158, 160, 172, 173, 170, 171, 174, 175, 176, 177, - 168, 169, 161, 164, 166, 167, 165, 181, 178, 738, - 0, 0, 740, 683, 0, 0, 0, 0, 0, 0, - 180, 159, 163, 162, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 155, 157, 156, 179, 0, 0, - 0, 0, 153, 154, 158, 160, 172, 173, 170, 171, - 174, 175, 176, 177, 168, 169, 161, 164, 166, 167, - 165, 181, 178, 745, 746, 747, 744, 743, 742, 0, - 0, 679, 0, 0, 180, 159, 163, 162, 0, 0, - 0, 0, 0, 0, 0, 734, 0, 0, 155, 157, - 156, 179, 0, 0, 0, 0, 153, 154, 158, 160, - 172, 173, 170, 171, 174, 175, 176, 177, 168, 169, - 161, 164, 166, 167, 165, 181, 178, 0, 0, 0, - 0, 0, 0, 0, 0, 678, 0, 0, 180, 159, - 163, 162, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 155, 157, 156, 179, 0, 0, 0, 0, - 153, 154, 158, 160, 172, 173, 170, 171, 174, 175, - 176, 177, 168, 169, 161, 164, 166, 167, 165, 181, - 178, 0, 0, 0, 0, 624, 0, 0, 0, 0, - 0, 0, 180, 159, 163, 162, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 155, 157, 156, 179, - 0, 0, 0, 0, 153, 154, 158, 160, 172, 173, - 170, 171, 174, 175, 176, 177, 168, 169, 161, 164, - 166, 167, 165, 181, 178, 0, 0, 0, 0, 0, - 0, 0, 0, 623, 0, 0, 180, 159, 163, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 155, 157, 156, 179, 0, 0, 0, 0, 153, 154, - 158, 160, 172, 173, 170, 171, 174, 175, 176, 177, - 168, 169, 161, 164, 166, 167, 165, 181, 178, 0, - 0, 0, 0, 0, 0, 0, 0, 622, 0, 0, - 180, 159, 163, 162, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 155, 157, 156, 179, 0, 0, - 0, 0, 153, 154, 158, 160, 172, 173, 170, 171, - 174, 175, 176, 177, 168, 169, 161, 164, 166, 167, - 165, 181, 178, 0, 0, 0, 0, 605, 0, 0, - 0, 0, 0, 0, 180, 159, 163, 162, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 155, 157, - 156, 179, 0, 0, 0, 0, 153, 154, 158, 160, - 172, 173, 170, 171, 174, 175, 176, 177, 168, 169, - 161, 164, 166, 167, 165, 181, 178, 0, 0, 0, - 0, 0, 0, 0, 0, 596, 0, 0, 180, 159, - 163, 162, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 155, 157, 156, 179, 0, 0, 0, 0, - 153, 154, 158, 160, 172, 173, 170, 171, 174, 175, - 176, 177, 168, 169, 161, 164, 166, 167, 165, 181, - 178, 0, 0, 0, 0, 586, 0, 0, 0, 0, - 0, 0, 180, 159, 163, 162, 0, 0, 0, 0, - 0, 0, 567, 0, 0, 0, 155, 157, 156, 179, - 0, 0, 0, 0, 153, 154, 158, 160, 172, 173, - 170, 171, 174, 175, 176, 177, 168, 169, 161, 164, - 166, 167, 165, 181, 178, 0, 0, 0, 0, 0, - 0, 0, 0, 584, 0, 0, 180, 159, 163, 162, + 0, 0, 0, 0, 0, 104, 73, 14, 0, 32, + 641, 60, 0, 52, 0, 0, 0, 57, 56, 58, + 59, 71, 106, 88, 89, 70, 47, 93, 94, 36, + 0, 105, 0, 27, 0, 0, 0, 110, 26, 18, + 17, 0, 19, 0, 30, 0, 31, 0, 0, 20, + 0, 0, 0, 21, 22, 35, 133, 0, 23, 33, + 0, 0, 34, 0, 0, 24, 0, 29, 86, 87, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 109, + 0, 102, 98, 99, 100, 95, 96, 0, 0, 0, + 0, 0, 0, 103, 0, 0, 0, 0, 134, 101, + 97, 112, 0, 90, 91, 92, 0, 0, 0, 0, + 85, 53, 0, 0, 0, 74, 75, 25, 0, 0, + 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, + 67, 68, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 155, 157, 156, 179, 0, 0, 0, 0, 153, 154, - 158, 160, 172, 173, 170, 171, 174, 175, 176, 177, - 168, 169, 161, 164, 166, 167, 165, 181, 178, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 180, 159, 163, 162, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 155, 157, 156, 179, 0, 0, - 0, 0, 153, 154, 158, 160, 172, 173, 170, 171, - 174, 175, 176, 177, 168, 169, 161, 164, 166, 167, - 165, 181, 178, 0, 0, 0, 0, 0, 0, 563, - 0, 0, 0, 0, 180, 159, 163, 162, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 155, 157, - 156, 179, 0, 0, 0, 0, 153, 154, 158, 160, - 172, 173, 170, 171, 174, 175, 176, 177, 168, 169, - 161, 164, 166, 167, 165, 181, 178, 0, 0, 0, - 0, 0, 0, 0, 0, 557, 0, 0, 180, 159, - 163, 162, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 155, 157, 156, 179, 0, 0, 0, 0, - 153, 154, 158, 160, 172, 173, 170, 171, 174, 175, - 176, 177, 168, 169, 161, 164, 166, 167, 165, 181, - 178, 0, 0, 0, 0, 0, 0, 0, 0, 553, - 0, 0, 180, 159, 163, 162, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 155, 157, 156, 179, - 0, 0, 0, 0, 153, 154, 158, 160, 172, 173, - 170, 171, 174, 175, 176, 177, 168, 169, 161, 164, - 166, 167, 165, 181, 178, 412, 0, 0, 0, 0, - 0, 0, 0, 417, 0, 0, 180, 159, 163, 162, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 155, 157, 156, 179, 153, 154, - 158, 160, 172, 173, 170, 171, 174, 175, 176, 177, - 168, 169, 161, 164, 166, 167, 165, 0, 0, 0, - 0, 181, 178, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 180, 159, 163, 162, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 155, 157, - 156, 179, 0, 0, 0, 0, 153, 154, 158, 160, - 172, 173, 170, 171, 174, 175, 176, 177, 168, 169, - 161, 164, 166, 167, 165, 181, 178, 0, 0, 0, - 0, 0, 373, 0, 0, 0, 0, 0, 180, 159, - 163, 162, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 155, 157, 156, 179, 0, 0, 0, 0, - 153, 154, 158, 160, 172, 173, 170, 171, 174, 175, - 176, 177, 168, 169, 161, 164, 166, 167, 165, 181, - 178, 0, 0, 0, 0, 0, 152, 0, 0, 0, - 0, 0, 180, 159, 163, 162, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 155, 157, 156, 179, - 0, 0, 0, 0, 153, 154, 158, 160, 172, 173, - 170, 171, 174, 175, 176, 177, 168, 169, 161, 164, - 166, 167, 165, 181, 178, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 180, 159, 163, 162, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, - 158, 160, 172, 173, 170, 171, 174, 175, 176, 177, - 168, 169, 161, 164, 166, 167, 165, 443, 444, 454, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, + 73, 14, 0, 32, 0, 60, 0, 52, 0, 0, + 0, 57, 56, 58, 59, 71, 106, 443, 444, 454, 455, 0, 0, 882, 0, 0, 0, 0, 0, 0, 0, 0, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 489, 490, 491, 492, 493, 481, 482, @@ -1113,237 +1033,364 @@ var yyAct = [...]int{ 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, 509, 508, 112, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 456, 457, 458, 486, - 487, 437, 438, 439, 440, 441, 442, 0, 0, 443, - 444, 454, 455, 0, 0, 882, 0, 0, 0, 0, - 0, 0, 0, 900, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 489, 490, 491, 492, 493, - 481, 482, 483, 484, 485, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 0, 501, 499, 500, - 496, 497, 0, 0, 488, 494, 495, 502, 503, 505, - 504, 506, 507, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 881, 509, 508, 112, 0, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 456, 457, - 458, 486, 487, 437, 438, 439, 440, 441, 442, 156, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 872, 0, 0, 0, 0, - 0, 0, 428, 0, 181, 178, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 180, 159, 163, - 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 179, 0, 0, 0, 0, 153, - 154, 158, 160, 172, 173, 170, 171, 174, 175, 176, - 177, 168, 169, 161, 164, 166, 167, 165, 181, 178, + 487, 437, 438, 439, 440, 441, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 180, 159, 163, 162, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, - 0, 0, 0, 153, 154, 158, 160, 172, 173, 170, - 171, 174, 175, 176, 177, 168, 169, 161, 164, 166, - 167, 165, 181, 178, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 180, 159, 163, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 179, 0, 0, 0, 0, 153, 154, 158, - 160, 172, 173, 170, 171, 174, 175, 176, 177, 168, - 169, 161, 164, 166, 167, 165, 181, 178, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 159, 163, 162, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, - 0, 153, 154, 158, 160, 172, 173, 170, 171, 174, - 175, 176, 177, 168, 169, 161, 164, 166, 167, 165, - 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 159, 163, 162, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, - 0, 0, 0, 0, 0, 154, 158, 160, 172, 173, - 170, 171, 174, 175, 176, 177, 168, 169, 161, 164, - 166, 167, 165, 178, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 159, 163, 162, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 179, 0, 0, 0, 0, 0, 0, 0, 158, - 160, 172, 173, 170, 171, 174, 175, 176, 177, 168, - 169, 161, 164, 166, 167, 165, 178, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, - 163, 162, 0, 0, 0, 0, 88, 89, 70, 0, - 93, 94, 117, 0, 105, 0, 0, 0, 0, 0, - 110, 0, 0, 160, 172, 173, 170, 171, 174, 175, - 176, 177, 168, 169, 161, 164, 166, 167, 165, 133, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 86, 87, 0, 0, 0, 0, 0, 0, 0, - 0, 51, 109, 0, 102, 98, 99, 100, 95, 96, - 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, - 0, 134, 101, 97, 112, 534, 90, 91, 92, 0, - 0, 0, 0, 85, 53, 0, 0, 0, 74, 75, - 139, 0, 0, 0, 0, 0, 54, 55, 76, 63, - 64, 65, 66, 67, 68, 69, 0, 0, 0, 104, - 73, 0, 0, 0, 0, 60, 530, 52, 0, 0, - 0, 57, 56, 58, 59, 71, 106, 88, 89, 70, - 0, 93, 94, 117, 0, 105, 0, 0, 0, 0, - 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 86, 87, 0, 0, 0, 0, 0, 0, - 0, 0, 227, 109, 0, 102, 98, 99, 100, 95, - 96, 0, 0, 0, 0, 0, 0, 103, 0, 0, - 0, 0, 134, 101, 97, 112, 0, 90, 91, 92, - 0, 0, 0, 0, 85, 53, 0, 0, 0, 74, - 75, 139, 0, 0, 0, 0, 0, 54, 55, 76, - 63, 64, 65, 66, 67, 68, 69, 0, 0, 0, - 104, 73, 0, 0, 0, 0, 60, 0, 52, 0, - 0, 226, 57, 56, 58, 59, 71, 106, 88, 89, - 70, 0, 93, 94, 117, 0, 105, 0, 0, 0, - 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 86, 87, 0, 0, 0, 0, 0, - 0, 0, 0, 51, 109, 0, 102, 98, 99, 100, - 95, 96, 0, 0, 0, 0, 0, 0, 103, 0, - 0, 0, 0, 134, 101, 97, 112, 534, 90, 91, - 92, 0, 0, 0, 0, 85, 53, 0, 0, 0, - 74, 75, 139, 0, 0, 0, 0, 0, 54, 55, - 76, 63, 64, 65, 66, 67, 68, 69, 0, 0, - 0, 104, 73, 0, 0, 0, 0, 60, 0, 52, - 0, 0, 0, 57, 56, 58, 59, 71, 106, 88, - 89, 70, 0, 93, 94, 117, 0, 105, 0, 0, - 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 87, 0, 0, 0, 0, - 0, 0, 0, 0, 594, 109, 0, 102, 98, 99, - 100, 95, 96, 0, 0, 0, 0, 0, 0, 103, - 0, 0, 0, 0, 134, 101, 97, 112, 0, 90, - 91, 92, 0, 0, 0, 0, 85, 53, 0, 0, - 0, 74, 75, 139, 0, 0, 0, 0, 0, 54, - 55, 76, 63, 64, 65, 66, 67, 68, 69, 0, - 0, 0, 104, 73, 0, 0, 0, 0, 60, 0, - 52, 0, 0, 593, 57, 56, 58, 59, 71, 106, - 88, 89, 70, 0, 93, 94, 117, 426, 105, 0, - 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 86, 87, 0, 0, 0, - 0, 0, 0, 0, 0, 51, 109, 0, 102, 98, - 99, 100, 95, 96, 0, 0, 0, 0, 0, 0, - 103, 0, 0, 0, 0, 134, 101, 97, 112, 0, - 90, 91, 92, 0, 0, 0, 0, 85, 53, 0, - 0, 0, 74, 75, 139, 0, 0, 0, 0, 0, - 54, 55, 76, 63, 64, 65, 66, 67, 68, 69, - 0, 0, 0, 104, 73, 0, 0, 0, 0, 60, - 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, - 106, 88, 89, 70, 0, 93, 94, 117, 0, 105, - 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 86, 87, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 109, 0, 102, - 98, 99, 100, 95, 96, 0, 0, 0, 0, 0, - 0, 103, 0, 0, 0, 0, 134, 101, 97, 112, - 0, 90, 91, 92, 0, 0, 0, 0, 85, 53, - 0, 0, 0, 74, 75, 139, 0, 0, 0, 0, - 0, 54, 55, 76, 63, 64, 65, 66, 67, 68, - 69, 0, 0, 0, 104, 73, 0, 0, 0, 0, - 60, 0, 52, 0, 0, 389, 57, 56, 58, 59, - 71, 106, 88, 89, 70, 0, 93, 94, 117, 0, - 105, 0, 0, 0, 0, 0, 110, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 86, 87, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 109, 0, - 102, 98, 99, 100, 95, 96, 0, 0, 0, 0, - 0, 0, 103, 0, 0, 0, 0, 134, 101, 97, - 112, 0, 90, 91, 92, 0, 0, 0, 0, 85, - 53, 0, 0, 0, 74, 75, 139, 0, 0, 0, - 0, 0, 54, 55, 76, 63, 64, 65, 66, 67, - 68, 69, 0, 0, 0, 104, 73, 0, 0, 0, - 365, 60, 0, 52, 0, 0, 0, 57, 56, 58, - 59, 71, 106, 88, 89, 70, 0, 93, 94, 117, - 0, 105, 0, 0, 0, 0, 0, 110, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 87, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 109, - 0, 102, 98, 99, 100, 95, 96, 0, 0, 0, - 0, 0, 0, 103, 179, 0, 0, 0, 134, 101, - 97, 112, 0, 90, 91, 92, 0, 0, 0, 0, - 85, 53, 0, 0, 0, 74, 75, 139, 0, 178, - 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, - 67, 68, 69, 163, 162, 0, 104, 73, 0, 0, - 0, 0, 60, 0, 52, 0, 0, 0, 57, 56, - 58, 59, 71, 106, 0, 0, 0, 172, 173, 170, - 171, 174, 175, 176, 177, 168, 169, 161, 164, 166, - 167, 165, 443, 444, 454, 455, 0, 0, 434, 0, - 0, 0, 0, 0, 0, 0, 0, 459, 460, 461, + 0, 0, 443, 444, 454, 455, 0, 0, 882, 0, + 0, 0, 0, 0, 0, 0, 900, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 489, 490, 491, 492, 493, 481, 482, 483, 484, 485, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 0, 501, 499, 500, 496, 497, 0, 0, 488, 494, 495, 502, 503, 505, 504, 506, 507, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 498, 509, 508, - 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 0, 0, 0, 0, 0, 0, 0, 881, 509, 508, + 112, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 456, 457, 458, 486, 487, 437, 438, 439, 440, - 441, 442, 443, 444, 454, 455, 0, 0, 916, 0, - 0, 0, 0, 0, 0, 0, 0, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 489, 490, - 491, 492, 493, 481, 482, 483, 484, 485, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 0, - 501, 499, 500, 496, 497, 0, 0, 488, 494, 495, - 502, 503, 505, 504, 506, 507, 117, 0, 105, 0, - 0, 0, 0, 0, 110, 0, 0, 498, 509, 508, - 0, 0, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 456, 457, 458, 486, 487, 745, 746, 747, 744, - 743, 742, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 655, 109, 0, 0, 0, + 441, 442, 88, 89, 70, 0, 93, 94, 117, 0, + 105, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 134, 0, 0, 112, 0, + 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, + 0, 872, 0, 0, 0, 0, 0, 86, 87, 0, + 0, 0, 0, 0, 0, 0, 0, 51, 109, 0, + 102, 98, 99, 100, 95, 96, 0, 0, 0, 0, + 0, 0, 103, 0, 0, 0, 0, 134, 101, 97, + 112, 534, 90, 91, 92, 0, 0, 0, 0, 85, + 53, 0, 0, 0, 74, 75, 139, 0, 0, 0, + 0, 0, 54, 55, 76, 63, 64, 65, 66, 67, + 68, 69, 0, 0, 88, 89, 70, 0, 93, 94, + 117, 0, 105, 0, 0, 0, 0, 0, 110, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 104, 73, + 0, 0, 0, 0, 60, 530, 52, 133, 0, 0, + 57, 56, 58, 59, 71, 106, 0, 0, 0, 86, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 227, + 109, 0, 102, 98, 99, 100, 95, 96, 0, 0, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 134, + 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, + 0, 85, 53, 0, 0, 0, 74, 75, 139, 0, + 0, 0, 0, 0, 54, 55, 76, 63, 64, 65, + 66, 67, 68, 69, 88, 89, 70, 0, 93, 94, + 117, 0, 105, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 233, 0, 0, 0, 0, 0, + 104, 73, 0, 0, 0, 0, 60, 133, 52, 0, + 0, 226, 57, 56, 58, 59, 71, 106, 0, 86, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 51, + 109, 0, 102, 98, 99, 100, 95, 96, 0, 0, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 134, + 101, 97, 112, 534, 90, 91, 92, 0, 0, 0, + 0, 85, 53, 0, 0, 0, 74, 75, 139, 0, + 0, 0, 0, 0, 54, 55, 76, 63, 64, 65, + 66, 67, 68, 69, 88, 89, 70, 0, 93, 94, + 117, 0, 105, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, - 0, 656, 0, 0, 654, 0, 0, 0, 0, 0, - 106, + 104, 73, 0, 0, 0, 0, 60, 133, 52, 0, + 0, 0, 57, 56, 58, 59, 71, 106, 0, 86, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 594, + 109, 0, 102, 98, 99, 100, 95, 96, 0, 0, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 134, + 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, + 0, 85, 53, 0, 0, 0, 74, 75, 139, 0, + 0, 0, 0, 0, 54, 55, 76, 63, 64, 65, + 66, 67, 68, 69, 88, 89, 70, 0, 93, 94, + 117, 426, 105, 0, 0, 0, 0, 0, 110, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 104, 73, 0, 0, 0, 0, 60, 133, 52, 0, + 0, 593, 57, 56, 58, 59, 71, 106, 0, 86, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 51, + 109, 0, 102, 98, 99, 100, 95, 96, 0, 0, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 134, + 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, + 0, 85, 53, 0, 0, 0, 74, 75, 139, 0, + 0, 0, 0, 0, 54, 55, 76, 63, 64, 65, + 66, 67, 68, 69, 88, 89, 70, 0, 93, 94, + 117, 0, 105, 0, 0, 0, 0, 0, 110, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 104, 73, 0, 0, 0, 0, 60, 133, 52, 0, + 0, 0, 57, 56, 58, 59, 71, 106, 0, 86, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 51, + 109, 0, 102, 98, 99, 100, 95, 96, 0, 0, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 134, + 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, + 0, 85, 53, 0, 0, 0, 74, 75, 139, 0, + 0, 0, 0, 0, 54, 55, 76, 63, 64, 65, + 66, 67, 68, 69, 88, 89, 70, 0, 93, 94, + 117, 0, 105, 0, 0, 0, 0, 0, 110, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 104, 73, 0, 0, 0, 0, 60, 133, 52, 0, + 0, 389, 57, 56, 58, 59, 71, 106, 0, 86, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 51, + 109, 0, 102, 98, 99, 100, 95, 96, 0, 0, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 134, + 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, + 0, 85, 53, 0, 0, 0, 74, 75, 139, 0, + 0, 0, 0, 0, 54, 55, 76, 63, 64, 65, + 66, 67, 68, 69, 88, 89, 70, 0, 93, 94, + 117, 0, 105, 0, 0, 0, 0, 0, 110, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 104, 73, 0, 0, 0, 365, 60, 133, 52, 0, + 0, 0, 57, 56, 58, 59, 71, 106, 0, 86, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 51, + 109, 0, 102, 98, 99, 100, 95, 96, 0, 0, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 134, + 101, 97, 112, 0, 90, 91, 92, 0, 0, 0, + 0, 85, 53, 0, 0, 0, 74, 75, 139, 0, + 0, 0, 0, 0, 54, 55, 76, 63, 64, 65, + 66, 67, 68, 69, 0, 0, 155, 157, 156, 179, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 104, 73, 0, 181, 178, 0, 60, 0, 52, 0, + 0, 0, 57, 56, 58, 59, 71, 106, 153, 154, + 165, 168, 169, 170, 171, 172, 173, 175, 177, 0, + 155, 157, 156, 179, 0, 0, 0, 0, 756, 180, + 159, 163, 162, 0, 0, 0, 0, 0, 158, 0, + 160, 164, 166, 167, 174, 176, 161, 181, 178, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 165, 168, 169, 170, 171, 172, + 173, 175, 177, 0, 155, 157, 156, 179, 0, 0, + 709, 0, 0, 180, 159, 163, 162, 0, 0, 0, + 0, 0, 158, 0, 160, 164, 166, 167, 174, 176, + 161, 181, 178, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 165, 168, + 169, 170, 171, 172, 173, 175, 177, 0, 0, 0, + 694, 155, 157, 156, 179, 0, 0, 180, 159, 163, + 162, 0, 0, 0, 0, 0, 158, 0, 160, 164, + 166, 167, 174, 176, 161, 0, 0, 0, 181, 178, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 153, 154, 165, 168, 169, 170, 171, + 172, 173, 175, 177, 0, 0, 0, 692, 155, 157, + 156, 179, 0, 0, 180, 159, 163, 162, 0, 0, + 0, 0, 0, 158, 0, 160, 164, 166, 167, 174, + 176, 161, 0, 0, 0, 181, 178, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 153, 154, 165, 168, 169, 170, 171, 172, 173, 175, + 177, 0, 0, 0, 683, 155, 157, 156, 179, 0, + 0, 180, 159, 163, 162, 0, 0, 0, 0, 0, + 158, 0, 160, 164, 166, 167, 174, 176, 161, 0, + 0, 0, 181, 178, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 153, 154, 165, + 168, 169, 170, 171, 172, 173, 175, 177, 0, 155, + 157, 156, 179, 0, 0, 679, 0, 0, 180, 159, + 163, 162, 0, 0, 0, 0, 0, 158, 0, 160, + 164, 166, 167, 174, 176, 161, 181, 178, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 153, 154, 165, 168, 169, 170, 171, 172, 173, + 175, 177, 0, 155, 157, 156, 179, 0, 0, 678, + 0, 0, 180, 159, 163, 162, 0, 0, 0, 0, + 0, 158, 0, 160, 164, 166, 167, 174, 176, 161, + 181, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 153, 154, 165, 168, 169, + 170, 171, 172, 173, 175, 177, 0, 0, 0, 624, + 155, 157, 156, 179, 0, 0, 180, 159, 163, 162, + 0, 0, 0, 0, 0, 158, 0, 160, 164, 166, + 167, 174, 176, 161, 0, 0, 0, 181, 178, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 165, 168, 169, 170, 171, 172, + 173, 175, 177, 0, 155, 157, 156, 179, 0, 0, + 623, 0, 0, 180, 159, 163, 162, 0, 0, 0, + 0, 0, 158, 0, 160, 164, 166, 167, 174, 176, + 161, 181, 178, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 165, 168, + 169, 170, 171, 172, 173, 175, 177, 0, 155, 157, + 156, 179, 0, 0, 622, 0, 0, 180, 159, 163, + 162, 0, 0, 0, 0, 0, 158, 0, 160, 164, + 166, 167, 174, 176, 161, 181, 178, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 153, 154, 165, 168, 169, 170, 171, 172, 173, 175, + 177, 0, 0, 0, 605, 155, 157, 156, 179, 0, + 0, 180, 159, 163, 162, 0, 0, 0, 0, 0, + 158, 0, 160, 164, 166, 167, 174, 176, 161, 0, + 0, 0, 181, 178, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 153, 154, 165, + 168, 169, 170, 171, 172, 173, 175, 177, 0, 155, + 157, 156, 179, 0, 0, 596, 0, 0, 180, 159, + 163, 162, 0, 0, 0, 0, 0, 158, 0, 160, + 164, 166, 167, 174, 176, 161, 181, 178, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 153, 154, 165, 168, 169, 170, 171, 172, 173, + 175, 177, 567, 0, 0, 586, 155, 157, 156, 179, + 0, 0, 180, 159, 163, 162, 0, 0, 0, 0, + 0, 158, 0, 160, 164, 166, 167, 174, 176, 161, + 0, 0, 0, 181, 178, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, + 165, 168, 169, 170, 171, 172, 173, 175, 177, 0, + 155, 157, 156, 179, 0, 0, 584, 0, 0, 180, + 159, 163, 162, 0, 0, 0, 0, 0, 158, 0, + 160, 164, 166, 167, 174, 176, 161, 181, 178, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 165, 168, 169, 170, 171, 172, + 173, 175, 177, 0, 155, 157, 156, 179, 0, 0, + 0, 0, 0, 180, 159, 163, 162, 0, 0, 0, + 0, 0, 158, 0, 160, 164, 166, 167, 174, 176, + 161, 181, 178, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 165, 168, + 169, 170, 171, 172, 173, 175, 177, 0, 155, 157, + 156, 179, 563, 0, 0, 0, 0, 180, 159, 163, + 162, 0, 0, 0, 0, 0, 158, 0, 160, 164, + 166, 167, 174, 176, 161, 181, 178, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 153, 154, 165, 168, 169, 170, 171, 172, 173, 175, + 177, 0, 155, 157, 156, 179, 0, 0, 557, 0, + 0, 180, 159, 163, 162, 0, 0, 0, 0, 0, + 158, 0, 160, 164, 166, 167, 174, 176, 161, 181, + 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 153, 154, 165, 168, 169, 170, + 171, 172, 173, 175, 177, 0, 155, 157, 156, 179, + 0, 0, 553, 0, 0, 180, 159, 163, 162, 0, + 0, 0, 0, 0, 158, 0, 160, 164, 166, 167, + 174, 176, 161, 181, 178, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 412, 0, 0, 0, 153, 154, + 165, 168, 169, 170, 171, 172, 173, 175, 177, 0, + 0, 0, 0, 0, 0, 0, 417, 0, 0, 180, + 159, 163, 162, 155, 157, 156, 179, 0, 158, 0, + 160, 164, 166, 167, 174, 176, 161, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 181, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 153, 154, 165, 168, 169, + 170, 171, 172, 173, 175, 177, 0, 155, 157, 156, + 179, 0, 0, 0, 0, 0, 180, 159, 163, 162, + 0, 0, 0, 0, 0, 158, 0, 160, 164, 166, + 167, 174, 176, 161, 181, 178, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, + 154, 165, 168, 169, 170, 171, 172, 173, 175, 177, + 0, 0, 0, 0, 373, 155, 157, 156, 179, 0, + 180, 159, 163, 162, 0, 0, 0, 0, 0, 158, + 0, 160, 164, 166, 167, 174, 176, 161, 0, 0, + 0, 0, 181, 178, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 153, 154, 165, + 168, 169, 170, 171, 172, 173, 175, 177, 0, 0, + 0, 0, 152, 155, 157, 156, 179, 0, 180, 159, + 163, 162, 0, 0, 0, 0, 0, 158, 0, 160, + 164, 166, 167, 174, 176, 161, 0, 0, 0, 0, + 181, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 153, 154, 165, 168, 169, + 170, 171, 172, 173, 175, 177, 0, 0, 157, 156, + 179, 0, 0, 0, 0, 0, 180, 159, 163, 162, + 0, 0, 0, 0, 0, 158, 0, 160, 164, 166, + 167, 174, 176, 161, 181, 178, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, + 154, 165, 168, 169, 170, 171, 172, 173, 175, 177, + 0, 0, 0, 156, 179, 0, 0, 0, 0, 0, + 180, 159, 163, 162, 0, 0, 0, 0, 0, 158, + 0, 160, 164, 166, 167, 174, 176, 161, 181, 178, + 428, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 153, 154, 165, 168, 169, 170, 171, + 172, 173, 175, 177, 0, 0, 0, 0, 0, 0, + 0, 0, 179, 0, 180, 159, 163, 162, 0, 0, + 0, 0, 0, 158, 0, 160, 164, 166, 167, 174, + 176, 161, 0, 0, 0, 0, 181, 178, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 153, 154, 165, 168, 169, 170, 171, 172, 173, + 175, 177, 0, 0, 0, 0, 179, 0, 0, 0, + 0, 0, 180, 159, 163, 162, 0, 0, 0, 0, + 0, 158, 0, 160, 164, 166, 167, 174, 176, 161, + 181, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 153, 154, 165, 168, 169, + 170, 171, 172, 173, 175, 177, 0, 0, 0, 0, + 179, 0, 0, 0, 0, 0, 180, 159, 163, 162, + 0, 0, 0, 0, 0, 158, 0, 160, 164, 166, + 167, 174, 176, 161, 181, 178, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, + 154, 165, 168, 169, 170, 171, 172, 173, 175, 177, + 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, + 0, 159, 163, 162, 0, 0, 0, 0, 0, 158, + 0, 160, 164, 166, 167, 174, 176, 161, 178, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 179, 154, 165, 168, 169, 170, 171, 172, + 173, 175, 177, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 159, 163, 162, 178, 0, 0, + 0, 0, 158, 0, 160, 164, 166, 167, 174, 176, + 161, 179, 0, 165, 168, 169, 170, 171, 172, 173, + 175, 177, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 159, 163, 162, 178, 0, 0, 0, + 0, 158, 0, 160, 164, 166, 167, 174, 176, 161, + 179, 0, 165, 168, 169, 170, 171, 172, 173, 175, + 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 159, 163, 162, 178, 0, 0, 0, 0, + 0, 0, 160, 164, 166, 167, 174, 176, 161, 179, + 0, 165, 168, 169, 170, 171, 172, 173, 175, 177, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 159, 163, 162, 178, 0, 0, 0, 0, 0, + 0, 0, 164, 166, 167, 174, 176, 161, 0, 0, + 165, 168, 169, 170, 171, 172, 173, 175, 177, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 163, 162, 443, 444, 454, 455, 0, 0, 434, + 0, 164, 166, 167, 174, 176, 161, 0, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 489, + 490, 491, 492, 493, 481, 482, 483, 484, 485, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 0, 501, 499, 500, 496, 497, 0, 0, 488, 494, + 495, 502, 503, 505, 504, 506, 507, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 498, 509, + 508, 0, 0, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 456, 457, 458, 486, 487, 437, 438, 439, + 440, 441, 442, 443, 444, 454, 455, 0, 0, 916, + 0, 0, 0, 0, 0, 0, 0, 0, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 489, + 490, 491, 492, 493, 481, 482, 483, 484, 485, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 0, 501, 499, 500, 496, 497, 0, 0, 488, 494, + 495, 502, 503, 505, 504, 506, 507, 117, 0, 105, + 0, 0, 0, 0, 0, 110, 0, 0, 498, 509, + 508, 0, 0, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 456, 457, 458, 486, 487, 745, 746, 747, + 744, 743, 742, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 655, 109, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 134, 0, 0, 112, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 233, 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, 231, 0, 656, 0, 0, 654, 0, + 0, 0, 0, 0, 106, } var yyPact = [...]int{ - -1000, -1000, 1195, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 262, 522, 588, 770, -1000, -1000, -1000, 258, 3945, 257, - 255, 6889, 6889, 6889, 135, 749, 6889, -1000, 5185, 254, - 248, 244, -1000, 450, 6889, 800, 275, 23, 578, 792, - 790, 788, 509, 520, 402, -1000, -1000, 239, -1000, -1000, - 133, 236, 6103, 6889, 511, 511, 6889, 6889, 6889, 6889, - 6889, -1000, -1000, 6889, 6889, 6889, 6889, 6889, 6889, 6889, - 232, 6889, -1000, 827, 6889, 6889, 6889, -1000, -1000, -1000, - 98, -1000, 557, 554, -1000, 351, 226, 223, 6889, 6889, - 221, 6889, 6889, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 787, 813, -1000, 108, 202, 202, 213, - -1000, 525, 760, 175, 760, 288, -1000, -1000, 349, 614, - 10, 625, 760, -1000, -1000, -1000, -1000, 8, -1000, -18, - 2924, 6889, 695, 23, 524, 6889, 6889, 348, 5239, 662, - 343, 340, 5, -1000, -1000, -5, 23, -1000, -19, -7, - -1000, 5239, -1000, 6889, 6889, 6889, 6889, 6889, 6889, 6889, - 6889, 6889, 6889, 6889, 6889, 6889, 6889, 6889, 6889, 6889, - 6889, 6889, 6889, 6889, 6889, 6889, 6889, 6889, 6889, 589, - 6758, 6889, 511, 6889, 770, -1000, 5131, 339, -1000, 785, - -1000, 781, -1000, 585, -1000, 593, 211, 3945, 210, 336, - 271, 6627, 6889, 6889, 6889, 6889, 6889, 6889, 6889, 6889, - 6889, 6889, 6889, 6889, -1000, -1000, 6889, 6889, 6889, 97, - 6103, 119, 18, -1000, -1000, 5077, 511, 209, -1000, -1000, - 98, 6889, -1000, -1000, 6103, -1000, -82, -82, 16, -82, - 5019, -82, -82, -82, -82, -82, -82, -82, -1000, 6889, - -82, 454, 683, 799, -1000, 143, 6496, 511, 5628, 5574, - 5628, 6889, 3188, 3188, 202, -1000, 550, 291, 202, -1000, - -1000, 6889, 6889, 5239, 5239, 6889, 5239, 5239, 730, -1000, - 700, 575, 683, 6889, -1000, -1000, 5972, -1000, 6103, 779, - 525, 333, 525, -1000, -1000, 1062, -1000, 330, -10, 615, - 760, -1000, 609, 553, 777, 604, -1000, -1000, 770, 6889, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 208, 4965, - 206, -1000, 329, 17, 5239, 4911, -1000, -1000, -1000, -1000, - 135, -1000, 722, -1000, 6889, -1000, 6889, 5735, 5788, 338, - 5628, 5520, 5841, 6874, 3931, 138, 138, 138, 16, -82, - 16, 16, 187, 187, 316, 316, 316, 316, 130, 130, - 130, 130, 316, -1000, 4857, 6889, 5682, 13, -1000, -1000, - 4803, -11, 2791, -1000, -1000, -1000, 205, 585, 583, 611, - 447, -1000, 611, 6889, -1000, 6889, -1000, -1000, 5628, 6889, - 5628, 5628, 5628, 5628, 5628, 5628, 5628, 5628, 5628, 5628, - 5628, 5628, 4749, 117, 4695, 202, -1000, 6889, -1000, 166, - -24, 6103, 6365, -1000, 6103, 4641, 104, -1000, 162, -1000, - -1000, -1000, -1000, 227, 764, 4587, 113, 405, 6889, 96, - 202, -1000, -1000, 6889, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1241, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 224, 451, 569, 683, -1000, -1000, -1000, 217, 4449, 214, + 211, 5600, 5600, 5600, 131, 640, 5600, -1000, 6798, 209, + 207, 206, -1000, 379, 5600, 724, 232, 0, 495, 721, + 715, 713, 455, 446, 940, -1000, -1000, 205, -1000, -1000, + 126, 204, 4940, 5600, 618, 618, 5600, 5600, 5600, 5600, + 5600, -1000, -1000, 5600, 5600, 5600, 5600, 5600, 5600, 5600, + 203, 5600, -1000, 827, 5600, 5600, 5600, -1000, -1000, -1000, + 82, -1000, 503, 500, -1000, 280, 202, 200, 5600, 5600, + 192, 5600, 5600, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 787, 799, -1000, 136, 172, 172, 190, + -1000, 487, 662, 139, 662, 227, -1000, -1000, 314, 553, + -13, 542, 662, -1000, -1000, -1000, -1000, -28, -1000, -58, + 3269, 5600, 594, 0, 462, 5600, 5600, 313, 6856, 567, + 311, 302, -29, -1000, -1000, -30, 0, -1000, -59, -32, + -1000, 6856, -1000, 5600, 5600, 5600, 5600, 5600, 5600, 5600, + 5600, 5600, 5600, 5600, 5600, 5600, 5600, 5600, 5600, 5600, + 5600, 5600, 5600, 5600, 5600, 5600, 5600, 5600, 5600, 344, + 5490, 5600, 618, 5600, 683, -1000, 6740, 301, -1000, 710, + -1000, 703, -1000, 532, -1000, 543, 188, 4449, 185, 300, + 216, 5380, 5600, 5600, 5600, 5600, 5600, 5600, 5600, 5600, + 5600, 5600, 5600, 5600, -1000, -1000, 5600, 5600, 5600, 95, + 4940, 74, -11, -1000, -1000, 6686, 618, 183, -1000, -1000, + 82, 5600, -1000, -1000, 4940, -1000, 403, 403, 412, 403, + 6619, 403, 403, 403, 403, 403, 403, 403, -1000, 5600, + 403, 388, 619, 793, -1000, 163, 5270, 618, 7076, 7022, + 7076, 5600, 3579, 3579, 172, -1000, 499, 191, 172, -1000, + -1000, 5600, 5600, 6856, 6856, 5600, 6856, 6856, 705, -1000, + 695, 498, 619, 5600, -1000, -1000, 4828, -1000, 4940, 694, + 487, 299, 487, -1000, -1000, 1085, -1000, 296, -33, 537, + 662, -1000, 552, 472, 693, 531, -1000, -1000, 683, 5600, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 182, 6565, + 180, -1000, 295, -12, 6856, 6511, -1000, -1000, -1000, -1000, + 131, -1000, 646, -1000, 5600, -1000, 5600, 7183, 7222, 6910, + 7076, 6964, 7261, 7339, 7300, 132, 132, 132, 412, 403, + 412, 412, 254, 254, 321, 321, 321, 321, 150, 150, + 150, 150, 321, -1000, 6457, 5600, 7130, -14, -1000, -1000, + 6403, -34, 3113, -1000, -1000, -1000, 179, 532, 520, 544, + 377, -1000, 544, 5600, -1000, 5600, -1000, -1000, 7076, 5600, + 7076, 7076, 7076, 7076, 7076, 7076, 7076, 7076, 7076, 7076, + 7076, 7076, 6349, 67, 6292, 172, -1000, 5600, -1000, 130, + -65, 4940, 5160, -1000, 4940, 6238, 66, -1000, 128, -1000, + -1000, -1000, -1000, 215, 665, 6181, 52, 334, 5600, 43, + 172, -1000, -1000, 5600, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1351,117 +1398,117 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 202, -1000, -1000, -1000, -1000, 135, 6889, 6889, 97, 135, - 585, 11, -1000, 5239, 4533, 4479, -1000, -1000, -1000, 4425, - -1000, 9, -1000, 5239, 6889, 159, -1000, -1000, 929, -1000, - -1000, -1000, 527, 567, -1000, 760, 565, 735, -1000, 523, - -1000, 5239, 158, 3814, 6889, 6889, 6889, 204, -1000, -1000, - 199, 5239, -1000, 6889, 5682, 157, 511, 7196, 3683, -1000, - 196, 278, 583, -1000, 611, -1000, -1000, 443, -12, -1000, - 4371, 4317, 2658, 6874, 3552, -1000, -1000, -1000, 4263, -41, - 6889, -1000, 5239, 511, 195, 155, -1000, -1000, -1000, 89, - -1000, -1000, 707, -1000, -1000, -1000, -1000, 6889, -1000, 5628, - -1000, -1000, 4209, -1000, -1000, 69, 4155, -1000, -1000, 583, - 154, 6889, -1000, -1000, -1000, 151, 6234, 5239, -1000, -1000, - 760, 510, 0, -1000, -1000, 760, 735, -1000, 327, -1000, - -1000, -1000, 4101, 323, 5239, -1000, 322, 321, 278, 5682, - 319, -1000, 150, 580, 511, 191, 6103, -1000, -1000, -1000, - 696, 278, 147, 4, -1000, 60, -1000, -1000, 621, -1000, - -1000, -1000, -1000, 441, -12, 4335, -1000, 611, 3945, 270, - 314, -1000, -1000, -1000, 6889, 5628, -1000, 6103, -41, -1000, - -1000, 4047, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -8, -1000, 760, 396, 735, -1000, 0, -1000, 2525, 311, - 6889, 406, -1000, 786, -1000, 141, -1000, 3290, 7196, -1000, - 6103, 63, 2392, -1000, 186, 435, 139, 631, 278, 498, - -1000, -1000, 434, -1000, -1000, -1000, 717, 718, 611, 665, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 4065, -1000, - -1000, -1000, -1000, 3057, 5628, 131, 395, 417, 388, 760, - -8, -1000, -1000, 366, 310, -1000, 129, -1000, 6889, 190, - 404, 302, 750, 631, -1000, -1000, -1000, 127, -1000, 125, - -1000, 300, 611, -1000, 132, 132, 184, -1000, 719, -1000, - -1000, 793, -13, -1000, -31, 7038, 23, -25, -1000, -1000, - 3057, -41, -1000, -1000, -1000, -1000, 364, -1000, -1000, 3421, - 3993, -1000, -1000, -1000, -1000, -1000, 296, 132, 2259, 3290, - -1000, -1000, 74, -1000, 2126, 415, 278, 409, 180, -48, - 475, -1000, -1000, 717, -1000, 6889, -20, -1000, -49, 7038, - -1000, -1000, 5505, 411, -1000, -1000, -1000, -1000, -1000, 3057, - -1000, 408, 293, -1000, 124, 611, -1000, -1000, -1000, -1000, - -33, -1000, -1000, 713, 6889, -1000, -1000, 5239, -1000, 7038, - 6889, -1000, -1000, 5403, -1000, 290, 283, 613, 684, 542, - -1000, 524, -1000, -1000, 1993, 3057, -1000, -1000, 352, -1000, - 1860, 1727, -1000, 180, -1000, 5239, -1000, -1000, 5239, 177, - -1000, -1000, -1000, -1000, 611, 7138, 7038, 192, 1594, -1000, - -1000, -1000, -1000, -1000, 278, -12, -1000, -1000, 7038, -1000, - -1000, -1000, 1461, 122, -1000, -1000, 132, 299, -1000, -1000, - -1000, 1328, -1000, + 172, -1000, -1000, -1000, -1000, 131, 5600, 5600, 95, 131, + 532, -18, -1000, 6856, 6127, 6073, -1000, -1000, -1000, 6016, + -1000, -19, -1000, 6856, 5600, 124, -1000, -1000, 929, -1000, + -1000, -1000, 461, 517, -1000, 662, 508, 644, -1000, 460, + -1000, 6856, 118, 4295, 5600, 5600, 5600, 177, -1000, -1000, + 170, 6856, -1000, 5600, 7130, 113, 618, 7647, 4141, -1000, + 162, 471, 520, -1000, 544, -1000, -1000, 374, -40, -1000, + 5962, 5908, 2957, 7339, 3987, -1000, -1000, -1000, 5851, -73, + 5600, -1000, 6856, 618, 161, 112, -1000, -1000, -1000, 41, + -1000, -1000, 607, -1000, -1000, -1000, -1000, 5600, -1000, 7076, + -1000, -1000, 5794, -1000, -1000, 40, 5737, -1000, -1000, 520, + 111, 5600, -1000, -1000, -1000, 108, 5050, 6856, -1000, -1000, + 662, 454, -31, -1000, -1000, 662, 644, -1000, 294, -1000, + -1000, -1000, 5683, 292, 6856, -1000, 291, 289, 471, 7130, + 288, -1000, 107, 515, 618, 159, 4940, -1000, -1000, -1000, + 591, 471, 106, -23, -1000, 2, -1000, -1000, 677, -1000, + -1000, -1000, -1000, 367, -40, 1421, -1000, 544, 4449, 178, + 287, -1000, -1000, -1000, 5600, 7076, -1000, 4940, -73, -1000, + -1000, 5629, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -38, -1000, 662, 326, 644, -1000, -31, -1000, 2801, 286, + 5600, 395, -1000, 696, -1000, 104, -1000, 3679, 7647, -1000, + 4940, 39, 2645, -1000, 158, 366, 102, 557, 471, 459, + -1000, -1000, 365, -1000, -1000, -1000, 627, 633, 544, 546, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1265, -1000, + -1000, -1000, -1000, 3425, 7076, 99, 325, 362, 324, 662, + -38, -1000, -1000, 323, 276, -1000, 98, -1000, 5600, 155, + 360, 270, 659, 557, -1000, -1000, -1000, 96, -1000, 92, + -1000, 266, 544, -1000, 97, 97, 151, -1000, 630, -1000, + -1000, 1109, -35, -1000, -72, 7489, 0, -48, -1000, -1000, + 3425, -73, -1000, -1000, -1000, -1000, 322, -1000, -1000, 3833, + 361, -1000, -1000, -1000, -1000, -1000, 265, 97, 2489, 3679, + -1000, -1000, 79, -1000, 2333, 347, 471, 338, 140, -74, + 953, -1000, -1000, 627, -1000, 5600, -36, -1000, -75, 7489, + -1000, -1000, 4728, 730, -1000, -1000, -1000, -1000, -1000, 3425, + -1000, 337, 260, -1000, 86, 544, -1000, -1000, -1000, -1000, + -41, -1000, -1000, 613, 5600, -1000, -1000, 6856, -1000, 7489, + 5600, -1000, -1000, 4603, -1000, 253, 237, 547, 580, 494, + -1000, 462, -1000, -1000, 2177, 3425, -1000, -1000, 336, -1000, + 2021, 1865, -1000, 140, -1000, 6856, -1000, -1000, 6856, 133, + -1000, -1000, -1000, -1000, 544, 7589, 7489, 236, 1709, -1000, + -1000, -1000, -1000, -1000, 471, -40, -1000, -1000, 7489, -1000, + -1000, -1000, 1553, 84, -1000, -1000, 97, 261, -1000, -1000, + -1000, 1397, -1000, } var yyPgo = [...]int{ - 0, 960, 958, 51, 9, 957, 3, 955, 11, 31, - 79, 78, 49, 45, 953, 21, 951, 73, 19, 55, - 946, 0, 80, 945, 944, 38, 141, 47, 25, 942, - 36, 940, 56, 62, 930, 10, 928, 927, 925, 924, - 13, 46, 923, 921, 100, 84, 199, 920, 918, 917, - 5, 909, 83, 40, 908, 138, 43, 907, 906, 902, - 901, 900, 119, 898, 897, 887, 886, 12, 883, 880, - 44, 42, 32, 2, 15, 665, 8, 771, 20, 879, - 873, 872, 41, 74, 623, 870, 121, 869, 868, 866, - 71, 858, 33, 856, 855, 30, 37, 853, 852, 28, - 845, 835, 459, 833, 18, 832, 831, 26, 829, 63, - 1, 4, 828, 17, 823, 39, 822, 815, 814, 7, - 812, 6, 809, 803, 14, 797, 29, 16, + 0, 897, 896, 51, 9, 895, 3, 29, 16, 894, + 11, 31, 79, 78, 49, 45, 893, 21, 892, 73, + 19, 55, 891, 0, 80, 890, 889, 38, 141, 47, + 25, 887, 36, 886, 56, 62, 883, 10, 880, 879, + 872, 868, 13, 46, 866, 858, 100, 84, 199, 856, + 855, 853, 5, 852, 83, 40, 845, 138, 43, 840, + 837, 835, 825, 823, 119, 822, 819, 818, 817, 12, + 815, 814, 44, 42, 32, 2, 15, 629, 8, 686, + 20, 812, 809, 807, 41, 74, 536, 806, 121, 803, + 802, 800, 71, 798, 33, 797, 795, 30, 37, 791, + 789, 28, 787, 786, 545, 784, 18, 783, 776, 26, + 773, 63, 1, 4, 768, 17, 767, 39, 765, 763, + 761, 7, 760, 6, 755, 745, 14, 742, } var yyR1 = [...]int{ - 0, 125, 4, 4, 4, 4, 4, 4, 4, 4, + 0, 127, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, - 5, 5, 5, 5, 5, 5, 6, 6, 109, 109, - 86, 86, 8, 8, 8, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 77, 77, 14, 14, 16, 16, 126, 126, 96, 96, - 95, 95, 102, 102, 15, 15, 18, 18, 17, 17, - 90, 90, 110, 110, 20, 20, 20, 20, 20, 20, - 20, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 5, 5, 5, 5, 5, 5, 6, 6, 111, 111, + 88, 88, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 88, 88, 87, 87, 24, - 24, 101, 101, 25, 10, 1, 1, 2, 2, 11, - 11, 120, 120, 75, 75, 12, 13, 27, 27, 114, - 114, 115, 115, 78, 78, 78, 78, 123, 123, 124, - 124, 23, 23, 80, 80, 80, 80, 99, 99, 99, - 127, 127, 122, 122, 66, 66, 64, 64, 68, 68, - 65, 65, 111, 111, 112, 112, 28, 28, 29, 29, - 74, 74, 72, 72, 72, 73, 73, 82, 82, 108, - 108, 30, 30, 94, 94, 32, 98, 98, 33, 33, - 113, 113, 34, 34, 34, 34, 119, 119, 81, 81, - 81, 100, 100, 35, 35, 36, 37, 37, 37, 37, - 39, 39, 38, 79, 79, 117, 117, 116, 116, 118, - 118, 76, 76, 76, 76, 76, 76, 97, 97, 40, - 40, 89, 89, 67, 19, 91, 91, 41, 92, 92, - 93, 93, 43, 42, 42, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 121, 3, 3, 104, 104, 103, 103, 50, 50, - 51, 51, 51, 51, 44, 44, 45, 45, 48, 48, - 85, 85, 85, 83, 83, 55, 55, 55, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 56, 56, 56, 21, 21, 22, - 22, 54, 57, 57, 57, 58, 58, 58, 59, 59, - 59, 59, 59, 59, 26, 26, 26, 46, 46, 46, - 60, 60, 61, 61, 61, 61, 61, 61, 52, 52, - 52, 53, 53, 53, 107, 70, 70, 106, 106, 69, - 69, 69, 69, 69, 69, 84, 84, 84, 84, 62, - 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, - 47, 47, 47, 47, 47, 47, 47, 105, 105, 71, + 79, 79, 16, 16, 18, 18, 7, 7, 98, 98, + 97, 97, 104, 104, 17, 17, 20, 20, 19, 19, + 92, 92, 112, 112, 22, 22, 22, 22, 22, 22, + 22, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 90, 90, 89, 89, 26, + 26, 103, 103, 27, 12, 1, 1, 2, 2, 13, + 13, 122, 122, 77, 77, 14, 15, 29, 29, 116, + 116, 117, 117, 80, 80, 80, 80, 125, 125, 126, + 126, 25, 25, 82, 82, 82, 82, 101, 101, 101, + 8, 8, 124, 124, 68, 68, 66, 66, 70, 70, + 67, 67, 113, 113, 114, 114, 30, 30, 31, 31, + 76, 76, 74, 74, 74, 75, 75, 84, 84, 110, + 110, 32, 32, 96, 96, 34, 100, 100, 35, 35, + 115, 115, 36, 36, 36, 36, 121, 121, 83, 83, + 83, 102, 102, 37, 37, 38, 39, 39, 39, 39, + 41, 41, 40, 81, 81, 119, 119, 118, 118, 120, + 120, 78, 78, 78, 78, 78, 78, 99, 99, 42, + 42, 91, 91, 69, 21, 93, 93, 43, 94, 94, + 95, 95, 45, 44, 44, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 123, 3, 3, 106, 106, 105, 105, 52, 52, + 53, 53, 53, 53, 46, 46, 47, 47, 50, 50, + 87, 87, 87, 85, 85, 57, 57, 57, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 58, 58, 58, 23, 23, 24, + 24, 56, 59, 59, 59, 60, 60, 60, 61, 61, + 61, 61, 61, 61, 28, 28, 28, 48, 48, 48, + 62, 62, 63, 63, 63, 63, 63, 63, 54, 54, + 54, 55, 55, 55, 109, 72, 72, 108, 108, 71, + 71, 71, 71, 71, 71, 86, 86, 86, 86, 64, + 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, + 49, 49, 49, 49, 49, 49, 49, 107, 107, 73, } var yyR2 = [...]int{ @@ -1517,50 +1564,50 @@ var yyR2 = [...]int{ } var yyChk = [...]int{ - -1000, -125, -109, -7, 2, -9, -10, -11, -12, -13, - 51, 79, 44, 38, 119, -64, -65, 21, 20, 23, - 30, 34, 35, 39, 46, 98, 19, 14, -21, 48, - 25, 27, 121, 40, 43, 36, 10, 37, -120, 52, - 53, 54, -66, -68, -26, -31, -75, 7, -59, -60, - -57, 59, 125, 92, 104, 105, 130, 129, 131, 132, - 123, -42, -47, 107, 108, 109, 110, 111, 112, 113, - 6, 133, -49, 118, 96, 97, 106, 99, 100, -46, - -56, -51, -44, -54, -55, 91, 49, 50, 4, 5, + -1000, -127, -111, -9, 2, -11, -12, -13, -14, -15, + 51, 79, 44, 38, 142, -66, -67, 21, 20, 23, + 30, 34, 35, 39, 46, 98, 19, 14, -23, 48, + 25, 27, 144, 40, 43, 36, 10, 37, -122, 52, + 53, 54, -68, -70, -28, -33, -77, 7, -61, -62, + -59, 59, 148, 92, 104, 105, 153, 152, 154, 155, + 146, -44, -49, 107, 108, 109, 110, 111, 112, 113, + 6, 156, -51, 141, 96, 97, 106, 99, 100, -48, + -58, -53, -46, -56, -57, 91, 49, 50, 4, 5, 84, 85, 86, 8, 9, 66, 67, 81, 63, 64, - 65, 80, 62, 74, 117, 12, 134, -8, -58, 60, - 18, -86, 82, 123, 82, -86, 119, 10, -16, -77, - -102, -86, 82, 37, 38, -17, -18, -90, -19, 10, - -110, 123, -9, 37, 79, 123, 123, -22, -21, 98, - -22, -22, -94, -32, -46, -98, 37, -33, 12, -91, - -41, -21, 121, 149, 150, 87, 89, 88, 151, 128, - 152, 163, 130, 129, 164, 167, 165, 166, 161, 162, - 155, 156, 153, 154, 157, 158, 159, 160, 115, 90, - 127, 114, 123, 123, 123, 119, -21, 10, 122, -3, - 128, 52, -75, 10, 10, 10, 93, 94, 93, 95, - 94, 136, 137, 138, 139, 148, 140, 141, 142, 143, - 144, 145, 146, 147, 104, 105, 123, 125, 119, 57, - 123, -107, -106, -70, -69, -21, 128, 59, -21, -26, - -56, 123, -55, 98, 125, -26, -21, -21, -21, -21, - -21, -21, -21, -21, -21, -21, -21, -21, -48, 123, - -21, -85, 17, -84, -62, 12, 76, 77, -21, -21, - -21, 125, 78, 78, -45, -43, -44, -61, 52, -8, - -46, 123, 123, -21, -21, 123, -21, -21, 17, 75, - -84, -84, 17, 119, -46, -82, 123, -82, 123, 82, - -86, 124, -86, 121, 119, -109, 121, -14, -102, -86, - 82, 121, 135, 82, 29, -86, -18, 121, 135, 136, - -20, 120, 2, -9, -10, -11, -12, -13, 51, -21, - 21, -3, -92, -93, -21, -21, 121, 121, 121, 121, - 135, 121, 135, -3, 136, 121, 135, -21, -21, -21, - -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, - -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, - -21, -21, -21, -45, -21, 122, -21, -101, -25, -26, - -21, -90, -110, 121, 121, 10, -121, 10, -27, 55, - -121, -114, 55, 123, -9, 123, 121, 122, -21, 128, - -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, - -21, -21, -21, -22, -21, -53, 10, 119, -46, -107, - 126, 135, 58, -26, 123, -21, -107, 124, -22, 118, - -62, -62, 17, 125, 57, -21, 11, -26, 58, -22, - -52, -6, -46, 119, 10, -5, -4, 98, 99, 100, + 65, 80, 62, 74, 140, 12, 157, -10, -60, 60, + 18, -88, 82, 146, 82, -88, 142, 10, -18, -79, + -104, -88, 82, 37, 38, -19, -20, -92, -21, 10, + -112, 146, -11, 37, 79, 146, 146, -24, -23, 98, + -24, -24, -96, -34, -48, -100, 37, -35, 12, -93, + -43, -23, 144, 129, 130, 87, 89, 88, 159, 151, + 161, 167, 153, 152, 162, 131, 163, 164, 132, 133, + 134, 135, 136, 137, 165, 138, 166, 139, 115, 90, + 150, 114, 146, 146, 146, 142, -23, 10, 145, -3, + 151, 52, -77, 10, 10, 10, 93, 94, 93, 95, + 94, 160, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 104, 105, 146, 148, 142, 57, + 146, -109, -108, -72, -71, -23, 151, 59, -23, -28, + -58, 146, -57, 98, 148, -28, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -50, 146, + -23, -87, 17, -86, -64, 12, 76, 77, -23, -23, + -23, 148, 78, 78, -47, -45, -46, -63, 52, -10, + -48, 146, 146, -23, -23, 146, -23, -23, 17, 75, + -86, -86, 17, 142, -48, -84, 146, -84, 146, 82, + -88, 147, -88, 144, 142, -111, 144, -16, -104, -88, + 82, 144, 158, 82, 29, -88, -20, 144, 158, 160, + -22, 143, 2, -11, -12, -13, -14, -15, 51, -23, + 21, -3, -94, -95, -23, -23, 144, 144, 144, 144, + 158, 144, 158, -3, 160, 144, 158, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -47, -23, 145, -23, -103, -27, -28, + -23, -92, -112, 144, 144, 10, -123, 10, -29, 55, + -123, -116, 55, 146, -11, 146, 144, 145, -23, 151, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -24, -23, -55, 10, 142, -48, -109, + 149, 158, 58, -28, 146, -23, -109, 147, -24, 141, + -64, -64, 17, 148, 57, -23, 11, -28, 58, -24, + -54, -6, -48, 142, 10, -5, -4, 98, 99, 100, 101, 102, 103, 4, 5, 84, 85, 86, 87, 88, 89, 90, 91, 92, 6, 7, 93, 94, 95, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, @@ -1568,49 +1615,49 @@ var yyChk = [...]int{ 50, 35, 36, 37, 38, 39, 96, 97, 59, 30, 31, 32, 33, 34, 60, 61, 55, 56, 79, 53, 54, 52, 62, 63, 65, 64, 66, 67, 81, 80, - -52, -6, -46, -83, -82, 78, 125, 119, 57, 78, - -83, -105, -71, -21, -21, -21, 75, 75, 117, -21, - 124, -108, -30, -21, 83, -107, 10, 121, -109, 120, - 121, 121, 82, -86, -17, 82, -86, 119, 10, 82, - -19, -21, 123, 124, 123, 121, 135, 124, -32, -33, - -121, -21, -41, 122, -21, -126, 135, 29, 124, 120, - -121, 123, -27, -115, 56, -8, 119, -121, -119, -8, - -21, -21, -110, -21, 124, 126, 120, -82, -21, 124, - 136, -70, -21, 128, 59, -107, 124, 126, 124, -63, - 10, 13, 129, 12, 10, 120, 120, 125, 120, -21, - 126, -82, -21, -82, -46, -22, -21, -53, -46, -27, - -126, 135, 124, 124, 120, -126, 135, -21, 124, 120, - 119, 82, -96, -15, -18, -77, 119, -121, 124, -122, - -9, 122, -21, -92, -21, -80, 119, 122, 123, -21, - 124, -25, -78, -26, 128, 59, 125, -23, -9, 122, - -88, 123, -111, -112, -28, -29, -74, -72, 127, 60, - 61, -8, -115, -121, -119, -113, 119, 135, 124, 124, - 95, -9, 122, 120, 136, -21, -26, 123, 124, 126, - 13, -21, 120, 126, 120, -115, 124, -71, 124, -30, - -95, -18, 119, -126, 135, -18, -96, 121, -110, 124, - 121, -99, 121, -99, 121, -111, 121, 124, 58, -26, - 123, -107, -110, -24, 41, 42, -111, 124, 135, -1, - 128, -72, -121, 119, 120, -34, -117, -116, 44, -118, - 47, -76, 103, 102, 101, 98, 99, 100, -113, -8, - -9, 122, 121, -110, -21, -107, 126, -121, -126, 135, - -95, 120, -15, -126, 22, 121, -92, 120, 32, 33, - -99, 31, -99, 124, -124, -9, 122, -78, -26, -107, - 126, 28, 123, 119, 124, -104, 44, -28, -2, 83, - 119, -113, -97, -40, 12, 38, 37, -119, -76, 120, - -110, 124, 120, 119, 120, -18, -126, 120, 121, 124, - -21, -127, 122, 121, 120, 121, 31, -104, -110, 124, - 124, 121, -87, -8, -110, -73, 122, -73, 123, 12, - -113, 120, 121, 135, -121, 136, -89, -67, -6, -3, - -81, 121, 119, -113, 120, -123, -9, 122, -127, -110, - 121, -73, 26, -124, 12, 151, 120, 119, -74, 119, - -103, -50, 12, 128, 136, 120, -40, -21, 121, 135, - 136, -6, 120, -100, -35, -36, -37, -38, -39, -8, - -6, 79, 10, 120, -110, -110, 119, 121, 124, -8, - -110, -110, 124, 135, 12, -21, -121, -67, -21, -121, - 120, -35, 121, 121, 45, 29, 78, 24, -110, 119, - 120, 120, -50, -121, 123, -119, 10, -4, -76, -6, - 121, 120, -110, -111, -6, 120, 124, -73, -79, 121, - 119, -110, 120, + -54, -6, -48, -85, -84, 78, 148, 142, 57, 78, + -85, -107, -73, -23, -23, -23, 75, 75, 140, -23, + 147, -110, -32, -23, 83, -109, 10, 144, -111, 143, + 144, 144, 82, -88, -19, 82, -88, 142, 10, 82, + -21, -23, 146, 147, 146, 144, 158, 147, -34, -35, + -123, -23, -43, 145, -23, -7, 158, 29, 147, 143, + -123, 146, -29, -117, 56, -10, 142, -123, -121, -10, + -23, -23, -112, -23, 147, 149, 143, -84, -23, 147, + 160, -72, -23, 151, 59, -109, 147, 149, 147, -65, + 10, 13, 152, 12, 10, 143, 143, 148, 143, -23, + 149, -84, -23, -84, -48, -24, -23, -55, -48, -29, + -7, 158, 147, 147, 143, -7, 158, -23, 147, 143, + 142, 82, -98, -17, -20, -79, 142, -123, 147, -124, + -11, 145, -23, -94, -23, -82, 142, 145, 146, -23, + 147, -27, -80, -28, 151, 59, 148, -25, -11, 145, + -90, 146, -113, -114, -30, -31, -76, -74, 150, 60, + 61, -10, -117, -123, -121, -115, 142, 158, 147, 147, + 95, -11, 145, 143, 160, -23, -28, 146, 147, 149, + 13, -23, 143, 149, 143, -117, 147, -73, 147, -32, + -97, -20, 142, -7, 158, -20, -98, 144, -112, 147, + 144, -101, 144, -101, 144, -113, 144, 147, 58, -28, + 146, -109, -112, -26, 41, 42, -113, 147, 158, -1, + 151, -74, -123, 142, 143, -36, -119, -118, 44, -120, + 47, -78, 103, 102, 101, 98, 99, 100, -115, -10, + -11, 145, 144, -112, -23, -109, 149, -123, -7, 158, + -97, 143, -17, -7, 22, 144, -94, 143, 32, 33, + -101, 31, -101, 147, -126, -11, 145, -80, -28, -109, + 149, 28, 146, 142, 147, -106, 44, -30, -2, 83, + 142, -115, -99, -42, 12, 38, 37, -121, -78, 143, + -112, 147, 143, 142, 143, -20, -7, 143, 144, 147, + -23, -8, 145, 144, 143, 144, 31, -106, -112, 147, + 147, 144, -89, -10, -112, -75, 145, -75, 146, 12, + -115, 143, 144, 158, -123, 160, -91, -69, -6, -3, + -83, 144, 142, -115, 143, -125, -11, 145, -8, -112, + 144, -75, 26, -126, 12, 159, 143, 142, -76, 142, + -105, -52, 12, 151, 160, 143, -42, -23, 144, 158, + 160, -6, 143, -102, -37, -38, -39, -40, -41, -10, + -6, 79, 10, 143, -112, -112, 142, 144, 147, -10, + -112, -112, 147, 158, 12, -23, -123, -69, -23, -123, + 143, -37, 144, 144, 45, 29, 78, 24, -112, 142, + 143, 143, -52, -123, 146, -121, 10, -4, -78, -6, + 144, 143, -112, -113, -6, 143, 147, -75, -81, 144, + 142, -112, 143, } var yyDef = [...]int{ @@ -1714,16 +1761,16 @@ var yyTok1 = [...]int{ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 131, 117, 3, 134, 166, 128, 3, - 123, 124, 164, 130, 135, 129, 163, 165, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 122, 121, - 157, 136, 159, 127, 133, 3, 3, 3, 3, 3, + 3, 3, 3, 154, 140, 3, 157, 164, 151, 3, + 146, 147, 162, 153, 158, 152, 167, 163, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 145, 144, + 165, 160, 166, 150, 156, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 125, 3, 126, 152, 3, 118, 3, 3, 3, + 3, 148, 3, 149, 161, 3, 141, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 119, 151, 120, 132, + 3, 3, 3, 142, 159, 143, 155, } var yyTok2 = [...]int{ @@ -1738,9 +1785,9 @@ var yyTok2 = [...]int{ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 153, - 154, 155, 156, 158, 160, 161, 162, 167, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, } var yyTok3 = [...]int{ 0, @@ -2085,470 +2132,472 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:257 + //line php7/php7.y:291 { yylex.(*Parser).rootNode = stmt.NewStmtList(yyDollar[1].list) + + // save position yylex.(*Parser).positions.AddPosition(yylex.(*Parser).rootNode, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) } case 2: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:264 + //line php7/php7.y:300 { yyVAL.token = yyDollar[1].token } case 3: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:264 + //line php7/php7.y:300 { yyVAL.token = yyDollar[1].token } case 4: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:264 + //line php7/php7.y:300 { yyVAL.token = yyDollar[1].token } case 5: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:264 + //line php7/php7.y:300 { yyVAL.token = yyDollar[1].token } case 6: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:264 + //line php7/php7.y:300 { yyVAL.token = yyDollar[1].token } case 7: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:264 + //line php7/php7.y:300 { yyVAL.token = yyDollar[1].token } case 8: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:264 + //line php7/php7.y:300 { yyVAL.token = yyDollar[1].token } case 9: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:264 + //line php7/php7.y:300 { yyVAL.token = yyDollar[1].token } case 10: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:265 + //line php7/php7.y:301 { yyVAL.token = yyDollar[1].token } case 11: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:265 + //line php7/php7.y:301 { yyVAL.token = yyDollar[1].token } case 12: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:265 + //line php7/php7.y:301 { yyVAL.token = yyDollar[1].token } case 13: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:265 + //line php7/php7.y:301 { yyVAL.token = yyDollar[1].token } case 14: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:265 + //line php7/php7.y:301 { yyVAL.token = yyDollar[1].token } case 15: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:265 + //line php7/php7.y:301 { yyVAL.token = yyDollar[1].token } case 16: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:265 + //line php7/php7.y:301 { yyVAL.token = yyDollar[1].token } case 17: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:265 + //line php7/php7.y:301 { yyVAL.token = yyDollar[1].token } case 18: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:265 + //line php7/php7.y:301 { yyVAL.token = yyDollar[1].token } case 19: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:265 + //line php7/php7.y:301 { yyVAL.token = yyDollar[1].token } case 20: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:265 + //line php7/php7.y:301 { yyVAL.token = yyDollar[1].token } case 21: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:265 + //line php7/php7.y:301 { yyVAL.token = yyDollar[1].token } case 22: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:266 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 23: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:266 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 24: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:266 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 25: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:266 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 26: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:266 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 27: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:266 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 28: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:266 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 29: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:266 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 30: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:266 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 31: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:266 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 32: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:267 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 33: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:267 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 34: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:267 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 35: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:267 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 36: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:267 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 37: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:267 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 38: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:267 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 39: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:267 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 40: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:267 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 41: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:267 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 42: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:268 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 43: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:268 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 44: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:268 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 45: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:268 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 46: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:268 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 47: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:268 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 48: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:268 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 49: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:268 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 50: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:268 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 51: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:268 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 52: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:268 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 53: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:269 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 54: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:269 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 55: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:269 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 56: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:269 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 57: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:269 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 58: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:269 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 59: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:269 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 60: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:269 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 61: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:270 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 62: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:270 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 63: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:270 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 64: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:270 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:270 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 66: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:270 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 67: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:270 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 68: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:270 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 69: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:274 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 70: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:275 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:275 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 72: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:275 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 73: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:275 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 74: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:275 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 75: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:275 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 76: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:279 + //line php7/php7.y:317 { yyVAL.token = yyDollar[1].token } case 77: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:280 + //line php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 78: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:285 + //line php7/php7.y:324 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2556,327 +2605,465 @@ yydefault: } case 79: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:290 + //line php7/php7.y:330 { yyVAL.list = []node.Node{} } case 80: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:295 + //line php7/php7.y:335 { namePart := name.NewNamePart(yyDollar[1].token.Value) - yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.list = []node.Node{namePart} + + // save position + yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(namePart, yyDollar[1].token.Comments()) } case 81: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:346 { namePart := name.NewNamePart(yyDollar[3].token.Value) - yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yyVAL.list = append(yyDollar[1].list, namePart) + + // save position + yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) yylex.(*Parser).comments.AddComments(namePart, yyDollar[3].token.Comments()) } case 82: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:312 + //line php7/php7.y:361 { yyVAL.node = name.NewName(yyDollar[1].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) } case 83: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:318 + //line php7/php7.y:368 { yyVAL.node = name.NewRelative(yyDollar[3].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 84: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:324 + //line php7/php7.y:379 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 85: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:333 + //line php7/php7.y:392 { // error yyVAL.node = nil } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:337 + //line php7/php7.y:397 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:338 + //line php7/php7.y:399 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:339 + //line php7/php7.y:401 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:340 + //line php7/php7.y:403 { yyVAL.node = yyDollar[1].node } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:341 + //line php7/php7.y:405 { yyVAL.node = yyDollar[1].node } case 91: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:342 + //line php7/php7.y:407 { yyVAL.node = stmt.NewHaltCompiler() + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 92: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:344 + //line php7/php7.y:420 { name := name.NewName(yyDollar[2].list) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) yyVAL.node = stmt.NewNamespace(name, nil) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments(yyDollar[2].list)) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 93: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:354 + //line php7/php7.y:433 { name := name.NewName(yyDollar[2].list) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments(yyDollar[2].list)) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[5].token.Comments()) } case 94: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:364 + //line php7/php7.y:447 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 95: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:369 + //line php7/php7.y:459 { yyVAL.node = yyDollar[2].node + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 96: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:370 + //line php7/php7.y:470 { yyVAL.node = yyDollar[3].node.(*stmt.GroupUse).SetUseType(yyDollar[2].node) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 97: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:372 + //line php7/php7.y:481 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 98: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:377 + //line php7/php7.y:492 { yyVAL.node = stmt.NewUseList(yyDollar[2].node, yyDollar[3].list) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 99: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:379 + //line php7/php7.y:503 { yyVAL.node = stmt.NewConstList(yyDollar[2].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 100: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:388 + //line php7/php7.y:517 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 101: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:394 + //line php7/php7.y:527 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 102: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:403 + //line php7/php7.y:540 { name := name.NewName(yyDollar[1].list) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[6].token)) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) + if yyDollar[5].token != nil { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[5].token.Comments()) + } + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) } case 103: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:413 + //line php7/php7.y:557 { name := name.NewName(yyDollar[2].list) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments(yyDollar[2].list)) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) + if yyDollar[6].token != nil { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) + } + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[7].token.Comments()) } case 104: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:426 + //line php7/php7.y:578 { name := name.NewName(yyDollar[1].list) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[6].token)) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) + if yyDollar[5].token != nil { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[5].token.Comments()) + } + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) } case 105: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:436 + //line php7/php7.y:595 { name := name.NewName(yyDollar[2].list) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments(yyDollar[2].list)) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) + if yyDollar[6].token != nil { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) + } + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[7].token.Comments()) + } + case 106: + yyDollar = yyS[yypt-0 : yypt+1] + //line php7/php7.y:616 + { + yyVAL.token = nil + } + case 107: + yyDollar = yyS[yypt-1 : yypt+1] + //line php7/php7.y:618 + { + yyVAL.token = yyDollar[1].token } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:454 + //line php7/php7.y:623 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 109: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:455 + //line php7/php7.y:630 { yyVAL.list = []node.Node{yyDollar[1].node} } case 110: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:460 + //line php7/php7.y:635 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:461 + //line php7/php7.y:642 { yyVAL.list = []node.Node{yyDollar[1].node} } case 112: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:465 + //line php7/php7.y:647 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 113: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:466 + //line php7/php7.y:654 { yyVAL.list = []node.Node{yyDollar[1].node} } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:470 + //line php7/php7.y:659 { yyVAL.node = yyDollar[1].node } case 115: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:471 + //line php7/php7.y:661 { yyVAL.node = yyDollar[2].node.(*stmt.Use).SetUseType(yyDollar[1].node) } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:476 + //line php7/php7.y:666 { name := name.NewName(yyDollar[1].list) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yyVAL.node = stmt.NewUse(nil, name, nil) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) } case 117: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:486 + //line php7/php7.y:675 { name := name.NewName(yyDollar[1].list) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) alias := node.NewIdentifier(yyDollar[3].token.Value) - yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yyVAL.node = stmt.NewUse(nil, name, alias) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) yylex.(*Parser).comments.AddComments(alias, yyDollar[3].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:501 + //line php7/php7.y:693 { yyVAL.node = yyDollar[1].node } case 119: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:502 + //line php7/php7.y:695 { yyVAL.node = yyDollar[2].node + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:506 + //line php7/php7.y:705 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 121: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:507 + //line php7/php7.y:712 { yyVAL.list = []node.Node{yyDollar[1].node} } case 122: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:512 + //line php7/php7.y:717 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2884,234 +3071,347 @@ yydefault: } case 123: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:517 + //line php7/php7.y:723 { yyVAL.list = []node.Node{} } case 124: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:522 + //line php7/php7.y:728 { // error yyVAL.node = nil } case 125: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:526 + //line php7/php7.y:733 { yyVAL.node = yyDollar[1].node } case 126: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:527 + //line php7/php7.y:735 { yyVAL.node = yyDollar[1].node } case 127: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:528 + //line php7/php7.y:737 { yyVAL.node = yyDollar[1].node } case 128: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:529 + //line php7/php7.y:739 { yyVAL.node = yyDollar[1].node } case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:530 + //line php7/php7.y:741 { yyVAL.node = yyDollar[1].node } case 130: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:532 + //line php7/php7.y:743 { yyVAL.node = stmt.NewHaltCompiler() + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 131: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:540 + //line php7/php7.y:758 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 132: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:545 + //line php7/php7.y:769 { yyVAL.node = yyDollar[1].node } case 133: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:546 + //line php7/php7.y:771 { yyVAL.node = yyDollar[1].node } case 134: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:548 + //line php7/php7.y:773 { if yyDollar[5].altSyntaxNode.isAlt { yyVAL.node = stmt.NewAltWhile(yyDollar[3].node, yyDollar[5].altSyntaxNode.node) } else { yyVAL.node = stmt.NewWhile(yyDollar[3].node, yyDollar[5].altSyntaxNode.node) } + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].altSyntaxNode.node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 135: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:558 + //line php7/php7.y:789 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[5].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[7].token.Comments()) } case 136: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:564 + //line php7/php7.y:803 { if yyDollar[9].altSyntaxNode.isAlt { yyVAL.node = stmt.NewAltFor(yyDollar[3].list, yyDollar[5].list, yyDollar[7].list, yyDollar[9].altSyntaxNode.node) } else { yyVAL.node = stmt.NewFor(yyDollar[3].list, yyDollar[5].list, yyDollar[7].list, yyDollar[9].altSyntaxNode.node) } + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].altSyntaxNode.node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[8].token.Comments()) } case 137: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:574 + //line php7/php7.y:821 { if yyDollar[5].nodesWithEndToken.endToken.Value == ";" { yyVAL.node = stmt.NewAltSwitch(yyDollar[3].node, yyDollar[5].nodesWithEndToken.nodes) } else { yyVAL.node = stmt.NewSwitch(yyDollar[3].node, yyDollar[5].nodesWithEndToken.nodes) } + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].nodesWithEndToken.endToken)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 138: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:584 + //line php7/php7.y:837 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 139: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:590 + //line php7/php7.y:848 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:596 + //line php7/php7.y:859 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 141: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:602 + //line php7/php7.y:870 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 142: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:608 + //line php7/php7.y:881 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 143: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:614 + //line php7/php7.y:892 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 144: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:620 + //line php7/php7.y:903 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 145: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:626 + //line php7/php7.y:913 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:632 + //line php7/php7.y:923 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + if yyDollar[4].token != nil { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) + } + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[5].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) } case 147: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:638 + //line php7/php7.y:939 { if yyDollar[7].altSyntaxNode.isAlt { yyVAL.node = stmt.NewAltForeach(yyDollar[3].node, nil, yyDollar[5].foreachVariable.node, yyDollar[7].altSyntaxNode.node, yyDollar[5].foreachVariable.byRef) } else { yyVAL.node = stmt.NewForeach(yyDollar[3].node, nil, yyDollar[5].foreachVariable.node, yyDollar[7].altSyntaxNode.node, yyDollar[5].foreachVariable.byRef) } + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[7].altSyntaxNode.node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) } case 148: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:648 + //line php7/php7.y:956 { if yyDollar[9].altSyntaxNode.isAlt { yyVAL.node = stmt.NewAltForeach(yyDollar[3].node, yyDollar[5].node, yyDollar[7].foreachVariable.node, yyDollar[9].altSyntaxNode.node, yyDollar[7].foreachVariable.byRef) } else { yyVAL.node = stmt.NewForeach(yyDollar[3].node, yyDollar[5].node, yyDollar[7].foreachVariable.node, yyDollar[9].altSyntaxNode.node, yyDollar[7].foreachVariable.byRef) } + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].altSyntaxNode.node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[8].token.Comments()) } case 149: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:658 + //line php7/php7.y:974 { yyVAL.node = stmt.NewDeclare(yyDollar[3].list, yyDollar[5].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:664 + //line php7/php7.y:986 { yyVAL.node = stmt.NewNop() + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 151: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:670 + //line php7/php7.y:996 { if yyDollar[6].node == nil { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3121,1131 +3421,1491 @@ yydefault: yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node)) } + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:682 + //line php7/php7.y:1011 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:688 + //line php7/php7.y:1022 { label := node.NewIdentifier(yyDollar[2].token.Value) - yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yyVAL.node = stmt.NewGoto(label) + + // save position + yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) - yylex.(*Parser).comments.AddComments(label, yyDollar[2].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(label, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 154: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:698 + //line php7/php7.y:1036 { label := node.NewIdentifier(yyDollar[1].token.Value) - yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.node = stmt.NewLabel(label) + + // save position + yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + // save comments yylex.(*Parser).comments.AddComments(label, yyDollar[1].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 155: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:709 + //line php7/php7.y:1051 { yyVAL.list = []node.Node{} } case 156: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:711 + //line php7/php7.y:1053 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[5].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[5].token)) variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[5].token)) catch := stmt.NewCatch(yyDollar[4].list, variable, yyDollar[8].list) - yylex.(*Parser).positions.AddPosition(catch, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[2].token, yyDollar[9].token)) yyVAL.list = append(yyDollar[1].list, catch) - yylex.(*Parser).comments.AddComments(identifier, yyDollar[5].token.Comments()) - yylex.(*Parser).comments.AddComments(variable, yyDollar[5].token.Comments()) + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[5].token)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[5].token)) + yylex.(*Parser).positions.AddPosition(catch, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[2].token, yyDollar[9].token)) + + // save comments yylex.(*Parser).comments.AddComments(catch, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(catch, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(variable, yyDollar[5].token.Comments()) + yylex.(*Parser).comments.AddComments(catch, yyDollar[6].token.Comments()) + yylex.(*Parser).comments.AddComments(catch, yyDollar[7].token.Comments()) + yylex.(*Parser).comments.AddComments(catch, yyDollar[9].token.Comments()) } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:726 + //line php7/php7.y:1075 { yyVAL.list = []node.Node{yyDollar[1].node} } case 158: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:727 + //line php7/php7.y:1077 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 159: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:731 + //line php7/php7.y:1087 { yyVAL.node = nil } case 160: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:733 + //line php7/php7.y:1089 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:741 + //line php7/php7.y:1104 { yyVAL.list = []node.Node{yyDollar[1].node} } case 162: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:742 + //line php7/php7.y:1106 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 163: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:746 + //line php7/php7.y:1116 { yyVAL.node = yyDollar[1].node } case 164: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:751 + //line php7/php7.y:1121 { name := node.NewIdentifier(yyDollar[3].token.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yyVAL.node = stmt.NewFunction(name, yyDollar[2].boolWithToken.value, yyDollar[6].list, yyDollar[8].node, yyDollar[10].list, yyDollar[4].str) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[11].token)) - yylex.(*Parser).comments.AddComments(name, yyDollar[3].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + if yyDollar[2].boolWithToken.token != nil { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].boolWithToken.token.Comments()) + } + yylex.(*Parser).comments.AddComments(name, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(name, yyDollar[5].token.Comments()) + yylex.(*Parser).comments.AddComments(name, yyDollar[7].token.Comments()) + yylex.(*Parser).comments.AddComments(name, yyDollar[9].token.Comments()) + yylex.(*Parser).comments.AddComments(name, yyDollar[11].token.Comments()) } case 165: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:763 + //line php7/php7.y:1144 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 166: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:764 + //line php7/php7.y:1146 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 167: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:768 + //line php7/php7.y:1151 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 168: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:769 + //line php7/php7.y:1153 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 169: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:774 + //line php7/php7.y:1158 { name := node.NewIdentifier(yyDollar[3].token.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yyVAL.node = stmt.NewClass(name, yyDollar[1].list, nil, yyDollar[4].node, yyDollar[5].list, yyDollar[8].list, yyDollar[6].str) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[9].token)) + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) yylex.(*Parser).comments.AddComments(name, yyDollar[3].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) + if yyDollar[4].node != nil { + yylex.(*Parser).setCommentsFromChildNode(yyVAL.node, yyDollar[4].node) + } + if yyDollar[5].list != nil { + yylex.(*Parser).setCommentsFromChildNode(yyVAL.node, firstNode(yyDollar[5].list)) + } + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[7].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[9].token.Comments()) } case 170: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:784 + //line php7/php7.y:1179 { name := node.NewIdentifier(yyDollar[2].token.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yyVAL.node = stmt.NewClass(name, nil, nil, yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) - yylex.(*Parser).comments.AddComments(name, yyDollar[2].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(name, yyDollar[2].token.Comments()) + if yyDollar[3].node != nil { + yylex.(*Parser).setCommentsFromChildNode(yyVAL.node, yyDollar[3].node) + } + if yyDollar[4].list != nil { + yylex.(*Parser).setCommentsFromChildNode(yyVAL.node, firstNode(yyDollar[4].list)) + } + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[8].token.Comments()) } case 171: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:796 + //line php7/php7.y:1203 { yyVAL.list = []node.Node{yyDollar[1].node} } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:797 + //line php7/php7.y:1205 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:802 + //line php7/php7.y:1210 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 174: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:808 + //line php7/php7.y:1220 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 175: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:817 + //line php7/php7.y:1233 { name := node.NewIdentifier(yyDollar[2].token.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yyVAL.node = stmt.NewTrait(name, yyDollar[5].list, yyDollar[3].str) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) - yylex.(*Parser).comments.AddComments(name, yyDollar[2].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(name, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) } case 176: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:830 + //line php7/php7.y:1251 { name := node.NewIdentifier(yyDollar[2].token.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yyVAL.node = stmt.NewInterface(name, yyDollar[3].list, yyDollar[6].list, yyDollar[4].str) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) - yylex.(*Parser).comments.AddComments(name, yyDollar[2].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(name, yyDollar[2].token.Comments()) + if yyDollar[3].list != nil { + yylex.(*Parser).setCommentsFromChildNode(yyVAL.node, firstNode(yyDollar[3].list)) + } + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[5].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[7].token.Comments()) } case 177: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:842 + //line php7/php7.y:1272 { yyVAL.node = nil } case 178: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:843 + //line php7/php7.y:1274 { yyVAL.node = yyDollar[2].node + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 179: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:847 + //line php7/php7.y:1284 { yyVAL.list = nil } case 180: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:848 + //line php7/php7.y:1286 { yyVAL.list = yyDollar[2].list + + // save comments + yylex.(*Parser).comments.AddComments(firstNode(yyVAL.list), yyDollar[1].token.Comments()) } case 181: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:852 + //line php7/php7.y:1296 { yyVAL.list = nil } case 182: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:853 + //line php7/php7.y:1298 { yyVAL.list = yyDollar[2].list + + // save comments + yylex.(*Parser).comments.AddComments(firstNode(yyVAL.list), yyDollar[1].token.Comments()) } case 183: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:857 + //line php7/php7.y:1308 { yyVAL.foreachVariable = foreachVariable{yyDollar[1].node, false} } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:858 + //line php7/php7.y:1310 { yyVAL.foreachVariable = foreachVariable{yyDollar[2].node, true} + + // save position + yylex.(*Parser).positions.AddPosition(yyDollar[2].node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).comments.AddComments(yyDollar[2].node, yyDollar[1].token.Comments()) } case 185: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:860 + //line php7/php7.y:1320 { list := expr.NewList(yyDollar[3].list) - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) yyVAL.foreachVariable = foreachVariable{list, false} + + // save position + yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments yylex.(*Parser).comments.AddComments(list, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(list, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(list, yyDollar[4].token.Comments()) } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:867 + //line php7/php7.y:1333 { list := expr.NewShortList(yyDollar[2].list) - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) yyVAL.foreachVariable = foreachVariable{list, false} + + // save position + yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(list, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(list, yyDollar[3].token.Comments()) } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:877 + //line php7/php7.y:1348 { yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} } case 188: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:879 + //line php7/php7.y:1350 { yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.altSyntaxNode.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.altSyntaxNode.node, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.altSyntaxNode.node, yyDollar[4].token.Comments()) } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:887 + //line php7/php7.y:1365 { yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} } case 190: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:889 + //line php7/php7.y:1367 { yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.altSyntaxNode.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.altSyntaxNode.node, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.altSyntaxNode.node, yyDollar[4].token.Comments()) } case 191: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:896 + //line php7/php7.y:1382 { yyVAL.node = yyDollar[1].node } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:898 + //line php7/php7.y:1384 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:906 + //line php7/php7.y:1398 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 194: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:907 + //line php7/php7.y:1399 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[3].list, yyDollar[4].token} } case 195: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:908 + //line php7/php7.y:1400 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[4].token} } case 196: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:909 + //line php7/php7.y:1401 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[3].list, yyDollar[5].token} } case 197: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:913 + //line php7/php7.y:1406 { yyVAL.list = []node.Node{} } case 198: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:915 + //line php7/php7.y:1408 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) - yylex.(*Parser).positions.AddPosition(_case, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) yyVAL.list = append(yyDollar[1].list, _case) + + // save position + yylex.(*Parser).positions.AddPosition(_case, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) + + // save comments yylex.(*Parser).comments.AddComments(_case, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(_case, yyDollar[4].token.Comments()) } case 199: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:922 + //line php7/php7.y:1420 { _default := stmt.NewDefault(yyDollar[4].list) - yylex.(*Parser).positions.AddPosition(_default, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) yyVAL.list = append(yyDollar[1].list, _default) + + // save position + yylex.(*Parser).positions.AddPosition(_default, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) + + // save comments yylex.(*Parser).comments.AddComments(_default, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(_default, yyDollar[3].token.Comments()) + } + case 200: + yyDollar = yyS[yypt-1 : yypt+1] + //line php7/php7.y:1435 + { + yyVAL.token = yyDollar[1].token + } + case 201: + yyDollar = yyS[yypt-1 : yypt+1] + //line php7/php7.y:1437 + { + yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:937 + //line php7/php7.y:1442 { yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} } case 203: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:939 + //line php7/php7.y:1444 { yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.altSyntaxNode.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.altSyntaxNode.node, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.altSyntaxNode.node, yyDollar[4].token.Comments()) } case 204: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:947 + //line php7/php7.y:1459 { yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node, nil, nil) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 205: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:953 + //line php7/php7.y:1471 { _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node) - yylex.(*Parser).positions.AddPosition(_elseIf, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[6].node)) yyVAL.node = yyDollar[1].node.(*stmt.If).AddElseIf(_elseIf) + + // save position + yylex.(*Parser).positions.AddPosition(_elseIf, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[6].node)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[6].node)) + // save comments yylex.(*Parser).comments.AddComments(_elseIf, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(_elseIf, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(_elseIf, yyDollar[5].token.Comments()) } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:964 + //line php7/php7.y:1488 { yyVAL.node = yyDollar[1].node } case 207: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:966 + //line php7/php7.y:1490 { _else := stmt.NewElse(yyDollar[3].node) - yylex.(*Parser).positions.AddPosition(_else, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[3].node)) yyVAL.node = yyDollar[1].node.(*stmt.If).SetElse(_else) + + // save position + yylex.(*Parser).positions.AddPosition(_else, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[3].node)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 208: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:978 + //line php7/php7.y:1505 { stmts := stmt.NewStmtList(yyDollar[6].list) - yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[6].list)) yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmts, nil, nil) + + // save position + yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[6].list)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[6].list)) - yylex.(*Parser).comments.AddComments(stmts, yyDollar[5].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[5].token.Comments()) } case 209: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:988 + //line php7/php7.y:1520 { stmts := stmt.NewStmtList(yyDollar[7].list) - yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[7].list)) _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmts) - yylex.(*Parser).positions.AddPosition(_elseIf, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[7].list)) yyVAL.node = yyDollar[1].node.(*stmt.AltIf).AddElseIf(_elseIf) - yylex.(*Parser).comments.AddComments(stmts, yyDollar[6].token.Comments()) + // save position + yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[7].list)) + yylex.(*Parser).positions.AddPosition(_elseIf, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[7].list)) + + // save comments yylex.(*Parser).comments.AddComments(_elseIf, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(_elseIf, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(_elseIf, yyDollar[5].token.Comments()) + yylex.(*Parser).comments.AddComments(_elseIf, yyDollar[6].token.Comments()) } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1002 + //line php7/php7.y:1539 { yyVAL.node = yyDollar[1].node + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 211: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1007 + //line php7/php7.y:1550 { stmts := stmt.NewStmtList(yyDollar[4].list) - yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[4].list)) _else := stmt.NewAltElse(stmts) - yylex.(*Parser).positions.AddPosition(_else, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) yyVAL.node = yyDollar[1].node.(*stmt.AltIf).SetElse(_else) + + // save position + yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[4].list)) + yylex.(*Parser).positions.AddPosition(_else, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token)) - yylex.(*Parser).comments.AddComments(stmts, yyDollar[3].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(_else, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(_else, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[5].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1021 + //line php7/php7.y:1570 { yyVAL.list = yyDollar[1].list } case 213: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1022 + //line php7/php7.y:1572 { yyVAL.list = nil } case 214: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1026 + //line php7/php7.y:1577 { yyVAL.list = []node.Node{yyDollar[1].node} } case 215: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1027 + //line php7/php7.y:1579 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 216: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1032 + //line php7/php7.y:1589 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) - - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) if yyDollar[1].node != nil { yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) - } else if yyDollar[2].boolWithToken.value == true { + } else if yyDollar[2].boolWithToken.value { yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[2].boolWithToken.token, yyDollar[4].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].boolWithToken.token.Comments()) - } else if yyDollar[3].boolWithToken.value == true { + } else if yyDollar[3].boolWithToken.value { yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[3].boolWithToken.token, yyDollar[4].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].boolWithToken.token.Comments()) } else { yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + if yyDollar[1].node != nil { + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + } else if yyDollar[2].boolWithToken.value { + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[2].boolWithToken.token, yyDollar[4].token)) + } else if yyDollar[3].boolWithToken.value { + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[3].boolWithToken.token, yyDollar[4].token)) + } else { + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + } + + // save comments + if yyDollar[2].boolWithToken.value { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].boolWithToken.token.Comments()) + } + if yyDollar[3].boolWithToken.value { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].boolWithToken.token.Comments()) + } + yylex.(*Parser).comments.AddComments(variable, yyDollar[4].token.Comments()) } case 217: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1060 + //line php7/php7.y:1626 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) - - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) - if yyDollar[1].node != nil { yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[6].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } else if yyDollar[2].boolWithToken.value == true { yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].boolWithToken.token, yyDollar[6].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].boolWithToken.token.Comments()) } else if yyDollar[3].boolWithToken.value == true { yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].boolWithToken.token, yyDollar[6].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].boolWithToken.token.Comments()) } else { yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[4].token, yyDollar[6].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + if yyDollar[1].node != nil { + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[6].node)) + } else if yyDollar[2].boolWithToken.value == true { + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].boolWithToken.token, yyDollar[6].node)) + } else if yyDollar[3].boolWithToken.value == true { + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].boolWithToken.token, yyDollar[6].node)) + } else { + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[4].token, yyDollar[6].node)) + } + + // save comments + if yyDollar[2].boolWithToken.value { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].boolWithToken.token.Comments()) + } + if yyDollar[3].boolWithToken.value { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].boolWithToken.token.Comments()) + } + yylex.(*Parser).comments.AddComments(variable, yyDollar[4].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[5].token.Comments()) } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1090 + //line php7/php7.y:1666 { yyVAL.node = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1091 + //line php7/php7.y:1668 { yyVAL.node = yyDollar[1].node } case 220: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1095 + //line php7/php7.y:1673 { yyVAL.node = yyDollar[1].node } case 221: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1097 + //line php7/php7.y:1675 { yyVAL.node = node.NewNullable(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 222: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1106 + //line php7/php7.y:1688 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1112 + //line php7/php7.y:1698 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 224: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1117 + //line php7/php7.y:1708 { yyVAL.node = yyDollar[1].node } case 225: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1121 + //line php7/php7.y:1713 { yyVAL.node = nil } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1122 + //line php7/php7.y:1715 { yyVAL.node = yyDollar[2].node + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 227: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1126 + //line php7/php7.y:1725 { yyVAL.nodesWithEndToken = &nodesWithEndToken{[]node.Node{}, yyDollar[2].token} } case 228: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1127 + //line php7/php7.y:1727 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[4].token} } case 229: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1131 + //line php7/php7.y:1732 { yyVAL.list = []node.Node{yyDollar[1].node} } case 230: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1132 + //line php7/php7.y:1734 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 231: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1137 + //line php7/php7.y:1744 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 232: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1143 + //line php7/php7.y:1751 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1151 + //line php7/php7.y:1764 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 234: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1152 + //line php7/php7.y:1771 { yyVAL.list = []node.Node{yyDollar[1].node} } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1156 + //line php7/php7.y:1776 { yyVAL.node = yyDollar[1].node } case 236: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1160 + //line php7/php7.y:1781 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 237: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1161 + //line php7/php7.y:1788 { yyVAL.list = []node.Node{yyDollar[1].node} } case 238: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1166 + //line php7/php7.y:1793 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.node = stmt.NewStaticVar(variable, nil) + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) - yylex.(*Parser).comments.AddComments(identifier, yyDollar[1].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(variable, yyDollar[1].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1179 + //line php7/php7.y:1807 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.node = stmt.NewStaticVar(variable, yyDollar[3].node) + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(identifier, yyDollar[1].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(variable, yyDollar[1].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 240: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1194 + //line php7/php7.y:1825 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 241: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1195 + //line php7/php7.y:1827 { yyVAL.list = []node.Node{} } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1200 + //line php7/php7.y:1832 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 243: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1206 + //line php7/php7.y:1842 { yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[4].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1212 + //line php7/php7.y:1853 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].nodesWithEndToken.nodes) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].nodesWithEndToken.endToken)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 245: yyDollar = yyS[yypt-10 : yypt+1] - //line php7/php7.y:1218 + //line php7/php7.y:1863 { name := node.NewIdentifier(yyDollar[4].token.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) yyVAL.node = stmt.NewClassMethod(name, yyDollar[1].list, yyDollar[3].boolWithToken.value, yyDollar[7].list, yyDollar[9].node, yyDollar[10].nodesWithEndToken.nodes, yyDollar[5].str) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[10].nodesWithEndToken.endToken)) + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + if yyDollar[3].boolWithToken.value { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].boolWithToken.token.Comments()) + } yylex.(*Parser).comments.AddComments(name, yyDollar[4].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[8].token.Comments()) } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1230 + //line php7/php7.y:1884 { yyVAL.list = []node.Node{yyDollar[1].node} } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1231 + //line php7/php7.y:1886 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 248: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1235 + //line php7/php7.y:1896 { yyVAL.nodesWithEndToken = &nodesWithEndToken{nil, yyDollar[1].token} } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1236 + //line php7/php7.y:1898 { yyVAL.nodesWithEndToken = &nodesWithEndToken{nil, yyDollar[2].token} } case 250: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1237 + //line php7/php7.y:1900 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 251: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1241 + //line php7/php7.y:1905 { yyVAL.list = []node.Node{yyDollar[1].node} } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1242 + //line php7/php7.y:1907 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 253: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1246 + //line php7/php7.y:1912 { yyVAL.node = yyDollar[1].node + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 254: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1247 + //line php7/php7.y:1919 { yyVAL.node = yyDollar[1].node + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1252 + //line php7/php7.y:1929 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeNodeListPosition(yyDollar[1].node, yyDollar[3].list)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1261 + //line php7/php7.y:1942 { alias := node.NewIdentifier(yyDollar[3].token.Value) - yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) + + // save position + yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) yylex.(*Parser).comments.AddComments(alias, yyDollar[3].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1271 + //line php7/php7.y:1955 { alias := node.NewIdentifier(yyDollar[3].token.Value) - yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) + + // save position + yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) yylex.(*Parser).comments.AddComments(alias, yyDollar[3].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 258: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1281 + //line php7/php7.y:1968 { alias := node.NewIdentifier(yyDollar[4].token.Value) - yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) + + // save position + yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) yylex.(*Parser).comments.AddComments(alias, yyDollar[4].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1291 + //line php7/php7.y:1981 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 260: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1300 + //line php7/php7.y:1994 { name := node.NewIdentifier(yyDollar[1].token.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.node = stmt.NewTraitMethodRef(nil, name) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + // save comments yylex.(*Parser).comments.AddComments(name, yyDollar[1].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1309 + //line php7/php7.y:2006 { yyVAL.node = yyDollar[1].node } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1314 + //line php7/php7.y:2011 { target := node.NewIdentifier(yyDollar[3].token.Value) - yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) + + // save position + yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) yylex.(*Parser).comments.AddComments(target, yyDollar[3].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1326 + //line php7/php7.y:2026 { yyVAL.nodesWithEndToken = &nodesWithEndToken{nil, yyDollar[1].token} } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1327 + //line php7/php7.y:2027 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 265: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1331 + //line php7/php7.y:2032 { yyVAL.list = yyDollar[1].list } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1333 + //line php7/php7.y:2034 { modifier := node.NewIdentifier(yyDollar[1].token.Value) - yylex.(*Parser).positions.AddPosition(modifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.list = []node.Node{modifier} + + // save position + yylex.(*Parser).positions.AddPosition(modifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(modifier, yyDollar[1].token.Comments()) } case 267: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1342 + //line php7/php7.y:2048 { yyVAL.list = nil } case 268: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1343 + //line php7/php7.y:2050 { yyVAL.list = yyDollar[1].list } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1347 + //line php7/php7.y:2055 { yyVAL.list = []node.Node{yyDollar[1].node} } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1348 + //line php7/php7.y:2057 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1353 + //line php7/php7.y:2062 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1359 + //line php7/php7.y:2072 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1365 + //line php7/php7.y:2082 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1371 + //line php7/php7.y:2092 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 275: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1377 + //line php7/php7.y:2102 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1383 + //line php7/php7.y:2112 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1391 + //line php7/php7.y:2125 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 278: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1392 + //line php7/php7.y:2132 { yyVAL.list = []node.Node{yyDollar[1].node} } case 279: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1397 + //line php7/php7.y:2137 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.node = stmt.NewProperty(variable, nil, yyDollar[2].str) + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) - yylex.(*Parser).comments.AddComments(identifier, yyDollar[1].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(variable, yyDollar[1].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 280: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1410 + //line php7/php7.y:2151 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.node = stmt.NewProperty(variable, yyDollar[3].node, yyDollar[4].str) + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(identifier, yyDollar[1].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(variable, yyDollar[1].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1425 + //line php7/php7.y:2169 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 282: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1426 + //line php7/php7.y:2176 { yyVAL.list = []node.Node{yyDollar[1].node} } case 283: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1431 + //line php7/php7.y:2181 { name := node.NewIdentifier(yyDollar[1].token.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) + // save comments yylex.(*Parser).comments.AddComments(name, yyDollar[1].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 284: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1444 + //line php7/php7.y:2197 { name := node.NewIdentifier(yyDollar[1].token.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) + // save comments yylex.(*Parser).comments.AddComments(name, yyDollar[1].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 285: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1456 + //line php7/php7.y:2213 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 286: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1457 + //line php7/php7.y:2220 { yyVAL.list = []node.Node{yyDollar[1].node} } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1461 + //line php7/php7.y:2225 { yyVAL.node = yyDollar[1].node } case 288: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1465 + //line php7/php7.y:2230 { yyVAL.list = nil } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1466 + //line php7/php7.y:2232 { yyVAL.list = yyDollar[1].list } case 290: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1469 + //line php7/php7.y:2237 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 291: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1470 + //line php7/php7.y:2244 { yyVAL.list = []node.Node{yyDollar[1].node} } case 292: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:1475 + //line php7/php7.y:2249 { if yyDollar[2].nodesWithEndToken != nil { yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].nodesWithEndToken.nodes, yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) } else { yyVAL.node = stmt.NewClass(nil, nil, nil, yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) } + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + if yyDollar[3].node != nil { + yylex.(*Parser).setCommentsFromChildNode(yyVAL.node, yyDollar[3].node) + } + if yyDollar[4].list != nil { + yylex.(*Parser).setCommentsFromChildNode(yyVAL.node, firstNode(yyDollar[4].list)) + } + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[8].token.Comments()) } case 293: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1490 + //line php7/php7.y:2274 { if yyDollar[3].nodesWithEndToken != nil { yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].nodesWithEndToken.nodes) @@ -4255,1248 +4915,1746 @@ yydefault: yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) } + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1501 + //line php7/php7.y:2287 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 295: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1506 + //line php7/php7.y:2300 { list := expr.NewList(yyDollar[3].list) - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) + + // save position + yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node)) + // save comments yylex.(*Parser).comments.AddComments(list, yyDollar[1].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(list, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(list, yyDollar[4].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[5].token.Comments()) } case 296: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1516 + //line php7/php7.y:2315 { shortList := expr.NewShortList(yyDollar[2].list) - yylex.(*Parser).positions.AddPosition(shortList, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) yyVAL.node = assign.NewAssign(shortList, yyDollar[5].node) + + // save position + yylex.(*Parser).positions.AddPosition(shortList, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + // save comments yylex.(*Parser).comments.AddComments(shortList, yyDollar[1].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(shortList, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 297: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1526 + //line php7/php7.y:2329 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 298: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1532 + //line php7/php7.y:2339 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 299: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1538 + //line php7/php7.y:2350 { yyVAL.node = expr.NewClone(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1544 + //line php7/php7.y:2360 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1550 + //line php7/php7.y:2370 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1556 + //line php7/php7.y:2380 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1562 + //line php7/php7.y:2390 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1568 + //line php7/php7.y:2400 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1574 + //line php7/php7.y:2410 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1580 + //line php7/php7.y:2420 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1586 + //line php7/php7.y:2430 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1592 + //line php7/php7.y:2440 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1598 + //line php7/php7.y:2450 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1604 + //line php7/php7.y:2460 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 311: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1610 + //line php7/php7.y:2470 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1616 + //line php7/php7.y:2480 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1622 + //line php7/php7.y:2490 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1628 + //line php7/php7.y:2500 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 315: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1634 + //line php7/php7.y:2510 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1640 + //line php7/php7.y:2520 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1646 + //line php7/php7.y:2530 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1652 + //line php7/php7.y:2540 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1658 + //line php7/php7.y:2550 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1664 + //line php7/php7.y:2560 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1670 + //line php7/php7.y:2570 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1676 + //line php7/php7.y:2580 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1682 + //line php7/php7.y:2590 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1688 + //line php7/php7.y:2600 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1694 + //line php7/php7.y:2605 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1700 + //line php7/php7.y:2615 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1706 + //line php7/php7.y:2625 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1712 + //line php7/php7.y:2635 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1718 + //line php7/php7.y:2645 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1724 + //line php7/php7.y:2655 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1730 + //line php7/php7.y:2665 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 332: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1736 + //line php7/php7.y:2675 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1742 + //line php7/php7.y:2685 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1748 + //line php7/php7.y:2695 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 335: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1754 + //line php7/php7.y:2705 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1760 + //line php7/php7.y:2715 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1766 + //line php7/php7.y:2725 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1772 + //line php7/php7.y:2735 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1778 + //line php7/php7.y:2745 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1784 + //line php7/php7.y:2755 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1790 + //line php7/php7.y:2765 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1796 + //line php7/php7.y:2775 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1802 + //line php7/php7.y:2785 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1808 + //line php7/php7.y:2795 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1814 + //line php7/php7.y:2805 { yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 346: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1820 + //line php7/php7.y:2815 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 347: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1825 + //line php7/php7.y:2825 { yyVAL.node = yyDollar[2].node + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1826 + //line php7/php7.y:2833 { yyVAL.node = yyDollar[1].node } case 349: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1828 + //line php7/php7.y:2835 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 350: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1834 + //line php7/php7.y:2846 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 351: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1840 + //line php7/php7.y:2857 { yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1845 + //line php7/php7.y:2867 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1847 + //line php7/php7.y:2869 { yyVAL.node = cast.NewInt(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1853 + //line php7/php7.y:2879 { yyVAL.node = cast.NewDouble(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1859 + //line php7/php7.y:2889 { yyVAL.node = cast.NewString(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1865 + //line php7/php7.y:2899 { yyVAL.node = cast.NewArray(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1871 + //line php7/php7.y:2909 { yyVAL.node = cast.NewObject(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1877 + //line php7/php7.y:2919 { yyVAL.node = cast.NewBool(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1883 + //line php7/php7.y:2929 { yyVAL.node = cast.NewUnset(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 360: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1889 + //line php7/php7.y:2939 { if strings.EqualFold(yyDollar[1].token.Value, "die") { yyVAL.node = expr.NewDie(yyDollar[2].node) } else { yyVAL.node = expr.NewExit(yyDollar[2].node) } + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 361: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1899 + //line php7/php7.y:2953 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1904 + //line php7/php7.y:2963 { yyVAL.node = yyDollar[1].node } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1906 + //line php7/php7.y:2965 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1912 + //line php7/php7.y:2976 { yyVAL.node = expr.NewPrint(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 365: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1918 + //line php7/php7.y:2986 { yyVAL.node = expr.NewYield(nil, nil) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1924 + //line php7/php7.y:2996 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 367: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1930 + //line php7/php7.y:3006 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1936 + //line php7/php7.y:3017 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 369: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:1942 + //line php7/php7.y:3027 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].list, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].boolWithToken.value, yyDollar[3].str) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[11].token)) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + if yyDollar[2].boolWithToken.value { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].boolWithToken.token.Comments()) + } + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[9].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[11].token.Comments()) } case 370: yyDollar = yyS[yypt-12 : yypt+1] - //line php7/php7.y:1949 + //line php7/php7.y:3044 { yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].list, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].boolWithToken.value, yyDollar[4].str) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[12].token)) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + if yyDollar[3].boolWithToken.value { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].boolWithToken.token.Comments()) + } + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[5].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[7].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[10].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[12].token.Comments()) } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1958 + //line php7/php7.y:3065 { yyVAL.str = yylex.(*Parser).PhpDocComment yylex.(*Parser).PhpDocComment = "" } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1962 + //line php7/php7.y:3073 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 373: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1963 + //line php7/php7.y:3075 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 374: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1967 + //line php7/php7.y:3080 { yyVAL.list = []node.Node{} } case 375: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1968 + //line php7/php7.y:3082 { yyVAL.list = yyDollar[3].list } case 376: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1972 + //line php7/php7.y:3087 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 377: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1973 + //line php7/php7.y:3094 { yyVAL.list = []node.Node{yyDollar[1].node} } case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1978 + //line php7/php7.y:3099 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.node = expr.NewClosureUse(variable, false) + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) - yylex.(*Parser).comments.AddComments(identifier, yyDollar[1].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(variable, yyDollar[1].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 379: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1991 + //line php7/php7.y:3113 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[2].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yyVAL.node = expr.NewClosureUse(variable, true) + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) - yylex.(*Parser).comments.AddComments(identifier, yyDollar[2].token.Comments()) - yylex.(*Parser).comments.AddComments(variable, yyDollar[1].token.Comments()) + // save comments + yylex.(*Parser).comments.AddComments(variable, yyDollar[2].token.Comments()) yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2007 + //line php7/php7.y:3131 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].nodesWithEndToken.nodes) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].nodesWithEndToken.endToken)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2013 + //line php7/php7.y:3138 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2019 + //line php7/php7.y:3148 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2025 + //line php7/php7.y:3158 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].nodesWithEndToken.nodes) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].nodesWithEndToken.endToken)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2034 + //line php7/php7.y:3168 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2039 + //line php7/php7.y:3178 { yyVAL.node = yyDollar[1].node } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2043 + //line php7/php7.y:3183 { yyVAL.node = yyDollar[1].node } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2044 + //line php7/php7.y:3185 { yyVAL.node = yyDollar[1].node } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2048 + //line php7/php7.y:3190 { yyVAL.node = nil } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2049 + //line php7/php7.y:3192 { yyVAL.node = yyDollar[2].node } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2053 + //line php7/php7.y:3197 { yyVAL.list = []node.Node{} } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2054 + //line php7/php7.y:3199 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2055 + //line php7/php7.y:3201 { yyVAL.list = yyDollar[1].list } case 393: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2059 + //line php7/php7.y:3206 { yyVAL.nodesWithEndToken = nil } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2060 + //line php7/php7.y:3208 { yyVAL.nodesWithEndToken = yyDollar[1].nodesWithEndToken } case 395: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2065 + //line php7/php7.y:3213 { yyVAL.node = expr.NewArray(yyDollar[3].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2071 + //line php7/php7.y:3225 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2077 + //line php7/php7.y:3236 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2086 + //line php7/php7.y:3249 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2092 + //line php7/php7.y:3259 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2098 + //line php7/php7.y:3269 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2104 + //line php7/php7.y:3279 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2110 + //line php7/php7.y:3289 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2116 + //line php7/php7.y:3299 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2122 + //line php7/php7.y:3309 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2128 + //line php7/php7.y:3319 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2134 + //line php7/php7.y:3329 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2140 + //line php7/php7.y:3339 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2146 + //line php7/php7.y:3349 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) - yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) - yylex.(*Parser).comments.AddComments(encapsed, yyDollar[2].token.Comments()) - yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) + + // save position + yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 409: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2156 + //line php7/php7.y:3361 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2162 + //line php7/php7.y:3371 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 411: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2168 + //line php7/php7.y:3381 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2173 + //line php7/php7.y:3391 { yyVAL.node = yyDollar[1].node } case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2174 + //line php7/php7.y:3393 { yyVAL.node = yyDollar[1].node } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2179 + //line php7/php7.y:3398 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 415: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2185 + //line php7/php7.y:3405 { target := node.NewIdentifier(yyDollar[3].token.Value) - yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) + + // save position + yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) yylex.(*Parser).comments.AddComments(target, yyDollar[3].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2195 + //line php7/php7.y:3418 { target := node.NewIdentifier(yyDollar[3].token.Value) - yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) + + // save position + yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) yylex.(*Parser).comments.AddComments(target, yyDollar[3].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2207 + //line php7/php7.y:3434 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2208 + //line php7/php7.y:3436 { yyVAL.node = yyDollar[1].node } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2212 + //line php7/php7.y:3441 { yyVAL.node = nil } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2213 + //line php7/php7.y:3443 { yyVAL.node = yyDollar[1].node } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2217 + //line php7/php7.y:3448 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2221 + //line php7/php7.y:3453 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2222 + //line php7/php7.y:3455 { yyVAL.node = yyDollar[2].node + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2223 + //line php7/php7.y:3463 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2227 + //line php7/php7.y:3468 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2228 + //line php7/php7.y:3470 { yyVAL.node = yyDollar[2].node + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2229 + //line php7/php7.y:3478 { yyVAL.node = yyDollar[1].node } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2233 + //line php7/php7.y:3483 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2235 + //line php7/php7.y:3485 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 430: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2241 + //line php7/php7.y:3496 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 431: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2247 + //line php7/php7.y:3507 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2253 + //line php7/php7.y:3518 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2258 + //line php7/php7.y:3528 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2262 + //line php7/php7.y:3533 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2263 + //line php7/php7.y:3535 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2265 + //line php7/php7.y:3537 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2274 + //line php7/php7.y:3550 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.node = expr.NewVariable(name) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) - yylex.(*Parser).comments.AddComments(name, yyDollar[1].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2284 + //line php7/php7.y:3562 { yyVAL.node = expr.NewVariable(yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2290 + //line php7/php7.y:3574 { yyVAL.node = expr.NewVariable(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2299 + //line php7/php7.y:3587 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2305 + //line php7/php7.y:3597 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2313 + //line php7/php7.y:3610 { yyVAL.node = yyDollar[1].node } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2315 + //line php7/php7.y:3612 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2321 + //line php7/php7.y:3623 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2327 + //line php7/php7.y:3634 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2333 + //line php7/php7.y:3644 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2339 + //line php7/php7.y:3654 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2348 + //line php7/php7.y:3667 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2353 + //line php7/php7.y:3677 { yyVAL.node = yyDollar[2].node + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2354 + //line php7/php7.y:3685 { yyVAL.node = yyDollar[1].node } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2359 + //line php7/php7.y:3690 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2364 + //line php7/php7.y:3700 { yyVAL.node = yyDollar[2].node + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2365 + //line php7/php7.y:3708 { yyVAL.node = yyDollar[1].node } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2370 + //line php7/php7.y:3713 { if yyDollar[1].list[len(yyDollar[1].list)-1] == nil { yyVAL.list = yyDollar[1].list[:len(yyDollar[1].list)-1] @@ -5506,327 +6664,442 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2380 + //line php7/php7.y:3724 { yyVAL.node = nil } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2381 + //line php7/php7.y:3726 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2386 + //line php7/php7.y:3731 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2387 + //line php7/php7.y:3738 { yyVAL.list = []node.Node{yyDollar[1].node} } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2392 + //line php7/php7.y:3743 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2398 + //line php7/php7.y:3753 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2404 + //line php7/php7.y:3760 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[4].node, true) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2410 + //line php7/php7.y:3771 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[2].node, true) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2416 + //line php7/php7.y:3781 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[3].token, yyDollar[6].token)) yyVAL.node = expr.NewArrayItem(yyDollar[1].node, list, false) + + // save position + yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[3].token, yyDollar[6].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token)) + // save comments + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) yylex.(*Parser).comments.AddComments(list, yyDollar[3].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) + yylex.(*Parser).comments.AddComments(list, yyDollar[4].token.Comments()) + yylex.(*Parser).comments.AddComments(list, yyDollar[6].token.Comments()) } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2427 + //line php7/php7.y:3797 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) yyVAL.node = expr.NewArrayItem(nil, list, false) + + // save position + yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + // save comments yylex.(*Parser).comments.AddComments(list, yyDollar[1].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(list, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(list, yyDollar[4].token.Comments()) } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2440 + //line php7/php7.y:3815 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2442 + //line php7/php7.y:3817 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) - yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yyVAL.list = append(yyDollar[1].list, encapsed) + + // save position + yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + + // save comments yylex.(*Parser).comments.AddComments(encapsed, yyDollar[2].token.Comments()) } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2448 + //line php7/php7.y:3828 { yyVAL.list = []node.Node{yyDollar[1].node} } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2450 + //line php7/php7.y:3830 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) - yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} + + // save position + yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(encapsed, yyDollar[1].token.Comments()) } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2460 + //line php7/php7.y:3844 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.node = expr.NewVariable(name) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) - yylex.(*Parser).comments.AddComments(name, yyDollar[1].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2470 + //line php7/php7.y:3856 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.node = expr.NewArrayDimFetch(variable, yyDollar[3].node) + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) - yylex.(*Parser).comments.AddComments(identifier, yyDollar[1].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(variable, yyDollar[1].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2483 + //line php7/php7.y:3872 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) fetch := node.NewIdentifier(yyDollar[3].token.Value) - yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yyVAL.node = expr.NewPropertyFetch(variable, fetch) + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) - yylex.(*Parser).comments.AddComments(identifier, yyDollar[1].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(variable, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) yylex.(*Parser).comments.AddComments(fetch, yyDollar[3].token.Comments()) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2499 + //line php7/php7.y:3890 { yyVAL.node = expr.NewVariable(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2505 + //line php7/php7.y:3901 { name := node.NewIdentifier(yyDollar[2].token.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yyVAL.node = expr.NewVariable(name) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) - yylex.(*Parser).comments.AddComments(name, yyDollar[2].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(name, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2515 + //line php7/php7.y:3915 { identifier := node.NewIdentifier(yyDollar[2].token.Value) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yyVAL.node = expr.NewArrayDimFetch(variable, yyDollar[4].node) + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) - yylex.(*Parser).comments.AddComments(identifier, yyDollar[2].token.Comments()) - yylex.(*Parser).comments.AddComments(variable, yyDollar[1].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(variable, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[5].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[6].token.Comments()) } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2528 + //line php7/php7.y:3933 { yyVAL.node = yyDollar[2].node } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2532 + //line php7/php7.y:3939 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2538 + //line php7/php7.y:3949 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) } else { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) } + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2550 + //line php7/php7.y:3964 { + var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer - if _, err := strconv.Atoi(yyDollar[2].token.Value); err == nil { - lnumber := scalar.NewLnumber(yyDollar[2].token.Value) - yylex.(*Parser).positions.AddPosition(lnumber, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) - yyVAL.node = expr.NewUnaryMinus(lnumber) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + _, err := strconv.Atoi(yyDollar[2].token.Value) + isInt := err == nil - yylex.(*Parser).comments.AddComments(lnumber, yyDollar[1].token.Comments()) + if isInt { + lnumber = scalar.NewLnumber(yyDollar[2].token.Value) + yyVAL.node = expr.NewUnaryMinus(lnumber) } else { yyDollar[2].token.Value = "-" + yyDollar[2].token.Value yyVAL.node = scalar.NewString(yyDollar[2].token.Value) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) } + // save position + if isInt { + yylex.(*Parser).positions.AddPosition(lnumber, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + } + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + if isInt { + yylex.(*Parser).comments.AddComments(lnumber, yyDollar[2].token.Comments()) + } else { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + } } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2568 + //line php7/php7.y:3993 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yyVAL.node = expr.NewVariable(identifier) + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) - yylex.(*Parser).comments.AddComments(identifier, yyDollar[1].token.Comments()) + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:2581 + //line php7/php7.y:4008 { yyVAL.node = expr.NewIsset(yyDollar[3].list) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + if yyDollar[4].token != nil { + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) + } + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[5].token.Comments()) } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2587 + //line php7/php7.y:4023 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2593 + //line php7/php7.y:4035 { yyVAL.node = expr.NewInclude(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2599 + //line php7/php7.y:4045 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2605 + //line php7/php7.y:4055 { yyVAL.node = expr.NewEval(yyDollar[3].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2611 + //line php7/php7.y:4067 { yyVAL.node = expr.NewRequire(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2617 + //line php7/php7.y:4077 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) + + // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2625 + //line php7/php7.y:4090 { yyVAL.list = []node.Node{yyDollar[1].node} } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2626 + //line php7/php7.y:4092 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode(yyDollar[1].list), yyDollar[2].token.Comments()) } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2630 + //line php7/php7.y:4102 { yyVAL.node = yyDollar[1].node } diff --git a/php7/php7.y b/php7/php7.y index 581e578..bb72887 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -143,6 +143,29 @@ import ( %token T_COALESCE %token T_SPACESHIP %token T_NOELSE +%token T_PLUS_EQUAL +%token T_MINUS_EQUAL +%token T_MUL_EQUAL +%token T_POW_EQUAL +%token T_DIV_EQUAL +%token T_CONCAT_EQUAL +%token T_MOD_EQUAL +%token T_AND_EQUAL +%token T_OR_EQUAL +%token T_XOR_EQUAL +%token T_SL_EQUAL +%token T_SR_EQUAL +%token T_BOOLEAN_OR +%token T_BOOLEAN_AND +%token T_POW +%token T_SL +%token T_SR +%token T_IS_IDENTICAL +%token T_IS_NOT_IDENTICAL +%token T_IS_EQUAL +%token T_IS_NOT_EQUAL +%token T_IS_SMALLER_OR_EQUAL +%token T_IS_GREATER_OR_EQUAL %token '"' %token '`' %token '{' @@ -161,6 +184,15 @@ import ( %token '~' %token '@' %token '$' +%token ',' +%token '|' +%token '=' +%token '^' +%token '*' +%token '/' +%token '%' +%token '<' +%token '>' %left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE %left ',' @@ -201,6 +233,8 @@ import ( %type reserved_non_modifiers %type semi_reserved %type identifier +%type possible_comma +%type case_separator %type top_statement name statement function_declaration_statement %type class_declaration_statement trait_declaration_statement @@ -253,11 +287,13 @@ import ( ///////////////////////////////////////////////////////////////////////// start: - top_statement_list - { - yylex.(*Parser).rootNode = stmt.NewStmtList($1) - yylex.(*Parser).positions.AddPosition(yylex.(*Parser).rootNode, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - } + top_statement_list + { + yylex.(*Parser).rootNode = stmt.NewStmtList($1) + + // save position + yylex.(*Parser).positions.AddPosition(yylex.(*Parser).rootNode, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + } ; reserved_non_modifiers: @@ -271,153 +307,269 @@ reserved_non_modifiers: ; semi_reserved: - reserved_non_modifiers {$$=$1} - | T_STATIC {$$=$1} | T_ABSTRACT {$$=$1} | T_FINAL {$$=$1} | T_PRIVATE {$$=$1} | T_PROTECTED {$$=$1} | T_PUBLIC {$$=$1} + reserved_non_modifiers + { $$ = $1 } + | T_STATIC {$$=$1} | T_ABSTRACT {$$=$1} | T_FINAL {$$=$1} | T_PRIVATE {$$=$1} | T_PROTECTED {$$=$1} | T_PUBLIC {$$=$1} ; identifier: - T_STRING { $$ = $1 } - | semi_reserved { $$ = $1 } + T_STRING + { $$ = $1 } + | semi_reserved + { $$ = $1 } ; top_statement_list: - top_statement_list top_statement - { - if $2 != nil { - $$ = append($1, $2) + top_statement_list top_statement + { + if $2 != nil { + $$ = append($1, $2) + } } - } - | /* empty */ { $$ = []node.Node{} } + | /* empty */ + { $$ = []node.Node{} } ; namespace_name: - T_STRING - { - namePart := name.NewNamePart($1.Value) - yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = []node.Node{namePart} - yylex.(*Parser).comments.AddComments(namePart, $1.Comments()) - } + T_STRING + { + namePart := name.NewNamePart($1.Value) + $$ = []node.Node{namePart} + + // save position + yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments(namePart, $1.Comments()) + } | namespace_name T_NS_SEPARATOR T_STRING - { - namePart := name.NewNamePart($3.Value) - yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$ = append($1, namePart) - yylex.(*Parser).comments.AddComments(namePart, $3.Comments()) - } + { + namePart := name.NewNamePart($3.Value) + $$ = append($1, namePart) + + // save position + yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + yylex.(*Parser).comments.AddComments(namePart, $3.Comments()) + } ; name: - namespace_name - { - $$ = name.NewName($1) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).listGetFirstNodeComments($1)) - } + namespace_name + { + $$ = name.NewName($1) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + } | T_NAMESPACE T_NS_SEPARATOR namespace_name - { - $$ = name.NewRelative($3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = name.NewRelative($3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } | T_NS_SEPARATOR namespace_name - { - $$ = name.NewFullyQualified($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = name.NewFullyQualified($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; top_statement: - error - { - // error - $$ = nil - } - | statement { $$ = $1; } - | function_declaration_statement { $$ = $1; } - | class_declaration_statement { $$ = $1; } - | trait_declaration_statement { $$ = $1; } - | interface_declaration_statement { $$ = $1; } - | T_HALT_COMPILER '(' ')' ';' { $$ = stmt.NewHaltCompiler() } + error + { + // error + $$ = nil + } + | statement + { $$ = $1; } + | function_declaration_statement + { $$ = $1; } + | class_declaration_statement + { $$ = $1; } + | trait_declaration_statement + { $$ = $1; } + | interface_declaration_statement + { $$ = $1; } + | T_HALT_COMPILER '(' ')' ';' + { + $$ = stmt.NewHaltCompiler() + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | T_NAMESPACE namespace_name ';' - { - name := name.NewName($2) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - $$ = stmt.NewNamespace(name, nil) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + { + name := name.NewName($2) + $$ = stmt.NewNamespace(name, nil) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments($2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_NAMESPACE namespace_name '{' top_statement_list '}' - { - name := name.NewName($2) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - $$ = stmt.NewNamespace(name, $4) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) + { + name := name.NewName($2) + $$ = stmt.NewNamespace(name, $4) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments($2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + yylex.(*Parser).comments.AddComments($$, $5.Comments()) + } | T_NAMESPACE '{' top_statement_list '}' - { - $$ = stmt.NewNamespace(nil, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_USE mixed_group_use_declaration ';' { $$ = $2 } - | T_USE use_type group_use_declaration ';' { $$ = $3.(*stmt.GroupUse).SetUseType($2) } + { + $$ = stmt.NewNamespace(nil, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } + | T_USE mixed_group_use_declaration ';' + { + $$ = $2 + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } + | T_USE use_type group_use_declaration ';' + { + $$ = $3.(*stmt.GroupUse).SetUseType($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | T_USE use_declarations ';' - { - $$ = stmt.NewUseList(nil, $2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_USE use_type use_declarations ';' { $$ = stmt.NewUseList($2, $3) } + { + $$ = stmt.NewUseList(nil, $2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } + | T_USE use_type use_declarations ';' + { + $$ = stmt.NewUseList($2, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | T_CONST const_list ';' - { - $$ = stmt.NewConstList($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewConstList($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } ; use_type: - T_FUNCTION - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + T_FUNCTION + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_CONST - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; group_use_declaration: namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}' { name := name.NewName($1) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) $$ = stmt.NewGroupUse(nil, name, $4) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $6)) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments($1)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).listGetFirstNodeComments($1)) + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + if $5 != nil { + yylex.(*Parser).comments.AddComments($$, $5.Comments()) + } + yylex.(*Parser).comments.AddComments($$, $6.Comments()) } | T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}' { name := name.NewName($2) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) $$ = stmt.NewGroupUse(nil, name, $5) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments($2)) + // save comments yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + if $6 != nil { + yylex.(*Parser).comments.AddComments($$, $6.Comments()) + } + yylex.(*Parser).comments.AddComments($$, $7.Comments()) } ; @@ -425,247 +577,421 @@ mixed_group_use_declaration: namespace_name T_NS_SEPARATOR '{' inline_use_declarations possible_comma '}' { name := name.NewName($1) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) $$ = stmt.NewGroupUse(nil, name, $4) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $6)) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments($1)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).listGetFirstNodeComments($1)) + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + if $5 != nil { + yylex.(*Parser).comments.AddComments($$, $5.Comments()) + } + yylex.(*Parser).comments.AddComments($$, $6.Comments()) } | T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' inline_use_declarations possible_comma '}' { name := name.NewName($2) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) $$ = stmt.NewGroupUse(nil, name, $5) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments($2)) + // save comments yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + if $6 != nil { + yylex.(*Parser).comments.AddComments($$, $6.Comments()) + } + yylex.(*Parser).comments.AddComments($$, $7.Comments()) } ; possible_comma: /* empty */ + { $$ = nil } | ',' + { $$ = $1 } ; inline_use_declarations: inline_use_declarations ',' inline_use_declaration - { $$ = append($1, $3) } - | inline_use_declaration { $$ = []node.Node{$1} } + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } + | inline_use_declaration + { $$ = []node.Node{$1} } ; unprefixed_use_declarations: unprefixed_use_declarations ',' unprefixed_use_declaration - { $$ = append($1, $3) } - | unprefixed_use_declaration { $$ = []node.Node{$1} } + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } + | unprefixed_use_declaration + { $$ = []node.Node{$1} } ; use_declarations: - use_declarations ',' use_declaration { $$ = append($1, $3) } - | use_declaration { $$ = []node.Node{$1} } + use_declarations ',' use_declaration + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } + | use_declaration + { $$ = []node.Node{$1} } ; inline_use_declaration: - unprefixed_use_declaration { $$ = $1; } - | use_type unprefixed_use_declaration { $$ = $2.(*stmt.Use).SetUseType($1) } + unprefixed_use_declaration + { $$ = $1 } + | use_type unprefixed_use_declaration + { $$ = $2.(*stmt.Use).SetUseType($1) } ; unprefixed_use_declaration: - namespace_name - { - name := name.NewName($1) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - $$ = stmt.NewUse(nil, name, nil) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + namespace_name + { + name := name.NewName($1) + $$ = stmt.NewUse(nil, name, nil) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments($1)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).listGetFirstNodeComments($1)) - } + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + } | namespace_name T_AS T_STRING - { - name := name.NewName($1) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - alias := node.NewIdentifier($3.Value) - yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$ = stmt.NewUse(nil, name, alias) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) + { + name := name.NewName($1) + alias := node.NewIdentifier($3.Value) + $$ = stmt.NewUse(nil, name, alias) - yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments($1)) - yylex.(*Parser).comments.AddComments(alias, $3.Comments()) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).listGetFirstNodeComments($1)) - } + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments(alias, $3.Comments()) + } ; use_declaration: - unprefixed_use_declaration { $$ = $1; } - | T_NS_SEPARATOR unprefixed_use_declaration { $$ = $2; } + unprefixed_use_declaration + { $$ = $1; } + | T_NS_SEPARATOR unprefixed_use_declaration + { + $$ = $2; + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; const_list: - const_list ',' const_decl { $$ = append($1, $3) } - | const_decl { $$ = []node.Node{$1} } + const_list ',' const_decl + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } + | const_decl + { $$ = []node.Node{$1} } ; inner_statement_list: - inner_statement_list inner_statement - { - if $2 != nil { - $$ = append($1, $2) + inner_statement_list inner_statement + { + if $2 != nil { + $$ = append($1, $2) + } } - } - | /* empty */ { $$ = []node.Node{} } + | /* empty */ + { $$ = []node.Node{} } ; inner_statement: - error - { - // error - $$ = nil - } - | statement { $$ = $1; } - | function_declaration_statement { $$ = $1; } - | class_declaration_statement { $$ = $1; } - | trait_declaration_statement { $$ = $1; } - | interface_declaration_statement { $$ = $1; } + error + { + // error + $$ = nil + } + | statement + { $$ = $1; } + | function_declaration_statement + { $$ = $1; } + | class_declaration_statement + { $$ = $1; } + | trait_declaration_statement + { $$ = $1; } + | interface_declaration_statement + { $$ = $1; } | T_HALT_COMPILER '(' ')' ';' - { - $$ = stmt.NewHaltCompiler() - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewHaltCompiler() + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } statement: - '{' inner_statement_list '}' - { - $$ = stmt.NewStmtList($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | if_stmt { $$ = $1; } - | alt_if_stmt { $$ = $1; } + '{' inner_statement_list '}' + { + $$ = stmt.NewStmtList($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } + | if_stmt + { $$ = $1; } + | alt_if_stmt + { $$ = $1; } | T_WHILE '(' expr ')' while_statement - { - if ($5.isAlt) { - $$ = stmt.NewAltWhile($3, $5.node) - } else { - $$ = stmt.NewWhile($3, $5.node) + { + if ($5.isAlt) { + $$ = stmt.NewAltWhile($3, $5.node) + } else { + $$ = stmt.NewWhile($3, $5.node) + } + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5.node)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) } - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5.node)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } | T_DO statement T_WHILE '(' expr ')' ';' - { - $$ = stmt.NewDo($2, $5) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewDo($2, $5) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + yylex.(*Parser).comments.AddComments($$, $6.Comments()) + yylex.(*Parser).comments.AddComments($$, $7.Comments()) + } | T_FOR '(' for_exprs ';' for_exprs ';' for_exprs ')' for_statement - { - if ($9.isAlt) { - $$ = stmt.NewAltFor($3, $5, $7, $9.node) - } else { - $$ = stmt.NewFor($3, $5, $7, $9.node) + { + if ($9.isAlt) { + $$ = stmt.NewAltFor($3, $5, $7, $9.node) + } else { + $$ = stmt.NewFor($3, $5, $7, $9.node) + } + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9.node)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + yylex.(*Parser).comments.AddComments($$, $6.Comments()) + yylex.(*Parser).comments.AddComments($$, $8.Comments()) } - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9.node)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } | T_SWITCH '(' expr ')' switch_case_list - { - if ($5.endToken.Value == ";") { - $$ = stmt.NewAltSwitch($3, $5.nodes) - } else { - $$ = stmt.NewSwitch($3, $5.nodes) + { + if ($5.endToken.Value == ";") { + $$ = stmt.NewAltSwitch($3, $5.nodes) + } else { + $$ = stmt.NewSwitch($3, $5.nodes) + } + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5.endToken)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) } - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5.endToken)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } | T_BREAK optional_expr ';' - { - $$ = stmt.NewBreak($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewBreak($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_CONTINUE optional_expr ';' - { - $$ = stmt.NewContinue($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewContinue($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_RETURN optional_expr ';' - { - $$ = stmt.NewReturn($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewReturn($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_GLOBAL global_var_list ';' - { - $$ = stmt.NewGlobal($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewGlobal($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_STATIC static_var_list ';' - { - $$ = stmt.NewStatic($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewStatic($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_ECHO echo_expr_list ';' - { - $$ = stmt.NewEcho($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewEcho($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_INLINE_HTML - { - $$ = stmt.NewInlineHtml($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewInlineHtml($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | expr ';' - { - $$ = stmt.NewExpression($1) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = stmt.NewExpression($1) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } | T_UNSET '(' unset_variables possible_comma ')' ';' - { - $$ = stmt.NewUnset($3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewUnset($3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + if $4 != nil { + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } + yylex.(*Parser).comments.AddComments($$, $5.Comments()) + yylex.(*Parser).comments.AddComments($$, $6.Comments()) + } | T_FOREACH '(' expr T_AS foreach_variable ')' foreach_statement - { - if ($7.isAlt) { - $$ = stmt.NewAltForeach($3, nil, $5.node, $7.node, $5.byRef) - } else { - $$ = stmt.NewForeach($3, nil, $5.node, $7.node, $5.byRef) + { + if ($7.isAlt) { + $$ = stmt.NewAltForeach($3, nil, $5.node, $7.node, $5.byRef) + } else { + $$ = stmt.NewForeach($3, nil, $5.node, $7.node, $5.byRef) + } + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $7.node)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + yylex.(*Parser).comments.AddComments($$, $6.Comments()) } - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $7.node)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } | T_FOREACH '(' expr T_AS variable T_DOUBLE_ARROW foreach_variable ')' foreach_statement - { - if ($9.isAlt) { - $$ = stmt.NewAltForeach($3, $5, $7.node, $9.node, $7.byRef) - } else { - $$ = stmt.NewForeach($3, $5, $7.node, $9.node, $7.byRef) + { + if ($9.isAlt) { + $$ = stmt.NewAltForeach($3, $5, $7.node, $9.node, $7.byRef) + } else { + $$ = stmt.NewForeach($3, $5, $7.node, $9.node, $7.byRef) + } + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9.node)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + yylex.(*Parser).comments.AddComments($$, $6.Comments()) + yylex.(*Parser).comments.AddComments($$, $8.Comments()) } - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9.node)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } | T_DECLARE '(' const_list ')' declare_statement - { - $$ = stmt.NewDeclare($3, $5) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewDeclare($3, $5) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | ';' - { - $$ = stmt.NewNop() - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewNop() + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_TRY '{' inner_statement_list '}' catch_list finally_statement { if $6 == nil { @@ -676,200 +1002,345 @@ statement: yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) } + // save comments yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) } | T_THROW expr ';' - { - $$ = stmt.NewThrow($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewThrow($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_GOTO T_STRING ';' - { - label := node.NewIdentifier($2.Value) - yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$ = stmt.NewGoto(label) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + { + label := node.NewIdentifier($2.Value) + $$ = stmt.NewGoto(label) - yylex.(*Parser).comments.AddComments(label, $2.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments(label, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_STRING ':' - { - label := node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = stmt.NewLabel(label) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + { + label := node.NewIdentifier($1.Value) + $$ = stmt.NewLabel(label) - yylex.(*Parser).comments.AddComments(label, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments(label, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } catch_list: - /* empty */ { $$ = []node.Node{} } + /* empty */ + { $$ = []node.Node{} } | catch_list T_CATCH '(' catch_name_list T_VARIABLE ')' '{' inner_statement_list '}' - { - identifier := node.NewIdentifier(strings.TrimLeft($5.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($5)) - variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($5)) - catch := stmt.NewCatch($4, variable, $8) - yylex.(*Parser).positions.AddPosition(catch, yylex.(*Parser).positionBuilder.NewTokensPosition($2, $9)) - $$ = append($1, catch) + { + identifier := node.NewIdentifier(strings.TrimLeft($5.Value, "$")) + variable := expr.NewVariable(identifier) + catch := stmt.NewCatch($4, variable, $8) + $$ = append($1, catch) - yylex.(*Parser).comments.AddComments(identifier, $5.Comments()) - yylex.(*Parser).comments.AddComments(variable, $5.Comments()) - yylex.(*Parser).comments.AddComments(catch, $2.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($5)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($5)) + yylex.(*Parser).positions.AddPosition(catch, yylex.(*Parser).positionBuilder.NewTokensPosition($2, $9)) + + // save comments + yylex.(*Parser).comments.AddComments(catch, $2.Comments()) + yylex.(*Parser).comments.AddComments(catch, $3.Comments()) + yylex.(*Parser).comments.AddComments(variable, $5.Comments()) + yylex.(*Parser).comments.AddComments(catch, $6.Comments()) + yylex.(*Parser).comments.AddComments(catch, $7.Comments()) + yylex.(*Parser).comments.AddComments(catch, $9.Comments()) + } ; catch_name_list: - name { $$ = []node.Node{$1} } - | catch_name_list '|' name { $$ = append($1, $3) } + name + { $$ = []node.Node{$1} } + | catch_name_list '|' name + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } ; finally_statement: - /* empty */ { $$ = nil } + /* empty */ + { $$ = nil } | T_FINALLY '{' inner_statement_list '}' - { - $$ = stmt.NewFinally($3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewFinally($3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } ; unset_variables: - unset_variable { $$ = []node.Node{$1} } - | unset_variables ',' unset_variable { $$ = append($1, $3) } + unset_variable + { $$ = []node.Node{$1} } + | unset_variables ',' unset_variable + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } ; unset_variable: - variable { $$ = $1 } + variable + { $$ = $1 } ; function_declaration_statement: - T_FUNCTION returns_ref T_STRING backup_doc_comment '(' parameter_list ')' return_type '{' inner_statement_list '}' - { - name := node.NewIdentifier($3.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$ = stmt.NewFunction(name, $2.value, $6, $8, $10, $4) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $11)) + T_FUNCTION returns_ref T_STRING backup_doc_comment '(' parameter_list ')' return_type '{' inner_statement_list '}' + { + name := node.NewIdentifier($3.Value) + $$ = stmt.NewFunction(name, $2.value, $6, $8, $10, $4) - yylex.(*Parser).comments.AddComments(name, $3.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $11)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + if $2.token != nil { + yylex.(*Parser).comments.AddComments($$, $2.token.Comments()) + } + yylex.(*Parser).comments.AddComments(name, $3.Comments()) + yylex.(*Parser).comments.AddComments(name, $5.Comments()) + yylex.(*Parser).comments.AddComments(name, $7.Comments()) + yylex.(*Parser).comments.AddComments(name, $9.Comments()) + yylex.(*Parser).comments.AddComments(name, $11.Comments()) + } ; is_reference: - /* empty */ { $$ = boolWithToken{false, nil} } - | '&' { $$ = boolWithToken{true, $1} } + /* empty */ + { $$ = boolWithToken{false, nil} } + | '&' + { $$ = boolWithToken{true, $1} } ; is_variadic: - /* empty */ { $$ = boolWithToken{false, nil} } - | T_ELLIPSIS { $$ = boolWithToken{true, $1} } + /* empty */ + { $$ = boolWithToken{false, nil} } + | T_ELLIPSIS + { $$ = boolWithToken{true, $1} } ; class_declaration_statement: class_modifiers T_CLASS T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' - { - name := node.NewIdentifier($3.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$ = stmt.NewClass(name, $1, nil, $4, $5, $8, $6) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition($1, $2, $9)) - - yylex.(*Parser).comments.AddComments(name, $3.Comments()) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).listGetFirstNodeComments($1)) - } - | T_CLASS T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' - { - name := node.NewIdentifier($2.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$ = stmt.NewClass(name, nil, nil, $3, $4, $7, $5) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) + { + name := node.NewIdentifier($3.Value) + $$ = stmt.NewClass(name, $1, nil, $4, $5, $8, $6) - yylex.(*Parser).comments.AddComments(name, $2.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition($1, $2, $9)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments(name, $3.Comments()) + if $4 != nil { + yylex.(*Parser).setCommentsFromChildNode($$, $4) + } + if $5 != nil { + yylex.(*Parser).setCommentsFromChildNode($$, firstNode($5)) + } + yylex.(*Parser).comments.AddComments($$, $7.Comments()) + yylex.(*Parser).comments.AddComments($$, $9.Comments()) + } + | T_CLASS T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' + { + name := node.NewIdentifier($2.Value) + $$ = stmt.NewClass(name, nil, nil, $3, $4, $7, $5) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments(name, $2.Comments()) + if $3 != nil { + yylex.(*Parser).setCommentsFromChildNode($$, $3) + } + if $4 != nil { + yylex.(*Parser).setCommentsFromChildNode($$, firstNode($4)) + } + yylex.(*Parser).comments.AddComments($$, $6.Comments()) + yylex.(*Parser).comments.AddComments($$, $8.Comments()) + } ; class_modifiers: - class_modifier { $$ = []node.Node{$1} } - | class_modifiers class_modifier { $$ = append($1, $2) } + class_modifier + { $$ = []node.Node{$1} } + | class_modifiers class_modifier + { $$ = append($1, $2) } ; class_modifier: - T_ABSTRACT - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + T_ABSTRACT + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_FINAL - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; trait_declaration_statement: - T_TRAIT T_STRING backup_doc_comment '{' class_statement_list '}' - { - name := node.NewIdentifier($2.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$ = stmt.NewTrait(name, $5, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) + T_TRAIT T_STRING backup_doc_comment '{' class_statement_list '}' + { + name := node.NewIdentifier($2.Value) + $$ = stmt.NewTrait(name, $5, $3) - yylex.(*Parser).comments.AddComments(name, $2.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments(name, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + yylex.(*Parser).comments.AddComments($$, $6.Comments()) + } ; interface_declaration_statement: - T_INTERFACE T_STRING interface_extends_list backup_doc_comment '{' class_statement_list '}' - { - name := node.NewIdentifier($2.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$ = stmt.NewInterface(name, $3, $6, $4) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) - - yylex.(*Parser).comments.AddComments(name, $2.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + T_INTERFACE T_STRING interface_extends_list backup_doc_comment '{' class_statement_list '}' + { + name := node.NewIdentifier($2.Value) + $$ = stmt.NewInterface(name, $3, $6, $4) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments(name, $2.Comments()) + if $3 != nil { + yylex.(*Parser).setCommentsFromChildNode($$, firstNode($3)) + } + yylex.(*Parser).comments.AddComments($$, $5.Comments()) + yylex.(*Parser).comments.AddComments($$, $7.Comments()) + } ; extends_from: - /* empty */ { $$ = nil } - | T_EXTENDS name { $$ = $2; } + /* empty */ + { $$ = nil } + | T_EXTENDS name + { + $$ = $2; + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; interface_extends_list: - /* empty */ { $$ = nil } - | T_EXTENDS name_list { $$ = $2 } + /* empty */ + { $$ = nil } + | T_EXTENDS name_list + { + $$ = $2; + + // save comments + yylex.(*Parser).comments.AddComments(firstNode($$), $1.Comments()) + } ; implements_list: - /* empty */ { $$ = nil } - | T_IMPLEMENTS name_list { $$ = $2 } + /* empty */ + { $$ = nil } + | T_IMPLEMENTS name_list + { + $$ = $2; + + // save comments + yylex.(*Parser).comments.AddComments(firstNode($$), $1.Comments()) + } ; foreach_variable: - variable { $$ = foreachVariable{$1, false} } - | '&' variable { $$ = foreachVariable{$2, true} } + variable + { $$ = foreachVariable{$1, false} } + | '&' variable + { + $$ = foreachVariable{$2, true} + + // save position + yylex.(*Parser).positions.AddPosition($2, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($2, $1.Comments()) + } | T_LIST '(' array_pair_list ')' - { - list := expr.NewList($3) - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - $$ = foreachVariable{list, false} - yylex.(*Parser).comments.AddComments(list, $1.Comments()) - } + { + list := expr.NewList($3) + $$ = foreachVariable{list, false} + + // save position + yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments(list, $1.Comments()) + yylex.(*Parser).comments.AddComments(list, $2.Comments()) + yylex.(*Parser).comments.AddComments(list, $4.Comments()) + } | '[' array_pair_list ']' - { - list := expr.NewShortList($2) - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - $$ = foreachVariable{list, false} - yylex.(*Parser).comments.AddComments(list, $1.Comments()) - } + { + list := expr.NewShortList($2) + $$ = foreachVariable{list, false} + + // save position + yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments(list, $1.Comments()) + yylex.(*Parser).comments.AddComments(list, $3.Comments()) + } ; for_statement: @@ -878,7 +1349,14 @@ for_statement: | ':' inner_statement_list T_ENDFOR ';' { $$ = altSyntaxNode{stmt.NewStmtList($2), true} + + // save position yylex.(*Parser).positions.AddPosition($$.node, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$.node, $1.Comments()) + yylex.(*Parser).comments.AddComments($$.node, $3.Comments()) + yylex.(*Parser).comments.AddComments($$.node, $4.Comments()) } ; @@ -888,18 +1366,32 @@ foreach_statement: | ':' inner_statement_list T_ENDFOREACH ';' { $$ = altSyntaxNode{stmt.NewStmtList($2), true} + + // save position yylex.(*Parser).positions.AddPosition($$.node, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$.node, $1.Comments()) + yylex.(*Parser).comments.AddComments($$.node, $3.Comments()) + yylex.(*Parser).comments.AddComments($$.node, $4.Comments()) } ; declare_statement: - statement { $$ = $1; } + statement + { $$ = $1; } | ':' inner_statement_list T_ENDDECLARE ';' - { - $$ = stmt.NewStmtList($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewStmtList($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } ; switch_case_list: @@ -910,26 +1402,39 @@ switch_case_list: ; case_list: - /* empty */ { $$ = []node.Node{} } + /* empty */ + { $$ = []node.Node{} } | case_list T_CASE expr case_separator inner_statement_list { _case := stmt.NewCase($3, $5) - yylex.(*Parser).positions.AddPosition(_case, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $5)) $$ = append($1, _case) + + // save position + yylex.(*Parser).positions.AddPosition(_case, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $5)) + + // save comments yylex.(*Parser).comments.AddComments(_case, $2.Comments()) + yylex.(*Parser).comments.AddComments(_case, $4.Comments()) } | case_list T_DEFAULT case_separator inner_statement_list { _default := stmt.NewDefault($4) - yylex.(*Parser).positions.AddPosition(_default, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $4)) $$ = append($1, _default) + + // save position + yylex.(*Parser).positions.AddPosition(_default, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $4)) + + // save comments yylex.(*Parser).comments.AddComments(_default, $2.Comments()) + yylex.(*Parser).comments.AddComments(_default, $3.Comments()) } ; case_separator: ':' + { $$ = $1 } | ';' + { $$ = $1 } ; while_statement: @@ -938,388 +1443,583 @@ while_statement: | ':' inner_statement_list T_ENDWHILE ';' { $$ = altSyntaxNode{stmt.NewStmtList($2), true} + + // save position yylex.(*Parser).positions.AddPosition($$.node, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$.node, $1.Comments()) + yylex.(*Parser).comments.AddComments($$.node, $3.Comments()) + yylex.(*Parser).comments.AddComments($$.node, $4.Comments()) } ; if_stmt_without_else: - T_IF '(' expr ')' statement - { - $$ = stmt.NewIf($3, $5, nil, nil) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | if_stmt_without_else T_ELSEIF '(' expr ')' statement - { - _elseIf := stmt.NewElseIf($4, $6) - yylex.(*Parser).positions.AddPosition(_elseIf, yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $6)) - $$ = $1.(*stmt.If).AddElseIf(_elseIf) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $6)) + T_IF '(' expr ')' statement + { + $$ = stmt.NewIf($3, $5, nil, nil) - yylex.(*Parser).comments.AddComments(_elseIf, $2.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } + | if_stmt_without_else T_ELSEIF '(' expr ')' statement + { + _elseIf := stmt.NewElseIf($4, $6) + $$ = $1.(*stmt.If).AddElseIf(_elseIf) + + // save position + yylex.(*Parser).positions.AddPosition(_elseIf, yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $6)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $6)) + + // save comments + yylex.(*Parser).comments.AddComments(_elseIf, $2.Comments()) + yylex.(*Parser).comments.AddComments(_elseIf, $3.Comments()) + yylex.(*Parser).comments.AddComments(_elseIf, $5.Comments()) + } ; if_stmt: - if_stmt_without_else %prec T_NOELSE { $$ = $1; } + if_stmt_without_else %prec T_NOELSE + { $$ = $1; } | if_stmt_without_else T_ELSE statement - { - _else := stmt.NewElse($3) - yylex.(*Parser).positions.AddPosition(_else, yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $3)) - $$ = $1.(*stmt.If).SetElse(_else) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + { + _else := stmt.NewElse($3) + $$ = $1.(*stmt.If).SetElse(_else) - yylex.(*Parser).comments.AddComments($$, $2.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(_else, yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $3)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } ; alt_if_stmt_without_else: - T_IF '(' expr ')' ':' inner_statement_list - { - stmts := stmt.NewStmtList($6) - yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition($6)) - $$ = stmt.NewAltIf($3, stmts, nil, nil) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $6)) + T_IF '(' expr ')' ':' inner_statement_list + { + stmts := stmt.NewStmtList($6) + $$ = stmt.NewAltIf($3, stmts, nil, nil) - yylex.(*Parser).comments.AddComments(stmts, $5.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition($6)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $6)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + yylex.(*Parser).comments.AddComments($$, $5.Comments()) + } | alt_if_stmt_without_else T_ELSEIF '(' expr ')' ':' inner_statement_list - { - stmts := stmt.NewStmtList($7) - yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition($7)) - _elseIf := stmt.NewAltElseIf($4, stmts) - yylex.(*Parser).positions.AddPosition(_elseIf, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $7)) - $$ = $1.(*stmt.AltIf).AddElseIf(_elseIf) + { + stmts := stmt.NewStmtList($7) + _elseIf := stmt.NewAltElseIf($4, stmts) + $$ = $1.(*stmt.AltIf).AddElseIf(_elseIf) - yylex.(*Parser).comments.AddComments(stmts, $6.Comments()) - yylex.(*Parser).comments.AddComments(_elseIf, $2.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition($7)) + yylex.(*Parser).positions.AddPosition(_elseIf, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $7)) + + // save comments + yylex.(*Parser).comments.AddComments(_elseIf, $2.Comments()) + yylex.(*Parser).comments.AddComments(_elseIf, $3.Comments()) + yylex.(*Parser).comments.AddComments(_elseIf, $5.Comments()) + yylex.(*Parser).comments.AddComments(_elseIf, $6.Comments()) + } ; alt_if_stmt: - alt_if_stmt_without_else T_ENDIF ';' - { - $$ = $1 - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) - } - | alt_if_stmt_without_else T_ELSE ':' inner_statement_list T_ENDIF ';' - { - stmts := stmt.NewStmtList($4) - yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition($4)) - _else := stmt.NewAltElse(stmts) - yylex.(*Parser).positions.AddPosition(_else, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $4)) - $$ = $1.(*stmt.AltIf).SetElse(_else) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $6)) + alt_if_stmt_without_else T_ENDIF ';' + { + $$ = $1 - yylex.(*Parser).comments.AddComments(stmts, $3.Comments()) - yylex.(*Parser).comments.AddComments(_else, $2.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } + | alt_if_stmt_without_else T_ELSE ':' inner_statement_list T_ENDIF ';' + { + stmts := stmt.NewStmtList($4) + _else := stmt.NewAltElse(stmts) + $$ = $1.(*stmt.AltIf).SetElse(_else) + + // save position + yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition($4)) + yylex.(*Parser).positions.AddPosition(_else, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $4)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $6)) + + // save comments + yylex.(*Parser).comments.AddComments(_else, $2.Comments()) + yylex.(*Parser).comments.AddComments(_else, $3.Comments()) + yylex.(*Parser).comments.AddComments($$, $5.Comments()) + yylex.(*Parser).comments.AddComments($$, $6.Comments()) + } ; parameter_list: - non_empty_parameter_list { $$ = $1; } - | /* empty */ { $$ = nil } + non_empty_parameter_list + { $$ = $1; } + | /* empty */ + { $$ = nil } ; non_empty_parameter_list: - parameter { $$ = []node.Node{$1} } - | non_empty_parameter_list ',' parameter { $$ = append($1, $3) } + parameter + { $$ = []node.Node{$1} } + | non_empty_parameter_list ',' parameter + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } ; parameter: - optional_type is_reference is_variadic T_VARIABLE - { - identifier := node.NewIdentifier(strings.TrimLeft($4.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + optional_type is_reference is_variadic T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeft($4.Value, "$")) + variable := expr.NewVariable(identifier) - yylex.(*Parser).comments.AddComments($$, $4.Comments()) - yylex.(*Parser).comments.AddComments($$, $4.Comments()) - - if $1 != nil { - $$ = node.NewParameter($1, variable, nil, $2.value, $3.value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } else if $2.value == true { - $$ = node.NewParameter($1, variable, nil, $2.value, $3.value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($2.token, $4)) - yylex.(*Parser).comments.AddComments($$, $2.token.Comments()) - } else if $3.value == true { - $$ = node.NewParameter($1, variable, nil, $2.value, $3.value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($3.token, $4)) - yylex.(*Parser).comments.AddComments($$, $3.token.Comments()) - } else { - $$ = node.NewParameter($1, variable, nil, $2.value, $3.value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - yylex.(*Parser).comments.AddComments($$, $4.Comments()) + if $1 != nil { + $$ = node.NewParameter($1, variable, nil, $2.value, $3.value) + } else if $2.value { + $$ = node.NewParameter($1, variable, nil, $2.value, $3.value) + } else if $3.value { + $$ = node.NewParameter($1, variable, nil, $2.value, $3.value) + } else { + $$ = node.NewParameter($1, variable, nil, $2.value, $3.value) + } + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + if $1 != nil { + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + } else if $2.value { + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($2.token, $4)) + } else if $3.value { + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($3.token, $4)) + } else { + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + } + + // save comments + if $2.value { + yylex.(*Parser).comments.AddComments($$, $2.token.Comments()) + } + if $3.value { + yylex.(*Parser).comments.AddComments($$, $3.token.Comments()) + } + yylex.(*Parser).comments.AddComments(variable, $4.Comments()) } - } | optional_type is_reference is_variadic T_VARIABLE '=' expr - { - identifier := node.NewIdentifier(strings.TrimLeft($4.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + { + identifier := node.NewIdentifier(strings.TrimLeft($4.Value, "$")) + variable := expr.NewVariable(identifier) + if $1 != nil { + $$ = node.NewParameter($1, variable, $6, $2.value, $3.value) + } else if $2.value == true { + $$ = node.NewParameter($1, variable, $6, $2.value, $3.value) + } else if $3.value == true { + $$ = node.NewParameter($1, variable, $6, $2.value, $3.value) + } else { + $$ = node.NewParameter($1, variable, $6, $2.value, $3.value) + } - yylex.(*Parser).comments.AddComments($$, $4.Comments()) - yylex.(*Parser).comments.AddComments($$, $4.Comments()) + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + if $1 != nil { + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $6)) + } else if $2.value == true { + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($2.token, $6)) + } else if $3.value == true { + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($3.token, $6)) + } else { + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $6)) + } - if $1 != nil { - $$ = node.NewParameter($1, variable, $6, $2.value, $3.value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $6)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } else if $2.value == true { - $$ = node.NewParameter($1, variable, $6, $2.value, $3.value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($2.token, $6)) - yylex.(*Parser).comments.AddComments($$, $2.token.Comments()) - } else if $3.value == true { - $$ = node.NewParameter($1, variable, $6, $2.value, $3.value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($3.token, $6)) - yylex.(*Parser).comments.AddComments($$, $3.token.Comments()) - } else { - $$ = node.NewParameter($1, variable, $6, $2.value, $3.value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $6)) - yylex.(*Parser).comments.AddComments($$, $4.Comments()) + // save comments + if $2.value { + yylex.(*Parser).comments.AddComments($$, $2.token.Comments()) + } + if $3.value { + yylex.(*Parser).comments.AddComments($$, $3.token.Comments()) + } + yylex.(*Parser).comments.AddComments(variable, $4.Comments()) + yylex.(*Parser).comments.AddComments($$, $5.Comments()) } - } ; optional_type: - /* empty */ { $$ = nil } - | type_expr { $$ = $1; } + /* empty */ + { $$ = nil } + | type_expr + { $$ = $1; } ; type_expr: - type { $$ = $1; } + type + { $$ = $1; } | '?' type - { - $$ = node.NewNullable($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = node.NewNullable($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; type: - T_ARRAY - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + T_ARRAY + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_CALLABLE - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | name { $$ = $1; } + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | name + { $$ = $1; } ; return_type: - /* empty */ { $$ = nil } - | ':' type_expr { $$ = $2; } + /* empty */ + { $$ = nil } + | ':' type_expr + { + $$ = $2; + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; argument_list: - '(' ')' { $$ = &nodesWithEndToken{[]node.Node{}, $2} } - | '(' non_empty_argument_list possible_comma ')' { $$ = &nodesWithEndToken{$2, $4} } + '(' ')' + { $$ = &nodesWithEndToken{[]node.Node{}, $2} } + | '(' non_empty_argument_list possible_comma ')' + { $$ = &nodesWithEndToken{$2, $4} } ; non_empty_argument_list: - argument { $$ = []node.Node{$1} } - | non_empty_argument_list ',' argument { $$ = append($1, $3) } + argument + { $$ = []node.Node{$1} } + | non_empty_argument_list ',' argument + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } ; argument: - expr - { - $$ = node.NewArgument($1, false, false) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + expr + { + $$ = node.NewArgument($1, false, false) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) + } | T_ELLIPSIS expr - { - $$ = node.NewArgument($2, true, false) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = node.NewArgument($2, true, false) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; global_var_list: - global_var_list ',' global_var { $$ = append($1, $3); } - | global_var { $$ = []node.Node{$1} } + global_var_list ',' global_var + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } + | global_var + { $$ = []node.Node{$1} } ; global_var: - simple_variable { $$ = $1 } + simple_variable + { $$ = $1 } ; static_var_list: - static_var_list ',' static_var { $$ = append($1, $3) } - | static_var { $$ = []node.Node{$1} } + static_var_list ',' static_var + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } + | static_var + { $$ = []node.Node{$1} } ; static_var: T_VARIABLE { identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) $$ = stmt.NewStaticVar(variable, nil) + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments(identifier, $1.Comments()) + // save comments yylex.(*Parser).comments.AddComments(variable, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) } | T_VARIABLE '=' expr - { - identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = stmt.NewStaticVar(variable, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + { + identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) + variable := expr.NewVariable(identifier) + $$ = stmt.NewStaticVar(variable, $3) - yylex.(*Parser).comments.AddComments(identifier, $1.Comments()) - yylex.(*Parser).comments.AddComments(variable, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments(variable, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } ; class_statement_list: - class_statement_list class_statement { $$ = append($1, $2) } - | /* empty */ { $$ = []node.Node{} } + class_statement_list class_statement + { $$ = append($1, $2) } + | /* empty */ + { $$ = []node.Node{} } ; class_statement: - variable_modifiers property_list ';' - { - $$ = stmt.NewPropertyList($1, $2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).listGetFirstNodeComments($1)) - } + variable_modifiers property_list ';' + { + $$ = stmt.NewPropertyList($1, $2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | method_modifiers T_CONST class_const_list ';' - { - $$ = stmt.NewClassConstList($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition($1, $2, $4)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).listGetFirstNodeComments($1)) - } + { + $$ = stmt.NewClassConstList($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition($1, $2, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | T_USE name_list trait_adaptations - { - $$ = stmt.NewTraitUse($2, $3.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3.endToken)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = stmt.NewTraitUse($2, $3.nodes) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3.endToken)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | method_modifiers T_FUNCTION returns_ref identifier backup_doc_comment '(' parameter_list ')' return_type method_body { name := node.NewIdentifier($4.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) $$ = stmt.NewClassMethod(name, $1, $3.value, $7, $9, $10.nodes, $5) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition($1, $2, $10.endToken)) + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + if $3.value { + yylex.(*Parser).comments.AddComments($$, $3.token.Comments()) + } yylex.(*Parser).comments.AddComments(name, $4.Comments()) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).listGetFirstNodeComments($1)) + yylex.(*Parser).comments.AddComments($$, $6.Comments()) + yylex.(*Parser).comments.AddComments($$, $8.Comments()) } ; name_list: - name { $$ = []node.Node{$1} } - | name_list ',' name { $$ = append($1, $3) } + name + { $$ = []node.Node{$1} } + | name_list ',' name + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } ; trait_adaptations: - ';' { $$ = &nodesWithEndToken{nil, $1} } - | '{' '}' { $$ = &nodesWithEndToken{nil, $2} } - | '{' trait_adaptation_list '}' { $$ = &nodesWithEndToken{$2, $3} } + ';' + { $$ = &nodesWithEndToken{nil, $1} } + | '{' '}' + { $$ = &nodesWithEndToken{nil, $2} } + | '{' trait_adaptation_list '}' + { $$ = &nodesWithEndToken{$2, $3} } ; trait_adaptation_list: - trait_adaptation { $$ = []node.Node{$1} } - | trait_adaptation_list trait_adaptation { $$ = append($1, $2) } + trait_adaptation + { $$ = []node.Node{$1} } + | trait_adaptation_list trait_adaptation + { $$ = append($1, $2) } ; trait_adaptation: - trait_precedence ';' { $$ = $1; } - | trait_alias ';' { $$ = $1; } + trait_precedence ';' + { + $$ = $1; + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | trait_alias ';' + { + $$ = $1; + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } ; trait_precedence: - absolute_trait_method_reference T_INSTEADOF name_list - { - $$ = stmt.NewTraitUsePrecedence($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeNodeListPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + absolute_trait_method_reference T_INSTEADOF name_list + { + $$ = stmt.NewTraitUsePrecedence($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeNodeListPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } ; trait_alias: - trait_method_reference T_AS T_STRING - { - alias := node.NewIdentifier($3.Value) - yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$ = stmt.NewTraitUseAlias($1, nil, alias) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) - - yylex.(*Parser).comments.AddComments(alias, $3.Comments()) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + trait_method_reference T_AS T_STRING + { + alias := node.NewIdentifier($3.Value) + $$ = stmt.NewTraitUseAlias($1, nil, alias) + + // save position + yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments(alias, $3.Comments()) + } | trait_method_reference T_AS reserved_non_modifiers - { - alias := node.NewIdentifier($3.Value) - yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$ = stmt.NewTraitUseAlias($1, nil, alias) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) - - yylex.(*Parser).comments.AddComments(alias, $3.Comments()) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + alias := node.NewIdentifier($3.Value) + $$ = stmt.NewTraitUseAlias($1, nil, alias) + + // save position + yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments(alias, $3.Comments()) + } | trait_method_reference T_AS member_modifier identifier - { - alias := node.NewIdentifier($4.Value) - yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - $$ = stmt.NewTraitUseAlias($1, $3, alias) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - - yylex.(*Parser).comments.AddComments(alias, $4.Comments()) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + alias := node.NewIdentifier($4.Value) + $$ = stmt.NewTraitUseAlias($1, $3, alias) + + // save position + yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments(alias, $4.Comments()) + } | trait_method_reference T_AS member_modifier - { - $$ = stmt.NewTraitUseAlias($1, $3, nil) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = stmt.NewTraitUseAlias($1, $3, nil) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } ; trait_method_reference: - identifier - { - name := node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = stmt.NewTraitMethodRef(nil, name) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - - yylex.(*Parser).comments.AddComments(name, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | absolute_trait_method_reference { $$ = $1; } + identifier + { + name := node.NewIdentifier($1.Value) + $$ = stmt.NewTraitMethodRef(nil, name) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments(name, $1.Comments()) + } + | absolute_trait_method_reference + { $$ = $1; } ; absolute_trait_method_reference: - name T_PAAMAYIM_NEKUDOTAYIM identifier - { - target := node.NewIdentifier($3.Value) - yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$ = stmt.NewTraitMethodRef($1, target) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) - - yylex.(*Parser).comments.AddComments(target, $3.Comments()) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + name T_PAAMAYIM_NEKUDOTAYIM identifier + { + target := node.NewIdentifier($3.Value) + $$ = stmt.NewTraitMethodRef($1, target) + + // save position + yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments(target, $3.Comments()) + } ; method_body: @@ -1328,1041 +2028,1684 @@ method_body: ; variable_modifiers: - non_empty_member_modifiers { $$ = $1; } + non_empty_member_modifiers + { $$ = $1; } | T_VAR - { - modifier := node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition(modifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = []node.Node{modifier} - yylex.(*Parser).comments.AddComments(modifier, $1.Comments()) - } + { + modifier := node.NewIdentifier($1.Value) + $$ = []node.Node{modifier} + + // save position + yylex.(*Parser).positions.AddPosition(modifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments(modifier, $1.Comments()) + } ; method_modifiers: - /* empty */ { $$ = nil } - | non_empty_member_modifiers { $$ = $1 } + /* empty */ + { $$ = nil } + | non_empty_member_modifiers + { $$ = $1 } ; non_empty_member_modifiers: - member_modifier { $$ = []node.Node{$1} } - | non_empty_member_modifiers member_modifier { $$ = append($1, $2) } + member_modifier + { $$ = []node.Node{$1} } + | non_empty_member_modifiers member_modifier + { $$ = append($1, $2) } ; member_modifier: - T_PUBLIC - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + T_PUBLIC + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_PROTECTED - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_PRIVATE - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_STATIC - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_ABSTRACT - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_FINAL - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; property_list: - property_list ',' property { $$ = append($1, $3) } - | property { $$ = []node.Node{$1} } + property_list ',' property + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } + | property + { $$ = []node.Node{$1} } ; property: - T_VARIABLE backup_doc_comment - { - identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = stmt.NewProperty(variable, nil, $2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + T_VARIABLE backup_doc_comment + { + identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) + variable := expr.NewVariable(identifier) + $$ = stmt.NewProperty(variable, nil, $2) - yylex.(*Parser).comments.AddComments(identifier, $1.Comments()) - yylex.(*Parser).comments.AddComments(variable, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments(variable, $1.Comments()) + } | T_VARIABLE '=' expr backup_doc_comment - { - identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = stmt.NewProperty(variable, $3, $4) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + { + identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) + variable := expr.NewVariable(identifier) + $$ = stmt.NewProperty(variable, $3, $4) - yylex.(*Parser).comments.AddComments(identifier, $1.Comments()) - yylex.(*Parser).comments.AddComments(variable, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments(variable, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } ; class_const_list: - class_const_list ',' class_const_decl { $$ = append($1, $3) } - | class_const_decl { $$ = []node.Node{$1} } + class_const_list ',' class_const_decl + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } + | class_const_decl + { $$ = []node.Node{$1} } ; class_const_decl: - identifier '=' expr backup_doc_comment - { - name := node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = stmt.NewConstant(name, $3, $4) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + identifier '=' expr backup_doc_comment + { + name := node.NewIdentifier($1.Value) + $$ = stmt.NewConstant(name, $3, $4) - yylex.(*Parser).comments.AddComments(name, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments(name, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } ; const_decl: - T_STRING '=' expr backup_doc_comment - { - name := node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = stmt.NewConstant(name, $3, $4) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + T_STRING '=' expr backup_doc_comment + { + name := node.NewIdentifier($1.Value) + $$ = stmt.NewConstant(name, $3, $4) - yylex.(*Parser).comments.AddComments(name, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments(name, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } ; echo_expr_list: - echo_expr_list ',' echo_expr { $$ = append($1, $3) } - | echo_expr { $$ = []node.Node{$1} } + echo_expr_list ',' echo_expr + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } + | echo_expr + { $$ = []node.Node{$1} } ; echo_expr: - expr { $$ = $1 } + expr + { $$ = $1 } ; for_exprs: - /* empty */ { $$ = nil; } - | non_empty_for_exprs { $$ = $1; } + /* empty */ + { $$ = nil; } + | non_empty_for_exprs + { $$ = $1; } ; + non_empty_for_exprs: - non_empty_for_exprs ',' expr { $$ = append($1, $3) } - | expr { $$ = []node.Node{$1} } + non_empty_for_exprs ',' expr + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } + | expr + { $$ = []node.Node{$1} } ; anonymous_class: - T_CLASS ctor_arguments extends_from implements_list backup_doc_comment '{' class_statement_list '}' - { - if $2 != nil { - $$ = stmt.NewClass(nil, nil, $2.nodes, $3, $4, $7, $5) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) - } else { - $$ = stmt.NewClass(nil, nil, nil, $3, $4, $7, $5) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) - } + T_CLASS ctor_arguments extends_from implements_list backup_doc_comment '{' class_statement_list '}' + { + if $2 != nil { + $$ = stmt.NewClass(nil, nil, $2.nodes, $3, $4, $7, $5) + } else { + $$ = stmt.NewClass(nil, nil, nil, $3, $4, $7, $5) + } - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + if $3 != nil { + yylex.(*Parser).setCommentsFromChildNode($$, $3) + } + if $4 != nil { + yylex.(*Parser).setCommentsFromChildNode($$, firstNode($4)) + } + yylex.(*Parser).comments.AddComments($$, $6.Comments()) + yylex.(*Parser).comments.AddComments($$, $8.Comments()) + } ; new_expr: - T_NEW class_name_reference ctor_arguments - { - if $3 != nil { - $$ = expr.NewNew($2, $3.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3.endToken)) - } else { - $$ = expr.NewNew($2, nil) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - } + T_NEW class_name_reference ctor_arguments + { + if $3 != nil { + $$ = expr.NewNew($2, $3.nodes) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3.endToken)) + } else { + $$ = expr.NewNew($2, nil) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + } - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_NEW anonymous_class { $$ = expr.NewNew($2, nil) } + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_NEW anonymous_class + { + $$ = expr.NewNew($2, nil) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; expr_without_variable: - T_LIST '(' array_pair_list ')' '=' expr - { - list := expr.NewList($3) - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - $$ = assign.NewAssign(list, $6) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) + T_LIST '(' array_pair_list ')' '=' expr + { + list := expr.NewList($3) + $$ = assign.NewAssign(list, $6) - yylex.(*Parser).comments.AddComments(list, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | '[' array_pair_list ']' '=' expr - { - shortList := expr.NewShortList($2) - yylex.(*Parser).positions.AddPosition(shortList, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - $$ = assign.NewAssign(shortList, $5) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) + // save position + yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) - yylex.(*Parser).comments.AddComments(shortList, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | variable '=' expr - { - $$ = assign.NewAssign($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | variable '=' '&' expr - { - $$ = assign.NewReference($1, $4) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | T_CLONE expr - { - $$ = expr.NewClone($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | variable T_PLUS_EQUAL expr - { - $$ = assign.NewPlus($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | variable T_MINUS_EQUAL expr - { - $$ = assign.NewMinus($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | variable T_MUL_EQUAL expr - { - $$ = assign.NewMul($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | variable T_POW_EQUAL expr - { - $$ = assign.NewPow($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | variable T_DIV_EQUAL expr - { - $$ = assign.NewDiv($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | variable T_CONCAT_EQUAL expr - { - $$ = assign.NewConcat($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | variable T_MOD_EQUAL expr - { - $$ = assign.NewMod($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | variable T_AND_EQUAL expr - { - $$ = assign.NewBitwiseAnd($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | variable T_OR_EQUAL expr - { - $$ = assign.NewBitwiseOr($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | variable T_XOR_EQUAL expr - { - $$ = assign.NewBitwiseXor($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | variable T_SL_EQUAL expr - { - $$ = assign.NewShiftLeft($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | variable T_SR_EQUAL expr - { - $$ = assign.NewShiftRight($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | variable T_INC - { - $$ = expr.NewPostInc($1) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | T_INC variable - { - $$ = expr.NewPreInc($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | variable T_DEC - { - $$ = expr.NewPostDec($1) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | T_DEC variable - { - $$ = expr.NewPreDec($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | expr T_BOOLEAN_OR expr - { - $$ = binary.NewBooleanOr($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_BOOLEAN_AND expr - { - $$ = binary.NewBooleanAnd($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_LOGICAL_OR expr - { - $$ = binary.NewLogicalOr($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_LOGICAL_AND expr - { - $$ = binary.NewLogicalAnd($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_LOGICAL_XOR expr - { - $$ = binary.NewLogicalXor($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr '|' expr - { - $$ = binary.NewBitwiseOr($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr '&' expr - { - $$ = binary.NewBitwiseAnd($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr '^' expr - { - $$ = binary.NewBitwiseXor($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr '.' expr - { - $$ = binary.NewConcat($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr '+' expr - { - $$ = binary.NewPlus($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr '-' expr - { - $$ = binary.NewMinus($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr '*' expr - { - $$ = binary.NewMul($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_POW expr - { - $$ = binary.NewPow($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr '/' expr - { - $$ = binary.NewDiv($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr '%' expr - { - $$ = binary.NewMod($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_SL expr - { - $$ = binary.NewShiftLeft($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_SR expr - { - $$ = binary.NewShiftRight($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | '+' expr %prec T_INC - { - $$ = expr.NewUnaryPlus($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | '-' expr %prec T_INC - { - $$ = expr.NewUnaryMinus($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | '!' expr - { - $$ = expr.NewBooleanNot($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | '~' expr - { - $$ = expr.NewBitwiseNot($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | expr T_IS_IDENTICAL expr - { - $$ = binary.NewIdentical($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_IS_NOT_IDENTICAL expr - { - $$ = binary.NewNotIdentical($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_IS_EQUAL expr - { - $$ = binary.NewEqual($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_IS_NOT_EQUAL expr - { - $$ = binary.NewNotEqual($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr '<' expr - { - $$ = binary.NewSmaller($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_IS_SMALLER_OR_EQUAL expr - { - $$ = binary.NewSmallerOrEqual($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr '>' expr - { - $$ = binary.NewGreater($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_IS_GREATER_OR_EQUAL expr - { - $$ = binary.NewGreaterOrEqual($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_SPACESHIP expr - { - $$ = binary.NewSpaceship($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_INSTANCEOF class_name_reference - { - $$ = expr.NewInstanceOf($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | '(' expr ')' { $$ = $2; } - | new_expr { $$ = $1; } - | expr '?' expr ':' expr - { - $$ = expr.NewTernary($1, $3, $5) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr '?' ':' expr - { - $$ = expr.NewTernary($1, nil, $4) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | expr T_COALESCE expr - { - $$ = binary.NewCoalesce($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | internal_functions_in_yacc { $$ = $1} - | T_INT_CAST expr - { - $$ = cast.NewInt($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_DOUBLE_CAST expr - { - $$ = cast.NewDouble($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_STRING_CAST expr - { - $$ = cast.NewString($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_ARRAY_CAST expr - { - $$ = cast.NewArray($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_OBJECT_CAST expr - { - $$ = cast.NewObject($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_BOOL_CAST expr - { - $$ = cast.NewBool($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_UNSET_CAST expr - { - $$ = cast.NewUnset($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_EXIT exit_expr - { - if (strings.EqualFold($1.Value, "die")) { - $$ = expr.NewDie($2) - } else { - $$ = expr.NewExit($2) + // save comments + yylex.(*Parser).comments.AddComments(list, $1.Comments()) + yylex.(*Parser).comments.AddComments(list, $2.Comments()) + yylex.(*Parser).comments.AddComments(list, $4.Comments()) + yylex.(*Parser).comments.AddComments($$, $5.Comments()) + } + | '[' array_pair_list ']' '=' expr + { + shortList := expr.NewShortList($2) + $$ = assign.NewAssign(shortList, $5) + + // save position + yylex.(*Parser).positions.AddPosition(shortList, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) + + // save comments + yylex.(*Parser).comments.AddComments(shortList, $1.Comments()) + yylex.(*Parser).comments.AddComments(shortList, $3.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } + | variable '=' expr + { + $$ = assign.NewAssign($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | variable '=' '&' expr + { + $$ = assign.NewReference($1, $4) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } + | T_CLONE expr + { + $$ = expr.NewClone($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | variable T_PLUS_EQUAL expr + { + $$ = assign.NewPlus($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | variable T_MINUS_EQUAL expr + { + $$ = assign.NewMinus($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | variable T_MUL_EQUAL expr + { + $$ = assign.NewMul($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | variable T_POW_EQUAL expr + { + $$ = assign.NewPow($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | variable T_DIV_EQUAL expr + { + $$ = assign.NewDiv($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | variable T_CONCAT_EQUAL expr + { + $$ = assign.NewConcat($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | variable T_MOD_EQUAL expr + { + $$ = assign.NewMod($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | variable T_AND_EQUAL expr + { + $$ = assign.NewBitwiseAnd($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | variable T_OR_EQUAL expr + { + $$ = assign.NewBitwiseOr($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | variable T_XOR_EQUAL expr + { + $$ = assign.NewBitwiseXor($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | variable T_SL_EQUAL expr + { + $$ = assign.NewShiftLeft($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | variable T_SR_EQUAL expr + { + $$ = assign.NewShiftRight($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | variable T_INC + { + $$ = expr.NewPostInc($1) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | T_INC variable + { + $$ = expr.NewPreInc($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | variable T_DEC + { + $$ = expr.NewPostDec($1) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | T_DEC variable + { + $$ = expr.NewPreDec($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | expr T_BOOLEAN_OR expr + { + $$ = binary.NewBooleanOr($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_BOOLEAN_AND expr + { + $$ = binary.NewBooleanAnd($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_LOGICAL_OR expr + { + $$ = binary.NewLogicalOr($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_LOGICAL_AND expr + { + $$ = binary.NewLogicalAnd($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_LOGICAL_XOR expr + { + $$ = binary.NewLogicalXor($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr '|' expr + { + $$ = binary.NewBitwiseOr($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr '&' expr + { + $$ = binary.NewBitwiseAnd($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr '^' expr + { + $$ = binary.NewBitwiseXor($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr '.' expr + { + $$ = binary.NewConcat($1, $3) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + } + | expr '+' expr + { + $$ = binary.NewPlus($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr '-' expr + { + $$ = binary.NewMinus($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr '*' expr + { + $$ = binary.NewMul($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_POW expr + { + $$ = binary.NewPow($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr '/' expr + { + $$ = binary.NewDiv($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr '%' expr + { + $$ = binary.NewMod($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_SL expr + { + $$ = binary.NewShiftLeft($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_SR expr + { + $$ = binary.NewShiftRight($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | '+' expr %prec T_INC + { + $$ = expr.NewUnaryPlus($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | '-' expr %prec T_INC + { + $$ = expr.NewUnaryMinus($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | '!' expr + { + $$ = expr.NewBooleanNot($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | '~' expr + { + $$ = expr.NewBitwiseNot($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | expr T_IS_IDENTICAL expr + { + $$ = binary.NewIdentical($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_IS_NOT_IDENTICAL expr + { + $$ = binary.NewNotIdentical($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_IS_EQUAL expr + { + $$ = binary.NewEqual($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_IS_NOT_EQUAL expr + { + $$ = binary.NewNotEqual($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr '<' expr + { + $$ = binary.NewSmaller($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_IS_SMALLER_OR_EQUAL expr + { + $$ = binary.NewSmallerOrEqual($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr '>' expr + { + $$ = binary.NewGreater($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_IS_GREATER_OR_EQUAL expr + { + $$ = binary.NewGreaterOrEqual($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_SPACESHIP expr + { + $$ = binary.NewSpaceship($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | expr T_INSTANCEOF class_name_reference + { + $$ = expr.NewInstanceOf($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | '(' expr ')' + { + $$ = $2; + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } + | new_expr + { $$ = $1; } + | expr '?' expr ':' expr + { + $$ = expr.NewTernary($1, $3, $5) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } + | expr '?' ':' expr + { + $$ = expr.NewTernary($1, nil, $4) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } + | expr T_COALESCE expr + { + $$ = binary.NewCoalesce($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | internal_functions_in_yacc + { $$ = $1} + | T_INT_CAST expr + { + $$ = cast.NewInt($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_DOUBLE_CAST expr + { + $$ = cast.NewDouble($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_STRING_CAST expr + { + $$ = cast.NewString($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_ARRAY_CAST expr + { + $$ = cast.NewArray($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_OBJECT_CAST expr + { + $$ = cast.NewObject($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_BOOL_CAST expr + { + $$ = cast.NewBool($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_UNSET_CAST expr + { + $$ = cast.NewUnset($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_EXIT exit_expr + { + if (strings.EqualFold($1.Value, "die")) { + $$ = expr.NewDie($2) + } else { + $$ = expr.NewExit($2) + } + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) } - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } | '@' expr - { - $$ = expr.NewErrorSuppress($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | scalar { $$ = $1; } + { + $$ = expr.NewErrorSuppress($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | scalar + { $$ = $1; } | '`' backticks_expr '`' - { - $$ = expr.NewShellExec($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewShellExec($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_PRINT expr - { - $$ = expr.NewPrint($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewPrint($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_YIELD - { - $$ = expr.NewYield(nil, nil) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewYield(nil, nil) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_YIELD expr - { - $$ = expr.NewYield(nil, $2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewYield(nil, $2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_YIELD expr T_DOUBLE_ARROW expr - { - $$ = expr.NewYield($2, $4) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewYield($2, $4) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_YIELD_FROM expr - { - $$ = expr.NewYieldFrom($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewYieldFrom($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_FUNCTION returns_ref backup_doc_comment '(' parameter_list ')' lexical_vars return_type '{' inner_statement_list '}' { $$ = expr.NewClosure($5, $7, $8, $10, false, $2.value, $3) + + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $11)) + // save comments yylex.(*Parser).comments.AddComments($$, $1.Comments()) + if $2.value { + yylex.(*Parser).comments.AddComments($$, $2.token.Comments()) + } + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + yylex.(*Parser).comments.AddComments($$, $6.Comments()) + yylex.(*Parser).comments.AddComments($$, $9.Comments()) + yylex.(*Parser).comments.AddComments($$, $11.Comments()) } | T_STATIC T_FUNCTION returns_ref backup_doc_comment '(' parameter_list ')' lexical_vars return_type '{' inner_statement_list '}' { $$ = expr.NewClosure($6, $8, $9, $11, true, $3.value, $4) + + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $12)) + // save comments yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + if $3.value { + yylex.(*Parser).comments.AddComments($$, $3.token.Comments()) + } + yylex.(*Parser).comments.AddComments($$, $5.Comments()) + yylex.(*Parser).comments.AddComments($$, $7.Comments()) + yylex.(*Parser).comments.AddComments($$, $10.Comments()) + yylex.(*Parser).comments.AddComments($$, $12.Comments()) } ; backup_doc_comment: - /* empty */ { $$ = yylex.(*Parser).PhpDocComment; yylex.(*Parser).PhpDocComment = "" } + /* empty */ + { + $$ = yylex.(*Parser).PhpDocComment + yylex.(*Parser).PhpDocComment = "" + } ; returns_ref: - /* empty */ { $$ = boolWithToken{false, nil} } - | '&' { $$ = boolWithToken{true, $1} } + /* empty */ + { $$ = boolWithToken{false, nil} } + | '&' + { $$ = boolWithToken{true, $1} } ; lexical_vars: - /* empty */ { $$ = []node.Node{} } - | T_USE '(' lexical_var_list ')' { $$ = $3; } + /* empty */ + { $$ = []node.Node{} } + | T_USE '(' lexical_var_list ')' + { $$ = $3; } ; lexical_var_list: - lexical_var_list ',' lexical_var { $$ = append($1, $3) } - | lexical_var { $$ = []node.Node{$1} } + lexical_var_list ',' lexical_var + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } + | lexical_var + { $$ = []node.Node{$1} } ; lexical_var: T_VARIABLE - { - identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = expr.NewClosureUse(variable, false) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + { + identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) + variable := expr.NewVariable(identifier) + $$ = expr.NewClosureUse(variable, false) - yylex.(*Parser).comments.AddComments(identifier, $1.Comments()) - yylex.(*Parser).comments.AddComments(variable, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments(variable, $1.Comments()) + } | '&' T_VARIABLE - { - identifier := node.NewIdentifier(strings.TrimLeft($2.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$ = expr.NewClosureUse(variable, true) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + { + identifier := node.NewIdentifier(strings.TrimLeft($2.Value, "$")) + variable := expr.NewVariable(identifier) + $$ = expr.NewClosureUse(variable, true) - yylex.(*Parser).comments.AddComments(identifier, $2.Comments()) - yylex.(*Parser).comments.AddComments(variable, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments(variable, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; function_call: - name argument_list - { - $$ = expr.NewFunctionCall($1, $2.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2.endToken)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + name argument_list + { + $$ = expr.NewFunctionCall($1, $2.nodes) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2.endToken)) + } | class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list - { - $$ = expr.NewStaticCall($1, $3, $4.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4.endToken)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = expr.NewStaticCall($1, $3, $4.nodes) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4.endToken)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list - { - $$ = expr.NewStaticCall($1, $3, $4.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4.endToken)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = expr.NewStaticCall($1, $3, $4.nodes) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4.endToken)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } | callable_expr argument_list - { - $$ = expr.NewFunctionCall($1, $2.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2.endToken)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = expr.NewFunctionCall($1, $2.nodes) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2.endToken)) + } ; class_name: - T_STATIC - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | name { $$ = $1; } + T_STATIC + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | name + { $$ = $1; } ; class_name_reference: - class_name { $$ = $1; } - | new_variable { $$ = $1; } + class_name + { $$ = $1; } + | new_variable + { $$ = $1; } ; exit_expr: - /* empty */ { $$ = nil } - | '(' optional_expr ')' { $$ = $2; } + /* empty */ + { $$ = nil } + | '(' optional_expr ')' + { $$ = $2; } ; backticks_expr: - /* empty */ { $$ = []node.Node{} } - | T_ENCAPSED_AND_WHITESPACE { $$ = []node.Node{scalar.NewEncapsedStringPart($1.Value)} } - | encaps_list { $$ = $1; } + /* empty */ + { $$ = []node.Node{} } + | T_ENCAPSED_AND_WHITESPACE + { $$ = []node.Node{scalar.NewEncapsedStringPart($1.Value)} } + | encaps_list + { $$ = $1; } ; ctor_arguments: - /* empty */ { $$ = nil } - | argument_list { $$ = $1 } + /* empty */ + { $$ = nil } + | argument_list + { $$ = $1 } ; dereferencable_scalar: T_ARRAY '(' array_pair_list ')' - { - $$ = expr.NewArray($3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewArray($3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | '[' array_pair_list ']' - { - $$ = expr.NewShortArray($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewShortArray($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_CONSTANT_ENCAPSED_STRING - { - $$ = scalar.NewString($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = scalar.NewString($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; scalar: - T_LNUMBER - { - $$ = scalar.NewLnumber($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_DNUMBER - { - $$ = scalar.NewDnumber($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_LINE - { - $$ = scalar.NewMagicConstant($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_FILE - { - $$ = scalar.NewMagicConstant($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_DIR - { - $$ = scalar.NewMagicConstant($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_TRAIT_C - { - $$ = scalar.NewMagicConstant($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_METHOD_C - { - $$ = scalar.NewMagicConstant($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_FUNC_C - { - $$ = scalar.NewMagicConstant($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_NS_C - { - $$ = scalar.NewMagicConstant($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_CLASS_C - { - $$ = scalar.NewMagicConstant($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC - { - encapsed := scalar.NewEncapsedStringPart($2.Value) - yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - yylex.(*Parser).comments.AddComments(encapsed, $2.Comments()) + T_LNUMBER + { + $$ = scalar.NewLnumber($1.Value) - $$ = scalar.NewHeredoc($1.Value, []node.Node{encapsed}) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_DNUMBER + { + $$ = scalar.NewDnumber($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_LINE + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_FILE + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_DIR + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_TRAIT_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_METHOD_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_FUNC_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_NS_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_CLASS_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC + { + encapsed := scalar.NewEncapsedStringPart($2.Value) + $$ = scalar.NewHeredoc($1.Value, []node.Node{encapsed}) + + // save position + yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_START_HEREDOC T_END_HEREDOC - { - $$ = scalar.NewHeredoc($1.Value, nil) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = scalar.NewHeredoc($1.Value, nil) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | '"' encaps_list '"' - { - $$ = scalar.NewEncapsed($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = scalar.NewEncapsed($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_START_HEREDOC encaps_list T_END_HEREDOC - { - $$ = scalar.NewHeredoc($1.Value, $2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | dereferencable_scalar { $$ = $1; } - | constant { $$ = $1; } + { + $$ = scalar.NewHeredoc($1.Value, $2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | dereferencable_scalar + { $$ = $1; } + | constant + { $$ = $1; } ; constant: - name - { - $$ = expr.NewConstFetch($1) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + name + { + $$ = expr.NewConstFetch($1) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) + } | class_name T_PAAMAYIM_NEKUDOTAYIM identifier - { - target := node.NewIdentifier($3.Value) - yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$ = expr.NewClassConstFetch($1, target) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + { + target := node.NewIdentifier($3.Value) + $$ = expr.NewClassConstFetch($1, target) - yylex.(*Parser).comments.AddComments(target, $3.Comments()) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + // save position + yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments(target, $3.Comments()) + } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM identifier - { - target := node.NewIdentifier($3.Value) - yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$ = expr.NewClassConstFetch($1, target) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + { + target := node.NewIdentifier($3.Value) + $$ = expr.NewClassConstFetch($1, target) - yylex.(*Parser).comments.AddComments(target, $3.Comments()) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + // save position + yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments(target, $3.Comments()) + } ; expr: - variable { $$ = $1; } - | expr_without_variable { $$ = $1; } + variable + { $$ = $1; } + | expr_without_variable + { $$ = $1; } ; optional_expr: - /* empty */ { $$ = nil } - | expr { $$ = $1; } + /* empty */ + { $$ = nil } + | expr + { $$ = $1; } ; variable_class_name: - dereferencable { $$ = $1; } + dereferencable + { $$ = $1; } ; dereferencable: - variable { $$ = $1; } - | '(' expr ')' { $$ = $2; } - | dereferencable_scalar { $$ = $1; } + variable + { $$ = $1; } + | '(' expr ')' + { + $$ = $2; + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } + | dereferencable_scalar + { $$ = $1; } ; callable_expr: - callable_variable { $$ = $1; } - | '(' expr ')' { $$ = $2; } - | dereferencable_scalar { $$ = $1; } + callable_variable + { $$ = $1; } + | '(' expr ')' + { + $$ = $2; + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } + | dereferencable_scalar + { $$ = $1; } ; callable_variable: - simple_variable { $$ = $1; } + simple_variable + { $$ = $1; } | dereferencable '[' optional_expr ']' - { - $$ = expr.NewArrayDimFetch($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | constant '[' optional_expr ']' - { - $$ = expr.NewArrayDimFetch($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | dereferencable '{' expr '}' - { - $$ = expr.NewArrayDimFetch($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | dereferencable T_OBJECT_OPERATOR property_name argument_list - { - $$ = expr.NewMethodCall($1, $3, $4.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4.endToken)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } - | function_call { $$ = $1; } + { + $$ = expr.NewMethodCall($1, $3, $4.nodes) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4.endToken)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + | function_call + { $$ = $1; } ; variable: - callable_variable { $$ = $1; } - | static_member { $$ = $1; } + callable_variable + { $$ = $1; } + | static_member + { $$ = $1; } | dereferencable T_OBJECT_OPERATOR property_name - { - $$ = expr.NewPropertyFetch($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = expr.NewPropertyFetch($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } ; simple_variable: - T_VARIABLE - { - name := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = expr.NewVariable(name) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - - yylex.(*Parser).comments.AddComments(name, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + T_VARIABLE + { + name := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) + $$ = expr.NewVariable(name) + + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | '$' '{' expr '}' - { - $$ = expr.NewVariable($3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewVariable($3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | '$' simple_variable - { - $$ = expr.NewVariable($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewVariable($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; static_member: - class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable - { - $$ = expr.NewStaticPropertyFetch($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable + { + $$ = expr.NewStaticPropertyFetch($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable - { - $$ = expr.NewStaticPropertyFetch($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = expr.NewStaticPropertyFetch($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } ; new_variable: - simple_variable { $$ = $1 } + simple_variable + { $$ = $1 } | new_variable '[' optional_expr ']' - { - $$ = expr.NewArrayDimFetch($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | new_variable '{' expr '}' - { - $$ = expr.NewArrayDimFetch($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | new_variable T_OBJECT_OPERATOR property_name - { - $$ = expr.NewPropertyFetch($1, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = expr.NewPropertyFetch($1, $3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } | class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable { $$ = expr.NewStaticPropertyFetch($1, $3) + + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) } | new_variable T_PAAMAYIM_NEKUDOTAYIM simple_variable { $$ = expr.NewStaticPropertyFetch($1, $3) + + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) } ; member_name: - identifier - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | '{' expr '}' { $$ = $2; } - | simple_variable { $$ = $1 } + identifier + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | '{' expr '}' + { + $$ = $2; + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } + | simple_variable + { $$ = $1 } ; property_name: - T_STRING - { - $$ = node.NewIdentifier($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | '{' expr '}' { $$ = $2; } - | simple_variable { $$ = $1 } + T_STRING + { + $$ = node.NewIdentifier($1.Value) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | '{' expr '}' + { + $$ = $2; + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } + | simple_variable + { $$ = $1 } ; array_pair_list: @@ -2377,257 +3720,386 @@ array_pair_list: ; possible_array_pair: - /* empty */ { $$ = nil } - | array_pair { $$ = $1; } + /* empty */ + { $$ = nil } + | array_pair + { $$ = $1; } ; non_empty_array_pair_list: non_empty_array_pair_list ',' possible_array_pair - { $$ = append($1, $3) } - | possible_array_pair { $$ = []node.Node{$1} } + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } + | possible_array_pair + { $$ = []node.Node{$1} } ; array_pair: - expr T_DOUBLE_ARROW expr - { - $$ = expr.NewArrayItem($1, $3, false) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + expr T_DOUBLE_ARROW expr + { + $$ = expr.NewArrayItem($1, $3, false) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } | expr - { - $$ = expr.NewArrayItem(nil, $1, false) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = expr.NewArrayItem(nil, $1, false) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) + } | expr T_DOUBLE_ARROW '&' variable - { - $$ = expr.NewArrayItem($1, $4, true) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) - } + { + $$ = expr.NewArrayItem($1, $4, true) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | '&' variable - { - $$ = expr.NewArrayItem(nil, $2, true) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewArrayItem(nil, $2, true) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | expr T_DOUBLE_ARROW T_LIST '(' array_pair_list ')' { // TODO: Cannot use list() as standalone expression list := expr.NewList($5) - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($3, $6)) $$ = expr.NewArrayItem($1, list, false) + + // save position + yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($3, $6)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $6)) + // save comments + yylex.(*Parser).comments.AddComments($$, $2.Comments()) yylex.(*Parser).comments.AddComments(list, $3.Comments()) - yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) + yylex.(*Parser).comments.AddComments(list, $4.Comments()) + yylex.(*Parser).comments.AddComments(list, $6.Comments()) } | T_LIST '(' array_pair_list ')' { // TODO: Cannot use list() as standalone expression list := expr.NewList($3) - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) $$ = expr.NewArrayItem(nil, list, false) + + // save position + yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + // save comments yylex.(*Parser).comments.AddComments(list, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments(list, $2.Comments()) + yylex.(*Parser).comments.AddComments(list, $4.Comments()) } ; encaps_list: - encaps_list encaps_var { $$ = append($1, $2) } + encaps_list encaps_var + { $$ = append($1, $2) } | encaps_list T_ENCAPSED_AND_WHITESPACE - { - encapsed := scalar.NewEncapsedStringPart($2.Value) - yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$ = append($1, encapsed) - yylex.(*Parser).comments.AddComments(encapsed, $2.Comments()) - } - | encaps_var { $$ = []node.Node{$1} } + { + encapsed := scalar.NewEncapsedStringPart($2.Value) + $$ = append($1, encapsed) + + // save position + yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + + // save comments + yylex.(*Parser).comments.AddComments(encapsed, $2.Comments()) + } + | encaps_var + { $$ = []node.Node{$1} } | T_ENCAPSED_AND_WHITESPACE encaps_var - { - encapsed := scalar.NewEncapsedStringPart($1.Value) - yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = []node.Node{encapsed, $2} - yylex.(*Parser).comments.AddComments(encapsed, $1.Comments()) - } + { + encapsed := scalar.NewEncapsedStringPart($1.Value) + $$ = []node.Node{encapsed, $2} + + // save position + yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments(encapsed, $1.Comments()) + } ; encaps_var: - T_VARIABLE - { - name := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = expr.NewVariable(name) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + T_VARIABLE + { + name := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) + $$ = expr.NewVariable(name) - yylex.(*Parser).comments.AddComments(name, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_VARIABLE '[' encaps_var_offset ']' - { - identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = expr.NewArrayDimFetch(variable, $3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + { + identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) + variable := expr.NewVariable(identifier) + $$ = expr.NewArrayDimFetch(variable, $3) - yylex.(*Parser).comments.AddComments(identifier, $1.Comments()) - yylex.(*Parser).comments.AddComments(variable, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments(variable, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | T_VARIABLE T_OBJECT_OPERATOR T_STRING - { - identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - fetch := node.NewIdentifier($3.Value) - yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$ = expr.NewPropertyFetch(variable, fetch) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - - yylex.(*Parser).comments.AddComments(identifier, $1.Comments()) - yylex.(*Parser).comments.AddComments(variable, $1.Comments()) - yylex.(*Parser).comments.AddComments(fetch, $3.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) + variable := expr.NewVariable(identifier) + fetch := node.NewIdentifier($3.Value) + $$ = expr.NewPropertyFetch(variable, fetch) + + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments(variable, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments(fetch, $3.Comments()) + } | T_DOLLAR_OPEN_CURLY_BRACES expr '}' - { - $$ = expr.NewVariable($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewVariable($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' - { - name := node.NewIdentifier($2.Value) - yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$ = expr.NewVariable(name) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + { + name := node.NewIdentifier($2.Value) + $$ = expr.NewVariable(name) - yylex.(*Parser).comments.AddComments(name, $2.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments(name, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' - { - identifier := node.NewIdentifier($2.Value) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - variable := expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$ = expr.NewArrayDimFetch(variable, $4) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) + { + identifier := node.NewIdentifier($2.Value) + variable := expr.NewVariable(identifier) + $$ = expr.NewArrayDimFetch(variable, $4) + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) - yylex.(*Parser).comments.AddComments(identifier, $2.Comments()) - yylex.(*Parser).comments.AddComments(variable, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_CURLY_OPEN variable '}' { $$ = $2; } + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments(variable, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $3.Comments()) + yylex.(*Parser).comments.AddComments($$, $5.Comments()) + yylex.(*Parser).comments.AddComments($$, $6.Comments()) + } + | T_CURLY_OPEN variable '}' + { + $$ = $2; + } ; encaps_var_offset: - T_STRING - { - $$ = scalar.NewString($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | T_NUM_STRING - { - // TODO: add option to handle 64 bit integer - if _, err := strconv.Atoi($1.Value); err == nil { - $$ = scalar.NewLnumber($1.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - } else { + T_STRING + { $$ = scalar.NewString($1.Value) + + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - } - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } - | '-' T_NUM_STRING - { - // TODO: add option to handle 64 bit integer - if _, err := strconv.Atoi($2.Value); err == nil { - lnumber := scalar.NewLnumber($2.Value) - yylex.(*Parser).positions.AddPosition(lnumber, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) - $$ = expr.NewUnaryMinus(lnumber) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) - yylex.(*Parser).comments.AddComments(lnumber, $1.Comments()) - } else { - $2.Value = "-"+$2.Value - $$ = scalar.NewString($2.Value) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) } + | T_NUM_STRING + { + // TODO: add option to handle 64 bit integer + if _, err := strconv.Atoi($1.Value); err == nil { + $$ = scalar.NewLnumber($1.Value) + } else { + $$ = scalar.NewString($1.Value) + } - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } + | '-' T_NUM_STRING + { + var lnumber *scalar.Lnumber + // TODO: add option to handle 64 bit integer + _, err := strconv.Atoi($2.Value); + isInt := err == nil + + if isInt { + lnumber = scalar.NewLnumber($2.Value) + $$ = expr.NewUnaryMinus(lnumber) + } else { + $2.Value = "-"+$2.Value + $$ = scalar.NewString($2.Value) + } + + // save position + if isInt { + yylex.(*Parser).positions.AddPosition(lnumber, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + } + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + if isInt { + yylex.(*Parser).comments.AddComments(lnumber, $2.Comments()) + } else { + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + } + } | T_VARIABLE - { - identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) - yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$ = expr.NewVariable(identifier) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + { + identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) + $$ = expr.NewVariable(identifier) - yylex.(*Parser).comments.AddComments(identifier, $1.Comments()) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + // save position + yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; internal_functions_in_yacc: - T_ISSET '(' isset_variables possible_comma ')' - { - $$ = expr.NewIsset($3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + T_ISSET '(' isset_variables possible_comma ')' + { + $$ = expr.NewIsset($3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + if $4 != nil { + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } + yylex.(*Parser).comments.AddComments($$, $5.Comments()) + } | T_EMPTY '(' expr ')' - { - $$ = expr.NewEmpty($3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewEmpty($3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | T_INCLUDE expr - { - $$ = expr.NewInclude($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewInclude($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_INCLUDE_ONCE expr - { - $$ = expr.NewIncludeOnce($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewIncludeOnce($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_EVAL '(' expr ')' - { - $$ = expr.NewEval($3) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewEval($3) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + yylex.(*Parser).comments.AddComments($$, $2.Comments()) + yylex.(*Parser).comments.AddComments($$, $4.Comments()) + } | T_REQUIRE expr - { - $$ = expr.NewRequire($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewRequire($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } | T_REQUIRE_ONCE expr - { - $$ = expr.NewRequireOnce($2) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - yylex.(*Parser).comments.AddComments($$, $1.Comments()) - } + { + $$ = expr.NewRequireOnce($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).comments.AddComments($$, $1.Comments()) + } ; isset_variables: - isset_variable { $$ = []node.Node{$1} } - | isset_variables ',' isset_variable { $$ = append($1, $3) } + isset_variable + { $$ = []node.Node{$1} } + | isset_variables ',' isset_variable + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).comments.AddComments(lastNode($1), $2.Comments()) + } ; isset_variable: - expr { $$ = $1 } + expr + { $$ = $1 } ; ///////////////////////////////////////////////////////////////////////// diff --git a/scanner/lexer.go b/scanner/lexer.go index 6eba61b..85f2bb2 100644 --- a/scanner/lexer.go +++ b/scanner/lexer.go @@ -370,32 +370,32 @@ const T_MINUS_EQUAL = 57460 // T_MUL_EQUAL token const T_MUL_EQUAL = 57461 +// T_POW_EQUAL token +const T_POW_EQUAL = 57462 + // T_DIV_EQUAL token -const T_DIV_EQUAL = 57462 +const T_DIV_EQUAL = 57463 // T_CONCAT_EQUAL token -const T_CONCAT_EQUAL = 57463 +const T_CONCAT_EQUAL = 57464 // T_MOD_EQUAL token -const T_MOD_EQUAL = 57464 +const T_MOD_EQUAL = 57465 // T_AND_EQUAL token -const T_AND_EQUAL = 57465 +const T_AND_EQUAL = 57466 // T_OR_EQUAL token -const T_OR_EQUAL = 57466 +const T_OR_EQUAL = 57467 // T_XOR_EQUAL token -const T_XOR_EQUAL = 57467 +const T_XOR_EQUAL = 57468 // T_SL_EQUAL token -const T_SL_EQUAL = 57468 +const T_SL_EQUAL = 57469 // T_SR_EQUAL token -const T_SR_EQUAL = 57469 - -// T_POW_EQUAL token -const T_POW_EQUAL = 57470 +const T_SR_EQUAL = 57470 // T_BOOLEAN_OR token const T_BOOLEAN_OR = 57471 @@ -403,32 +403,32 @@ const T_BOOLEAN_OR = 57471 // T_BOOLEAN_AND token const T_BOOLEAN_AND = 57472 -// T_IS_EQUAL token -const T_IS_EQUAL = 57473 - -// T_IS_NOT_EQUAL token -const T_IS_NOT_EQUAL = 57474 - -// T_IS_IDENTICAL token -const T_IS_IDENTICAL = 57475 - -// T_IS_NOT_IDENTICAL token -const T_IS_NOT_IDENTICAL = 57476 - -// T_IS_SMALLER_OR_EQUAL token -const T_IS_SMALLER_OR_EQUAL = 57477 - -// T_IS_GREATER_OR_EQUAL token -const T_IS_GREATER_OR_EQUAL = 57478 +// T_POW token +const T_POW = 57473 // T_SL token -const T_SL = 57479 +const T_SL = 57474 // T_SR token -const T_SR = 57480 +const T_SR = 57475 -// T_POW token -const T_POW = 57481 +// T_IS_IDENTICAL token +const T_IS_IDENTICAL = 57476 + +// T_IS_NOT_IDENTICAL token +const T_IS_NOT_IDENTICAL = 57477 + +// T_IS_EQUAL token +const T_IS_EQUAL = 57478 + +// T_IS_NOT_EQUAL token +const T_IS_NOT_EQUAL = 57479 + +// T_IS_SMALLER_OR_EQUAL token +const T_IS_SMALLER_OR_EQUAL = 57480 + +// T_IS_GREATER_OR_EQUAL token +const T_IS_GREATER_OR_EQUAL = 57481 // Lval parsers yySymType must implement this interface type Lval interface { diff --git a/visitor/dumper_test.go b/visitor/dumper_test.go index 11d07f6..f6bad0f 100644 --- a/visitor/dumper_test.go +++ b/visitor/dumper_test.go @@ -107,8 +107,6 @@ func ExampleDumper() { //| "Stmts": //| [*stmt.Expression] //| "Position": Pos{Line: 8-8 Pos: 124-128}; - //| "Comments": - //| "// some comment\n" //| "Expr": //| [*expr.Variable] //| "Position": Pos{Line: 8-8 Pos: 124-127}; @@ -118,6 +116,4 @@ func ExampleDumper() { //| [*node.Identifier] //| "Position": Pos{Line: 8-8 Pos: 124-127}; //| "Value": var; - //| "Comments": - //| "// some comment\n" }