diff --git a/resources/files/parser.php b/resources/files/parser.php index 81d173d..2e86074 100644 --- a/resources/files/parser.php +++ b/resources/files/parser.php @@ -117,8 +117,8 @@ public function getOutput(): array const YYNOCODE = 131; #define phvolt_TOKENTYPE phvolt_parser_token* const YYSTACKDEPTH = 100; - const YYNSTATE = 365; - const YYNRULE = 158; + const YYNSTATE = 368; + const YYNRULE = 159; const YYERRORSYMBOL = 89; /* since we cant use expressions to initialize these as class @@ -175,549 +175,543 @@ public function getOutput(): array */ static $yy_action = array( /* 0 */ - 67, 322, 56, 52, 53, 65, 42, 57, 41, 60, + 95, 111, 63, 55, 57, 85, 69, 65, 67, 75, /* 10 */ - 61, 62, 63, 58, 59, 44, 43, 51, 49, 47, + 77, 79, 81, 71, 73, 51, 49, 53, 46, 43, /* 20 */ - 54, 37, 55, 190, 273, 274, 33, 64, 223, 8, + 59, 92, 61, 87, 90, 91, 99, 83, 368, 245, /* 30 */ - 190, 273, 274, 33, 64, 345, 44, 43, 51, 49, + 87, 90, 91, 99, 83, 303, 51, 49, 53, 46, /* 40 */ - 47, 54, 37, 55, 190, 273, 274, 33, 64, 186, + 43, 59, 92, 61, 87, 90, 91, 99, 83, 110, /* 50 */ - 357, 344, 183, 324, 175, 67, 96, 56, 52, 53, + 341, 302, 194, 215, 198, 95, 174, 63, 55, 57, /* 60 */ - 65, 42, 57, 41, 60, 61, 62, 63, 58, 59, + 85, 69, 65, 67, 75, 77, 79, 81, 71, 73, /* 70 */ - 44, 43, 51, 49, 47, 54, 37, 55, 190, 273, + 51, 49, 53, 46, 43, 59, 92, 61, 87, 90, /* 80 */ - 274, 33, 64, 92, 3, 67, 319, 56, 52, 53, + 91, 99, 83, 334, 176, 95, 33, 63, 55, 57, /* 90 */ - 65, 42, 57, 41, 60, 61, 62, 63, 58, 59, + 85, 69, 65, 67, 75, 77, 79, 81, 71, 73, /* 100 */ - 44, 43, 51, 49, 47, 54, 37, 55, 190, 273, + 51, 49, 53, 46, 43, 59, 92, 61, 87, 90, /* 110 */ - 274, 33, 64, 67, 334, 56, 52, 53, 65, 42, + 91, 99, 83, 95, 265, 63, 55, 57, 85, 69, /* 120 */ - 57, 41, 60, 61, 62, 63, 58, 59, 44, 43, + 65, 67, 75, 77, 79, 81, 71, 73, 51, 49, /* 130 */ - 51, 49, 47, 54, 37, 55, 190, 273, 274, 33, + 53, 46, 43, 59, 92, 61, 87, 90, 91, 99, /* 140 */ - 64, 94, 14, 49, 47, 54, 37, 55, 190, 273, + 83, 350, 345, 46, 43, 59, 92, 61, 87, 90, /* 150 */ - 274, 33, 64, 235, 89, 320, 175, 350, 67, 75, + 91, 99, 83, 35, 266, 197, 198, 39, 95, 88, /* 160 */ - 56, 52, 53, 65, 42, 57, 41, 60, 61, 62, + 63, 55, 57, 85, 69, 65, 67, 75, 77, 79, /* 170 */ - 63, 58, 59, 44, 43, 51, 49, 47, 54, 37, + 81, 71, 73, 51, 49, 53, 46, 43, 59, 92, /* 180 */ - 55, 190, 273, 274, 33, 64, 67, 1, 56, 52, + 61, 87, 90, 91, 99, 83, 95, 29, 63, 55, /* 190 */ - 53, 65, 42, 57, 41, 60, 61, 62, 63, 58, + 57, 85, 69, 65, 67, 75, 77, 79, 81, 71, /* 200 */ - 59, 44, 43, 51, 49, 47, 54, 37, 55, 190, + 73, 51, 49, 53, 46, 43, 59, 92, 61, 87, /* 210 */ - 273, 274, 33, 64, 67, 271, 56, 52, 53, 65, + 90, 91, 99, 83, 95, 42, 63, 55, 57, 85, /* 220 */ - 42, 57, 41, 60, 61, 62, 63, 58, 59, 44, + 69, 65, 67, 75, 77, 79, 81, 71, 73, 51, /* 230 */ - 43, 51, 49, 47, 54, 37, 55, 190, 273, 274, + 49, 53, 46, 43, 59, 92, 61, 87, 90, 91, /* 240 */ - 33, 64, 37, 55, 190, 273, 274, 33, 64, 351, + 99, 83, 92, 61, 87, 90, 91, 99, 83, 324, /* 250 */ - 352, 353, 354, 355, 356, 217, 221, 195, 193, 323, + 325, 326, 327, 328, 329, 312, 330, 276, 290, 118, /* 260 */ - 232, 275, 349, 269, 2, 67, 68, 56, 52, 53, + 134, 94, 139, 140, 507, 95, 97, 63, 55, 57, /* 270 */ - 65, 42, 57, 41, 60, 61, 62, 63, 58, 59, + 85, 69, 65, 67, 75, 77, 79, 81, 71, 73, /* 280 */ - 44, 43, 51, 49, 47, 54, 37, 55, 190, 273, + 51, 49, 53, 46, 43, 59, 92, 61, 87, 90, /* 290 */ - 274, 33, 64, 67, 295, 56, 52, 53, 65, 42, + 91, 99, 83, 95, 508, 63, 55, 57, 85, 69, /* 300 */ - 57, 41, 60, 61, 62, 63, 58, 59, 44, 43, + 65, 67, 75, 77, 79, 81, 71, 73, 51, 49, /* 310 */ - 51, 49, 47, 54, 37, 55, 190, 273, 274, 33, + 53, 46, 43, 59, 92, 61, 87, 90, 91, 99, /* 320 */ - 64, 121, 299, 66, 297, 232, 122, 503, 181, 297, + 83, 100, 146, 142, 142, 144, 107, 147, 129, 507, /* 330 */ - 270, 71, 122, 282, 294, 179, 298, 281, 282, 205, + 508, 321, 107, 120, 137, 109, 145, 116, 120, 141, /* 340 */ - 296, 180, 276, 281, 282, 296, 67, 182, 56, 52, + 141, 114, 105, 116, 120, 219, 95, 171, 63, 55, /* 350 */ - 53, 65, 42, 57, 41, 60, 61, 62, 63, 58, + 57, 85, 69, 65, 67, 75, 77, 79, 81, 71, /* 360 */ - 59, 44, 43, 51, 49, 47, 54, 37, 55, 190, + 73, 51, 49, 53, 46, 43, 59, 92, 61, 87, /* 370 */ - 273, 274, 33, 64, 67, 4, 56, 52, 53, 65, + 90, 91, 99, 83, 95, 183, 63, 55, 57, 85, /* 380 */ - 42, 57, 41, 60, 61, 62, 63, 58, 59, 44, + 69, 65, 67, 75, 77, 79, 81, 71, 73, 51, /* 390 */ - 43, 51, 49, 47, 54, 37, 55, 190, 273, 274, + 49, 53, 46, 43, 59, 92, 61, 87, 90, 91, /* 400 */ - 33, 64, 67, 317, 56, 52, 53, 65, 42, 57, + 99, 83, 95, 190, 63, 55, 57, 85, 69, 65, /* 410 */ - 41, 60, 61, 62, 63, 58, 59, 44, 43, 51, + 67, 75, 77, 79, 81, 71, 73, 51, 49, 53, /* 420 */ - 49, 47, 54, 37, 55, 190, 273, 274, 33, 64, + 46, 43, 59, 92, 61, 87, 90, 91, 99, 83, /* 430 */ - 121, 72, 39, 157, 108, 99, 122, 184, 121, 504, + 100, 173, 180, 28, 93, 187, 107, 228, 100, 192, /* 440 */ - 314, 315, 282, 294, 194, 282, 282, 290, 282, 321, + 165, 218, 120, 137, 143, 120, 120, 128, 120, 211, /* 450 */ - 282, 292, 316, 67, 318, 56, 52, 53, 65, 42, + 120, 132, 120, 95, 213, 63, 55, 57, 85, 69, /* 460 */ - 57, 41, 60, 61, 62, 63, 58, 59, 44, 43, + 65, 67, 75, 77, 79, 81, 71, 73, 51, 49, /* 470 */ - 51, 49, 47, 54, 37, 55, 190, 273, 274, 33, + 53, 46, 43, 59, 92, 61, 87, 90, 91, 99, /* 480 */ - 64, 67, 291, 56, 52, 53, 65, 42, 57, 41, + 83, 95, 262, 63, 55, 57, 85, 69, 65, 67, /* 490 */ - 60, 61, 62, 63, 58, 59, 44, 43, 51, 49, + 75, 77, 79, 81, 71, 73, 51, 49, 53, 46, /* 500 */ - 47, 54, 37, 55, 190, 273, 274, 33, 64, 204, + 43, 59, 92, 61, 87, 90, 91, 99, 83, 95, /* 510 */ - 333, 95, 67, 330, 56, 52, 53, 65, 42, 57, + 268, 63, 55, 57, 85, 69, 65, 67, 75, 77, /* 520 */ - 41, 60, 61, 62, 63, 58, 59, 44, 43, 51, + 79, 81, 71, 73, 51, 49, 53, 46, 43, 59, /* 530 */ - 49, 47, 54, 37, 55, 190, 273, 274, 33, 64, + 92, 61, 87, 90, 91, 99, 83, 95, 271, 63, /* 540 */ - 67, 335, 56, 52, 53, 65, 42, 57, 41, 60, + 55, 57, 85, 69, 65, 67, 75, 77, 79, 81, /* 550 */ - 61, 62, 63, 58, 59, 44, 43, 51, 49, 47, + 71, 73, 51, 49, 53, 46, 43, 59, 92, 61, /* 560 */ - 54, 37, 55, 190, 273, 274, 33, 64, 67, 336, + 87, 90, 91, 99, 83, 95, 274, 63, 55, 57, /* 570 */ - 56, 52, 53, 65, 42, 57, 41, 60, 61, 62, + 85, 69, 65, 67, 75, 77, 79, 81, 71, 73, /* 580 */ - 63, 58, 59, 44, 43, 51, 49, 47, 54, 37, + 51, 49, 53, 46, 43, 59, 92, 61, 87, 90, /* 590 */ - 55, 190, 273, 274, 33, 64, 67, 337, 56, 52, + 91, 99, 83, 95, 214, 63, 55, 57, 85, 69, /* 600 */ - 53, 65, 42, 57, 41, 60, 61, 62, 63, 58, + 65, 67, 75, 77, 79, 81, 71, 73, 51, 49, /* 610 */ - 59, 44, 43, 51, 49, 47, 54, 37, 55, 190, + 53, 46, 43, 59, 92, 61, 87, 90, 91, 99, /* 620 */ - 273, 274, 33, 64, 67, 13, 56, 52, 53, 65, + 83, 217, 336, 220, 95, 288, 63, 55, 57, 85, /* 630 */ - 42, 57, 41, 60, 61, 62, 63, 58, 59, 44, + 69, 65, 67, 75, 77, 79, 81, 71, 73, 51, /* 640 */ - 43, 51, 49, 47, 54, 37, 55, 190, 273, 274, + 49, 53, 46, 43, 59, 92, 61, 87, 90, 91, /* 650 */ - 33, 64, 67, 15, 56, 52, 53, 65, 42, 57, + 99, 83, 95, 352, 63, 55, 57, 85, 69, 65, /* 660 */ - 41, 60, 61, 62, 63, 58, 59, 44, 43, 51, + 67, 75, 77, 79, 81, 71, 73, 51, 49, 53, /* 670 */ - 49, 47, 54, 37, 55, 190, 273, 274, 33, 64, + 46, 43, 59, 92, 61, 87, 90, 91, 99, 83, /* 680 */ - 67, 210, 56, 52, 53, 65, 42, 57, 41, 60, + 95, 237, 63, 55, 57, 85, 69, 65, 67, 75, /* 690 */ - 61, 62, 63, 58, 59, 44, 43, 51, 49, 47, + 77, 79, 81, 71, 73, 51, 49, 53, 46, 43, /* 700 */ - 54, 37, 55, 190, 273, 274, 36, 64, 524, 245, + 59, 92, 61, 87, 90, 91, 227, 83, 528, 1, /* 710 */ - 16, 341, 247, 248, 249, 250, 251, 252, 253, 254, + 2, 289, 4, 5, 6, 7, 8, 9, 10, 11, /* 720 */ - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, /* 730 */ - 265, 266, 267, 268, 56, 52, 53, 65, 42, 57, + 22, 23, 24, 25, 63, 55, 57, 85, 69, 65, /* 740 */ - 41, 60, 61, 62, 63, 58, 59, 44, 43, 51, + 67, 75, 77, 79, 81, 71, 73, 51, 49, 53, /* 750 */ - 49, 47, 54, 37, 55, 190, 273, 274, 33, 64, + 46, 43, 59, 92, 61, 87, 90, 91, 99, 83, /* 760 */ - 52, 53, 65, 42, 57, 41, 60, 61, 62, 63, + 55, 57, 85, 69, 65, 67, 75, 77, 79, 81, /* 770 */ - 58, 59, 44, 43, 51, 49, 47, 54, 37, 55, + 71, 73, 51, 49, 53, 46, 43, 59, 92, 61, /* 780 */ - 190, 273, 274, 33, 64, 17, 341, 247, 248, 249, + 87, 90, 91, 99, 83, 30, 289, 4, 5, 6, /* 790 */ - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, /* 800 */ - 260, 261, 262, 263, 264, 265, 266, 267, 268, 18, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 36, /* 810 */ - 341, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 289, 4, 5, 6, 7, 8, 9, 10, 11, 12, /* 820 */ - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, /* 830 */ - 266, 267, 268, 19, 341, 247, 248, 249, 250, 251, + 23, 24, 25, 177, 289, 4, 5, 6, 7, 8, /* 840 */ - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, /* 850 */ - 262, 263, 264, 265, 266, 267, 268, 20, 341, 247, + 19, 20, 21, 22, 23, 24, 25, 184, 289, 4, /* 860 */ - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, /* 870 */ - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, /* 880 */ - 268, 21, 341, 247, 248, 249, 250, 251, 252, 253, + 25, 221, 289, 4, 5, 6, 7, 8, 9, 10, /* 890 */ - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, /* 900 */ - 264, 265, 266, 267, 268, 22, 341, 247, 248, 249, + 21, 22, 23, 24, 25, 231, 289, 4, 5, 6, /* 910 */ - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, /* 920 */ - 260, 261, 262, 263, 264, 265, 266, 267, 268, 23, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 239, /* 930 */ - 341, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 289, 4, 5, 6, 7, 8, 9, 10, 11, 12, /* 940 */ - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, /* 950 */ - 266, 267, 268, 24, 341, 247, 248, 249, 250, 251, + 23, 24, 25, 246, 289, 4, 5, 6, 7, 8, /* 960 */ - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, /* 970 */ - 262, 263, 264, 265, 266, 267, 268, 26, 341, 247, + 19, 20, 21, 22, 23, 24, 25, 278, 289, 4, /* 980 */ - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, /* 990 */ - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, /* 1000 */ - 268, 27, 341, 247, 248, 249, 250, 251, 252, 253, + 25, 292, 289, 4, 5, 6, 7, 8, 9, 10, /* 1010 */ - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, /* 1020 */ - 264, 265, 266, 267, 268, 28, 341, 247, 248, 249, + 21, 22, 23, 24, 25, 298, 289, 4, 5, 6, /* 1030 */ - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, /* 1040 */ - 260, 261, 262, 263, 264, 265, 266, 267, 268, 29, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 315, /* 1050 */ - 341, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 289, 4, 5, 6, 7, 8, 9, 10, 11, 12, /* 1060 */ - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, /* 1070 */ - 266, 267, 268, 30, 341, 247, 248, 249, 250, 251, + 23, 24, 25, 337, 289, 4, 5, 6, 7, 8, /* 1080 */ - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, /* 1090 */ - 262, 263, 264, 265, 266, 267, 268, 31, 341, 247, + 19, 20, 21, 22, 23, 24, 25, 346, 289, 4, /* 1100 */ - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, /* 1110 */ - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, /* 1120 */ - 268, 32, 341, 247, 248, 249, 250, 251, 252, 253, + 25, 353, 289, 4, 5, 6, 7, 8, 9, 10, /* 1130 */ - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, /* 1140 */ - 264, 265, 266, 267, 268, 246, 247, 248, 249, 250, + 21, 22, 23, 24, 25, 3, 4, 5, 6, 7, /* 1150 */ - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, /* 1160 */ - 261, 262, 263, 264, 265, 266, 267, 268, 214, 247, + 18, 19, 20, 21, 22, 23, 24, 25, 27, 235, /* 1170 */ - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 32, 34, 40, 170, 172, 41, 111, 181, 169, 188, /* 1180 */ - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 191, 193, 45, 168, 48, 256, 50, 120, 216, 224, /* 1190 */ - 268, 45, 327, 187, 188, 46, 198, 199, 158, 5, + 120, 230, 52, 234, 120, 120, 120, 225, 120, 238, /* 1200 */ - 76, 165, 77, 202, 40, 166, 106, 107, 38, 174, + 242, 236, 296, 243, 120, 250, 252, 260, 263, 249, /* 1210 */ - 282, 203, 325, 282, 6, 170, 326, 282, 282, 282, + 269, 272, 275, 26, 282, 284, 85, 69, 65, 67, /* 1220 */ - 84, 282, 7, 328, 209, 329, 85, 282, 213, 25, + 75, 77, 79, 81, 71, 73, 51, 49, 53, 46, /* 1230 */ - 87, 88, 331, 90, 91, 185, 155, 219, 220, 65, + 43, 59, 92, 61, 87, 90, 91, 99, 83, 360, /* 1240 */ - 42, 57, 41, 60, 61, 62, 63, 58, 59, 44, + 27, 235, 361, 363, 40, 170, 172, 369, 26, 181, /* 1250 */ - 43, 51, 49, 47, 54, 37, 55, 190, 273, 274, + 31, 188, 191, 193, 54, 357, 56, 251, 58, 60, /* 1260 */ - 33, 64, 136, 45, 327, 240, 241, 46, 198, 199, + 216, 253, 115, 259, 62, 131, 120, 254, 120, 225, /* 1270 */ - 173, 154, 76, 150, 77, 202, 40, 171, 148, 167, + 120, 120, 255, 236, 286, 243, 120, 250, 64, 260, /* 1280 */ - 215, 134, 282, 203, 216, 38, 9, 135, 39, 282, + 263, 309, 269, 272, 275, 257, 282, 284, 258, 196, /* 1290 */ - 338, 282, 84, 282, 280, 339, 209, 86, 85, 282, + 120, 259, 27, 235, 38, 66, 40, 170, 172, 277, /* 1300 */ - 213, 172, 87, 88, 228, 90, 91, 185, 340, 219, + 286, 181, 37, 188, 191, 193, 281, 120, 283, 286, /* 1310 */ - 220, 229, 10, 282, 332, 45, 327, 189, 176, 46, + 285, 286, 216, 178, 310, 130, 286, 259, 331, 195, /* 1320 */ - 198, 199, 342, 86, 76, 133, 77, 202, 40, 11, + 185, 225, 222, 291, 232, 236, 259, 243, 259, 250, /* 1330 */ - 282, 343, 86, 278, 86, 203, 137, 347, 207, 86, + 295, 260, 263, 259, 269, 272, 275, 297, 282, 284, /* 1340 */ - 332, 139, 346, 140, 84, 141, 227, 142, 209, 332, + 301, 69, 65, 67, 75, 77, 79, 81, 71, 73, /* 1350 */ - 85, 332, 213, 12, 87, 88, 332, 90, 91, 185, + 51, 49, 53, 46, 43, 59, 92, 61, 87, 90, /* 1360 */ - 348, 219, 220, 98, 42, 57, 41, 60, 61, 62, + 91, 99, 83, 286, 27, 235, 68, 440, 40, 170, /* 1370 */ - 63, 58, 59, 44, 43, 51, 49, 47, 54, 37, + 172, 441, 179, 181, 286, 188, 191, 193, 120, 286, /* 1380 */ - 55, 190, 273, 274, 33, 64, 86, 45, 327, 132, + 259, 286, 135, 286, 216, 286, 306, 304, 308, 240, /* 1390 */ - 358, 46, 198, 199, 359, 200, 76, 86, 77, 202, + 311, 259, 314, 225, 120, 318, 259, 236, 259, 243, /* 1400 */ - 40, 282, 86, 332, 86, 102, 86, 203, 86, 236, + 259, 250, 259, 260, 263, 247, 269, 272, 275, 279, /* 1410 */ - 143, 360, 144, 93, 332, 361, 84, 362, 363, 332, + 282, 284, 321, 320, 131, 323, 27, 235, 209, 333, /* 1420 */ - 209, 332, 85, 332, 213, 332, 87, 88, 145, 90, + 40, 170, 172, 322, 212, 181, 186, 188, 191, 193, /* 1430 */ - 91, 185, 146, 219, 220, 243, 242, 290, 364, 45, + 340, 293, 167, 342, 70, 319, 216, 343, 349, 199, /* 1440 */ - 327, 83, 290, 46, 198, 199, 244, 101, 76, 201, + 201, 203, 205, 207, 120, 225, 120, 356, 286, 236, /* 1450 */ - 77, 202, 40, 290, 147, 230, 290, 156, 290, 203, + 286, 243, 299, 250, 359, 260, 263, 316, 269, 272, /* 1460 */ - 290, 290, 78, 79, 80, 81, 82, 290, 84, 282, + 275, 338, 282, 284, 229, 259, 286, 259, 27, 235, /* 1470 */ - 290, 86, 209, 86, 85, 149, 213, 290, 87, 88, + 286, 362, 40, 170, 172, 364, 347, 181, 365, 188, /* 1480 */ - 151, 90, 91, 185, 152, 219, 220, 290, 332, 86, + 191, 193, 72, 259, 291, 313, 74, 259, 216, 367, /* 1490 */ - 332, 45, 327, 86, 290, 46, 198, 199, 290, 153, + 223, 291, 286, 291, 120, 366, 291, 225, 120, 291, /* 1500 */ - 76, 290, 77, 202, 40, 159, 332, 290, 290, 160, + 291, 236, 291, 243, 291, 250, 291, 260, 263, 259, /* 1510 */ - 332, 203, 290, 206, 290, 86, 290, 282, 290, 290, + 269, 272, 275, 286, 282, 284, 76, 291, 286, 291, /* 1520 */ - 84, 282, 290, 290, 209, 290, 85, 290, 213, 290, + 27, 235, 286, 291, 40, 170, 172, 291, 120, 181, /* 1530 */ - 87, 88, 332, 90, 91, 185, 86, 219, 220, 161, + 259, 188, 191, 193, 78, 259, 291, 286, 291, 259, /* 1540 */ - 290, 86, 290, 45, 327, 86, 290, 46, 198, 199, + 216, 291, 291, 291, 291, 291, 120, 291, 291, 225, /* 1550 */ - 290, 282, 76, 332, 77, 202, 40, 162, 332, 290, + 233, 291, 291, 236, 259, 243, 354, 250, 80, 260, /* 1560 */ - 86, 290, 332, 203, 290, 290, 290, 163, 290, 282, + 263, 291, 269, 272, 275, 291, 282, 284, 82, 291, /* 1570 */ - 290, 290, 84, 208, 290, 290, 209, 332, 85, 282, + 120, 291, 27, 235, 84, 86, 40, 170, 172, 89, /* 1580 */ - 213, 164, 87, 88, 290, 90, 91, 185, 290, 219, + 120, 181, 96, 188, 191, 193, 120, 120, 291, 291, /* 1590 */ - 220, 272, 290, 282, 290, 45, 327, 138, 177, 46, + 98, 120, 216, 291, 120, 291, 102, 291, 104, 291, /* 1600 */ - 198, 199, 109, 282, 76, 131, 77, 202, 40, 282, + 291, 225, 120, 291, 291, 236, 241, 243, 120, 250, /* 1610 */ - 282, 290, 290, 178, 282, 203, 290, 282, 290, 110, + 120, 260, 263, 291, 269, 272, 275, 286, 282, 284, /* 1620 */ - 290, 123, 290, 290, 84, 282, 290, 290, 209, 211, + 119, 291, 291, 291, 27, 235, 175, 182, 40, 170, /* 1630 */ - 85, 282, 213, 282, 87, 88, 290, 90, 91, 185, + 172, 189, 120, 181, 259, 188, 191, 193, 120, 120, /* 1640 */ - 290, 219, 220, 124, 290, 168, 290, 45, 327, 169, + 291, 291, 200, 120, 216, 291, 202, 291, 291, 291, /* 1650 */ - 103, 46, 198, 199, 111, 282, 76, 282, 77, 202, + 204, 291, 291, 225, 120, 291, 291, 236, 120, 243, /* 1660 */ - 40, 282, 282, 290, 290, 112, 282, 203, 290, 125, + 248, 250, 120, 260, 263, 291, 269, 272, 275, 291, /* 1670 */ - 290, 290, 290, 126, 290, 290, 84, 282, 290, 290, + 282, 284, 206, 291, 208, 291, 27, 235, 291, 210, /* 1680 */ - 209, 282, 85, 212, 213, 282, 87, 88, 290, 90, + 40, 170, 172, 226, 120, 181, 120, 188, 191, 193, /* 1690 */ - 91, 185, 290, 219, 220, 127, 290, 128, 290, 45, + 244, 120, 261, 291, 264, 120, 216, 291, 267, 291, /* 1700 */ - 327, 290, 129, 46, 198, 199, 113, 282, 76, 282, + 270, 291, 120, 291, 120, 225, 120, 291, 291, 236, /* 1710 */ - 77, 202, 40, 130, 282, 97, 290, 114, 282, 203, + 120, 243, 120, 250, 291, 260, 263, 291, 269, 272, /* 1720 */ - 290, 115, 290, 104, 290, 282, 290, 282, 84, 282, + 275, 280, 282, 284, 273, 291, 287, 291, 27, 235, /* 1730 */ - 290, 290, 209, 282, 85, 282, 213, 290, 87, 88, + 291, 335, 40, 170, 172, 344, 120, 181, 120, 188, /* 1740 */ - 290, 90, 91, 185, 218, 219, 220, 116, 290, 117, + 191, 193, 351, 120, 291, 291, 291, 120, 216, 291, /* 1750 */ - 290, 45, 327, 290, 118, 46, 198, 199, 119, 282, + 291, 291, 291, 291, 120, 291, 291, 225, 291, 291, /* 1760 */ - 76, 282, 77, 202, 40, 105, 282, 120, 290, 290, + 291, 236, 291, 243, 291, 250, 291, 260, 263, 291, /* 1770 */ - 282, 203, 290, 290, 290, 290, 290, 282, 290, 282, + 269, 272, 275, 294, 282, 284, 291, 291, 291, 291, /* 1780 */ - 84, 290, 290, 290, 209, 290, 85, 290, 213, 290, + 27, 235, 291, 291, 40, 170, 172, 291, 291, 181, /* 1790 */ - 87, 88, 290, 90, 91, 185, 222, 219, 220, 290, + 291, 188, 191, 193, 291, 291, 291, 291, 291, 291, /* 1800 */ - 290, 290, 290, 45, 327, 290, 290, 46, 198, 199, + 216, 291, 291, 291, 291, 291, 291, 291, 291, 225, /* 1810 */ - 290, 290, 76, 290, 77, 202, 40, 290, 290, 290, + 291, 291, 291, 236, 291, 243, 300, 250, 291, 260, /* 1820 */ - 290, 290, 290, 203, 290, 290, 290, 290, 290, 290, + 263, 291, 269, 272, 275, 291, 282, 284, 291, 291, /* 1830 */ - 290, 290, 84, 290, 290, 290, 209, 290, 85, 224, + 291, 291, 27, 235, 291, 291, 40, 170, 172, 291, /* 1840 */ - 213, 290, 87, 88, 290, 90, 91, 185, 290, 219, + 291, 181, 291, 188, 191, 193, 291, 291, 291, 291, /* 1850 */ - 220, 290, 290, 290, 290, 45, 327, 290, 290, 46, + 291, 291, 216, 291, 291, 291, 291, 291, 291, 291, /* 1860 */ - 198, 199, 290, 290, 76, 290, 77, 202, 40, 290, + 291, 225, 291, 291, 291, 236, 305, 243, 291, 250, /* 1870 */ - 290, 290, 290, 290, 290, 203, 290, 290, 290, 290, + 291, 260, 263, 291, 269, 272, 275, 291, 282, 284, /* 1880 */ - 290, 290, 290, 290, 84, 290, 290, 290, 209, 225, + 291, 291, 291, 291, 27, 235, 291, 291, 40, 170, /* 1890 */ - 85, 290, 213, 290, 87, 88, 290, 90, 91, 185, + 172, 291, 291, 181, 291, 188, 191, 193, 291, 291, /* 1900 */ - 290, 219, 220, 290, 290, 290, 290, 45, 327, 290, + 291, 291, 291, 291, 216, 291, 317, 291, 291, 291, /* 1910 */ - 290, 46, 198, 199, 290, 290, 76, 290, 77, 202, + 291, 291, 291, 225, 291, 291, 291, 236, 291, 243, /* 1920 */ - 40, 290, 290, 290, 290, 290, 290, 203, 290, 231, + 291, 250, 291, 260, 263, 291, 269, 272, 275, 291, /* 1930 */ - 290, 290, 290, 290, 290, 290, 84, 290, 290, 290, + 282, 284, 291, 291, 291, 291, 27, 235, 291, 291, /* 1940 */ - 209, 290, 85, 290, 213, 290, 87, 88, 290, 90, + 40, 170, 172, 291, 291, 181, 332, 188, 191, 193, /* 1950 */ - 91, 185, 290, 219, 220, 290, 290, 290, 290, 45, + 291, 291, 291, 291, 291, 291, 216, 291, 291, 291, /* 1960 */ - 327, 290, 290, 46, 198, 199, 290, 290, 76, 233, + 291, 291, 291, 291, 291, 225, 291, 291, 291, 236, /* 1970 */ - 77, 202, 40, 290, 290, 290, 290, 290, 290, 203, + 291, 243, 291, 250, 291, 260, 263, 291, 269, 272, /* 1980 */ - 290, 290, 290, 290, 290, 290, 290, 290, 84, 290, + 275, 291, 282, 284, 291, 291, 291, 291, 27, 235, /* 1990 */ - 290, 290, 209, 290, 85, 290, 213, 290, 87, 88, + 291, 291, 40, 170, 172, 291, 339, 181, 291, 188, /* 2000 */ - 290, 90, 91, 185, 290, 219, 220, 290, 290, 290, + 191, 193, 291, 291, 291, 291, 291, 291, 216, 291, /* 2010 */ - 290, 45, 327, 290, 290, 46, 198, 199, 290, 234, + 291, 291, 291, 291, 291, 291, 291, 225, 291, 291, /* 2020 */ - 76, 290, 77, 202, 40, 290, 290, 290, 290, 290, + 291, 236, 291, 243, 291, 250, 291, 260, 263, 291, /* 2030 */ - 290, 203, 290, 290, 290, 290, 290, 290, 290, 290, + 269, 272, 275, 291, 282, 284, 291, 291, 291, 291, /* 2040 */ - 84, 290, 290, 290, 209, 290, 85, 290, 213, 290, + 27, 235, 291, 291, 40, 170, 172, 291, 348, 181, /* 2050 */ - 87, 88, 290, 90, 91, 185, 290, 219, 220, 290, + 291, 188, 191, 193, 291, 291, 291, 291, 291, 291, /* 2060 */ - 290, 290, 290, 45, 327, 290, 290, 46, 198, 199, + 216, 291, 291, 291, 291, 291, 291, 291, 291, 225, /* 2070 */ - 290, 237, 76, 290, 77, 202, 40, 290, 290, 290, + 291, 291, 291, 236, 291, 243, 291, 250, 291, 260, /* 2080 */ - 290, 290, 290, 203, 290, 290, 290, 290, 290, 290, + 263, 291, 269, 272, 275, 291, 282, 284, 291, 291, /* 2090 */ - 290, 290, 84, 290, 290, 290, 209, 290, 85, 290, + 291, 291, 27, 235, 291, 291, 40, 170, 172, 291, /* 2100 */ - 213, 290, 87, 88, 290, 90, 91, 185, 290, 219, + 355, 181, 291, 188, 191, 193, 291, 291, 291, 291, /* 2110 */ - 220, 290, 290, 290, 290, 45, 327, 290, 290, 46, + 291, 291, 216, 291, 291, 291, 291, 291, 291, 291, /* 2120 */ - 198, 199, 290, 238, 76, 290, 77, 202, 40, 290, + 291, 225, 291, 291, 291, 236, 291, 243, 291, 250, /* 2130 */ - 290, 290, 290, 290, 290, 203, 290, 290, 290, 290, + 291, 260, 263, 291, 269, 272, 275, 291, 282, 284, /* 2140 */ - 290, 290, 290, 290, 84, 290, 290, 290, 209, 290, + 291, 291, 291, 291, 27, 235, 358, 291, 40, 170, /* 2150 */ - 85, 290, 213, 290, 87, 88, 290, 90, 91, 185, + 172, 291, 291, 181, 291, 188, 191, 193, 291, 291, /* 2160 */ - 290, 219, 220, 290, 290, 290, 290, 45, 327, 239, + 291, 291, 291, 291, 216, 291, 291, 291, 291, 291, /* 2170 */ - 290, 46, 198, 199, 290, 290, 76, 290, 77, 202, + 291, 291, 291, 225, 291, 291, 291, 236, 291, 243, /* 2180 */ - 40, 290, 290, 290, 290, 290, 290, 203, 290, 290, + 291, 250, 291, 260, 263, 291, 269, 272, 275, 291, /* 2190 */ - 290, 290, 290, 290, 290, 290, 84, 290, 290, 290, + 282, 284, 291, 291, 291, 291, 27, 235, 291, 291, /* 2200 */ - 209, 290, 85, 290, 213, 290, 87, 88, 290, 90, + 40, 170, 172, 291, 291, 181, 291, 188, 191, 193, /* 2210 */ - 91, 185, 290, 219, 220, 290, 290, 290, 290, 45, + 291, 291, 291, 291, 291, 291, 216, 291, 291, 291, /* 2220 */ - 327, 290, 290, 46, 198, 199, 290, 290, 76, 290, + 291, 291, 291, 291, 291, 225, 291, 291, 291, 236, /* 2230 */ - 77, 202, 40, 290, 290, 290, 290, 290, 290, 203, + 291, 243, 291, 250, 291, 260, 263, 291, 269, 272, /* 2240 */ - 290, 290, 290, 290, 290, 290, 290, 290, 84, 290, + 275, 291, 282, 284, 291, 291, 291, 47, 44, 291, /* 2250 */ - 290, 290, 209, 290, 85, 290, 213, 290, 87, 88, + 106, 291, 101, 291, 291, 103, 291, 47, 44, 291, /* 2260 */ - 290, 90, 91, 185, 290, 219, 220, 290, 290, 290, + 106, 291, 101, 291, 121, 103, 291, 291, 291, 291, /* 2270 */ - 50, 48, 290, 34, 290, 69, 290, 290, 70, 290, + 291, 291, 291, 291, 121, 291, 291, 291, 291, 291, /* 2280 */ - 50, 48, 290, 34, 290, 69, 290, 283, 70, 290, + 122, 123, 124, 125, 126, 127, 291, 291, 291, 291, /* 2290 */ - 290, 290, 290, 290, 290, 290, 290, 283, 290, 290, + 122, 123, 124, 125, 126, 127, 291, 291, 291, 291, /* 2300 */ - 290, 290, 290, 284, 285, 286, 287, 288, 289, 290, + 291, 291, 291, 291, 291, 291, 157, 158, 159, 160, /* 2310 */ - 290, 290, 290, 284, 285, 286, 287, 288, 289, 290, + 161, 162, 163, 112, 291, 291, 150, 151, 152, 153, /* 2320 */ - 290, 290, 290, 290, 290, 290, 290, 290, 290, 307, + 154, 155, 156, 112, 291, 291, 166, 291, 47, 44, /* 2330 */ - 308, 309, 310, 311, 312, 313, 35, 290, 290, 300, + 291, 106, 291, 101, 138, 164, 103, 291, 47, 44, /* 2340 */ - 301, 302, 303, 304, 305, 306, 35, 290, 290, 290, + 291, 106, 291, 101, 291, 121, 103, 291, 291, 291, /* 2350 */ - 290, 50, 48, 290, 34, 290, 69, 290, 290, 70, + 291, 47, 44, 291, 106, 121, 101, 291, 291, 103, /* 2360 */ - 290, 50, 48, 290, 34, 290, 69, 290, 283, 70, + 291, 122, 123, 124, 125, 126, 127, 291, 149, 291, /* 2370 */ - 290, 290, 290, 290, 290, 290, 290, 290, 283, 290, + 291, 122, 123, 124, 125, 126, 127, 291, 291, 291, /* 2380 */ - 290, 290, 293, 290, 284, 192, 286, 287, 288, 289, + 291, 291, 291, 291, 148, 123, 124, 125, 126, 127, /* 2390 */ - 277, 290, 290, 290, 284, 191, 286, 287, 288, 289, + 47, 44, 291, 106, 112, 101, 291, 291, 103, 291, /* 2400 */ - 290, 290, 290, 290, 50, 48, 290, 34, 290, 69, + 291, 291, 291, 291, 112, 291, 291, 121, 291, 291, /* 2410 */ - 290, 290, 70, 290, 290, 290, 290, 35, 290, 290, + 291, 291, 291, 291, 291, 291, 291, 112, 291, 291, /* 2420 */ - 290, 283, 290, 290, 290, 290, 290, 35, 290, 290, + 291, 136, 291, 122, 133, 124, 125, 126, 127, 47, /* 2430 */ - 290, 290, 100, 290, 290, 290, 290, 284, 191, 286, + 44, 291, 106, 291, 101, 291, 291, 103, 291, 291, /* 2440 */ - 287, 288, 289, 50, 48, 290, 34, 290, 69, 50, + 291, 291, 291, 291, 291, 291, 121, 291, 291, 291, /* 2450 */ - 48, 70, 34, 290, 69, 290, 290, 70, 290, 290, + 291, 291, 47, 44, 291, 106, 112, 101, 108, 291, /* 2460 */ - 283, 290, 290, 290, 290, 290, 197, 290, 290, 290, + 103, 291, 122, 117, 124, 125, 126, 127, 291, 121, /* 2470 */ - 35, 279, 290, 290, 226, 290, 284, 192, 286, 287, + 291, 291, 291, 291, 47, 44, 291, 106, 291, 101, /* 2480 */ - 288, 289, 196, 285, 286, 287, 288, 289, 290, 290, + 291, 291, 103, 291, 291, 122, 117, 124, 125, 126, /* 2490 */ - 290, 74, 290, 50, 48, 290, 34, 290, 69, 290, + 127, 121, 291, 291, 291, 112, 47, 44, 291, 106, /* 2500 */ - 73, 70, 290, 50, 48, 290, 34, 290, 69, 35, + 291, 101, 291, 291, 103, 307, 291, 122, 133, 124, /* 2510 */ - 283, 70, 290, 290, 290, 35, 50, 48, 290, 34, + 125, 126, 127, 121, 291, 291, 291, 291, 112, 113, /* 2520 */ - 283, 69, 290, 290, 70, 290, 284, 285, 286, 287, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 122, /* 2530 */ - 288, 289, 290, 283, 290, 290, 284, 285, 286, 287, + 123, 124, 125, 126, 127, 291, 291, 291, 291, 291, /* 2540 */ - 288, 289, 290, 290, 290, 290, 290, 290, 290, 284, + 112, 47, 44, 291, 106, 291, 101, 291, 291, 103, /* 2550 */ - 191, 286, 287, 288, 289, 50, 48, 290, 34, 35, + 291, 47, 44, 291, 106, 291, 101, 291, 121, 103, /* 2560 */ - 69, 290, 290, 70, 290, 290, 290, 290, 290, 35, + 291, 291, 112, 291, 291, 291, 291, 291, 121, 291, /* 2570 */ - 290, 290, 283, 290, 290, 290, 290, 290, 50, 48, + 291, 291, 291, 291, 122, 117, 124, 125, 126, 127, /* 2580 */ - 290, 34, 35, 69, 290, 290, 70, 290, 284, 192, + 291, 291, 291, 291, 122, 133, 124, 125, 126, 127, /* 2590 */ - 286, 287, 288, 289, 290, 283, 290, 290, 290, 290, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, /* 2600 */ - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 291, 291, 291, 291, 291, 291, 291, 112, 291, 291, /* 2610 */ - 290, 284, 285, 286, 287, 288, 289, 290, 290, 290, - /* 2620 */ - 290, 35, 290, 290, 290, 290, 290, 290, 290, 290, - /* 2630 */ - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - /* 2640 */ - 290, 290, 290, 290, 35, + 291, 291, 291, 291, 291, 291, 291, 112, ); static $yy_lookahead = array( /* 0 */ - 3, 38, 5, 6, 7, 8, 9, 10, 11, 12, + 3, 2, 5, 6, 7, 8, 9, 10, 11, 12, /* 10 */ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, /* 20 */ - 23, 24, 25, 26, 27, 28, 29, 30, 124, 32, + 23, 24, 25, 26, 27, 28, 29, 30, 0, 32, /* 30 */ 26, 27, 28, 29, 30, 38, 18, 19, 20, 21, /* 40 */ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 120, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 50, /* 50 */ - 121, 54, 117, 118, 119, 3, 2, 5, 6, 7, + 2, 54, 117, 118, 119, 3, 8, 5, 6, 7, /* 60 */ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, /* 70 */ @@ -737,7 +731,7 @@ public function getOutput(): array /* 140 */ 30, 31, 32, 21, 22, 23, 24, 25, 26, 27, /* 150 */ - 28, 29, 30, 2, 72, 118, 119, 122, 3, 8, + 28, 29, 30, 32, 72, 118, 119, 32, 3, 8, /* 160 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, /* 170 */ @@ -757,9 +751,9 @@ public function getOutput(): array /* 240 */ 29, 30, 24, 25, 26, 27, 28, 29, 30, 54, /* 250 */ - 55, 56, 57, 58, 59, 58, 59, 126, 126, 119, + 55, 56, 57, 58, 59, 120, 121, 58, 59, 4, /* 260 */ - 38, 50, 121, 32, 32, 3, 4, 5, 6, 7, + 4, 50, 126, 50, 50, 3, 4, 5, 6, 7, /* 270 */ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, /* 280 */ @@ -771,11 +765,11 @@ public function getOutput(): array /* 310 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, /* 320 */ - 30, 116, 50, 8, 38, 38, 116, 4, 123, 38, + 30, 116, 126, 38, 38, 4, 116, 50, 123, 4, /* 330 */ - 32, 4, 116, 128, 129, 125, 50, 127, 128, 52, + 4, 38, 116, 128, 129, 125, 50, 127, 128, 54, /* 340 */ - 54, 125, 52, 127, 128, 54, 3, 38, 5, 6, + 54, 125, 52, 127, 128, 52, 3, 32, 5, 6, /* 350 */ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, /* 360 */ @@ -793,45 +787,45 @@ public function getOutput(): array /* 420 */ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, /* 430 */ - 116, 4, 2, 116, 116, 4, 116, 123, 116, 4, + 116, 38, 32, 116, 116, 32, 116, 123, 116, 32, /* 440 */ - 32, 32, 128, 129, 126, 128, 128, 127, 128, 50, + 116, 29, 128, 129, 126, 128, 128, 127, 128, 50, /* 450 */ - 128, 129, 32, 3, 32, 5, 6, 7, 8, 9, + 128, 129, 128, 3, 38, 5, 6, 7, 8, 9, /* 460 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, /* 470 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, /* 480 */ - 30, 3, 52, 5, 6, 7, 8, 9, 10, 11, + 30, 3, 32, 5, 6, 7, 8, 9, 10, 11, /* 490 */ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, /* 500 */ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 38, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 3, /* 510 */ - 32, 29, 3, 63, 5, 6, 7, 8, 9, 10, + 32, 5, 6, 7, 8, 9, 10, 11, 12, 13, /* 520 */ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, /* 530 */ - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 24, 25, 26, 27, 28, 29, 30, 3, 32, 5, /* 540 */ - 3, 32, 5, 6, 7, 8, 9, 10, 11, 12, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /* 550 */ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, /* 560 */ - 23, 24, 25, 26, 27, 28, 29, 30, 3, 32, + 26, 27, 28, 29, 30, 3, 32, 5, 6, 7, /* 570 */ - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, /* 580 */ - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, /* 590 */ - 25, 26, 27, 28, 29, 30, 3, 32, 5, 6, + 28, 29, 30, 3, 119, 5, 6, 7, 8, 9, /* 600 */ - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, /* 610 */ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, /* 620 */ - 27, 28, 29, 30, 3, 32, 5, 6, 7, 8, + 30, 38, 32, 32, 3, 63, 5, 6, 7, 8, /* 630 */ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, /* 640 */ @@ -939,459 +933,529 @@ public function getOutput(): array /* 1150 */ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, /* 1160 */ - 108, 109, 110, 111, 112, 113, 114, 115, 93, 94, + 108, 109, 110, 111, 112, 113, 114, 115, 31, 32, /* 1170 */ - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 33, 34, 35, 36, 37, 116, 2, 40, 116, 42, /* 1180 */ - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 43, 44, 116, 116, 116, 1, 116, 128, 51, 32, /* 1190 */ - 115, 31, 32, 33, 34, 35, 36, 37, 116, 32, + 128, 32, 116, 32, 128, 128, 128, 60, 128, 32, /* 1200 */ - 40, 116, 42, 43, 44, 116, 116, 116, 2, 116, + 32, 64, 124, 66, 128, 68, 94, 70, 71, 32, /* 1210 */ - 128, 51, 32, 128, 32, 116, 32, 128, 128, 128, + 73, 74, 75, 1, 77, 78, 8, 9, 10, 11, /* 1220 */ - 60, 128, 32, 32, 64, 32, 66, 128, 68, 32, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, /* 1230 */ - 70, 71, 32, 73, 74, 75, 1, 77, 78, 8, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 1, /* 1240 */ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 31, 32, 33, 34, 35, 36, 37, 0, 1, 40, /* 1250 */ - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 1, 42, 43, 44, 116, 1, 116, 32, 116, 116, /* 1260 */ - 29, 30, 1, 31, 32, 33, 34, 35, 36, 37, + 51, 1, 88, 79, 116, 2, 128, 69, 128, 60, /* 1270 */ - 116, 1, 40, 1, 42, 43, 44, 116, 1, 116, + 128, 128, 32, 64, 62, 66, 128, 68, 116, 70, /* 1280 */ - 1, 116, 128, 51, 69, 2, 32, 116, 2, 128, + 71, 1, 73, 74, 75, 69, 77, 78, 32, 2, /* 1290 */ - 32, 128, 60, 128, 88, 32, 64, 62, 66, 128, + 128, 79, 31, 32, 33, 116, 35, 36, 37, 32, /* 1300 */ - 68, 116, 70, 71, 1, 73, 74, 75, 32, 77, + 62, 40, 1, 42, 43, 44, 32, 128, 32, 62, /* 1310 */ - 78, 61, 32, 128, 79, 31, 32, 33, 116, 35, + 32, 62, 51, 1, 61, 52, 62, 79, 1, 32, /* 1320 */ - 36, 37, 32, 62, 40, 1, 42, 43, 44, 32, + 1, 60, 1, 32, 1, 64, 79, 66, 79, 68, /* 1330 */ - 128, 32, 62, 50, 62, 51, 1, 32, 52, 62, + 32, 70, 71, 79, 73, 74, 75, 32, 77, 78, /* 1340 */ - 79, 1, 32, 1, 60, 1, 32, 1, 64, 79, + 32, 9, 10, 11, 12, 13, 14, 15, 16, 17, /* 1350 */ - 66, 79, 68, 32, 70, 71, 79, 73, 74, 75, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, /* 1360 */ - 32, 77, 78, 45, 9, 10, 11, 12, 13, 14, + 28, 29, 30, 62, 31, 32, 116, 32, 35, 36, /* 1370 */ - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 37, 32, 39, 40, 62, 42, 43, 44, 128, 62, /* 1380 */ - 25, 26, 27, 28, 29, 30, 62, 31, 32, 116, + 79, 62, 116, 62, 51, 62, 32, 1, 32, 1, /* 1390 */ - 32, 35, 36, 37, 32, 39, 40, 62, 42, 43, + 32, 79, 32, 60, 128, 32, 79, 64, 79, 66, /* 1400 */ - 44, 128, 62, 79, 62, 2, 62, 51, 62, 38, + 79, 68, 79, 70, 71, 1, 73, 74, 75, 1, /* 1410 */ - 1, 32, 1, 8, 79, 32, 60, 32, 32, 79, + 77, 78, 38, 121, 2, 122, 31, 32, 24, 32, /* 1420 */ - 64, 79, 66, 79, 68, 79, 70, 71, 1, 73, + 35, 36, 37, 45, 30, 40, 41, 42, 43, 44, /* 1430 */ - 74, 75, 1, 77, 78, 1, 32, 130, 32, 31, + 32, 1, 116, 38, 116, 2, 51, 8, 32, 45, /* 1440 */ - 32, 24, 130, 35, 36, 37, 33, 30, 40, 41, + 46, 47, 48, 49, 128, 60, 128, 32, 62, 64, /* 1450 */ - 42, 43, 44, 130, 1, 52, 130, 116, 130, 51, + 62, 66, 1, 68, 32, 70, 71, 1, 73, 74, /* 1460 */ - 130, 130, 45, 46, 47, 48, 49, 130, 60, 128, + 75, 1, 77, 78, 52, 79, 62, 79, 31, 32, /* 1470 */ - 130, 62, 64, 62, 66, 1, 68, 130, 70, 71, + 62, 32, 35, 36, 37, 32, 1, 40, 1, 42, /* 1480 */ - 1, 73, 74, 75, 1, 77, 78, 130, 79, 62, + 43, 44, 116, 79, 130, 52, 116, 79, 51, 32, /* 1490 */ - 79, 31, 32, 62, 130, 35, 36, 37, 130, 1, + 53, 130, 62, 130, 128, 33, 130, 60, 128, 130, /* 1500 */ - 40, 130, 42, 43, 44, 116, 79, 130, 130, 116, + 130, 64, 130, 66, 130, 68, 130, 70, 71, 79, /* 1510 */ - 79, 51, 130, 53, 130, 62, 130, 128, 130, 130, + 73, 74, 75, 62, 77, 78, 116, 130, 62, 130, /* 1520 */ - 60, 128, 130, 130, 64, 130, 66, 130, 68, 130, + 31, 32, 62, 130, 35, 36, 37, 130, 128, 40, /* 1530 */ - 70, 71, 79, 73, 74, 75, 62, 77, 78, 116, + 79, 42, 43, 44, 116, 79, 130, 62, 130, 79, /* 1540 */ - 130, 62, 130, 31, 32, 62, 130, 35, 36, 37, + 51, 130, 130, 130, 130, 130, 128, 130, 130, 60, /* 1550 */ - 130, 128, 40, 79, 42, 43, 44, 116, 79, 130, + 61, 130, 130, 64, 79, 66, 1, 68, 116, 70, /* 1560 */ - 62, 130, 79, 51, 130, 130, 130, 116, 130, 128, + 71, 130, 73, 74, 75, 130, 77, 78, 116, 130, /* 1570 */ - 130, 130, 60, 61, 130, 130, 64, 79, 66, 128, + 128, 130, 31, 32, 116, 116, 35, 36, 37, 116, /* 1580 */ - 68, 116, 70, 71, 130, 73, 74, 75, 130, 77, + 128, 40, 116, 42, 43, 44, 128, 128, 130, 130, /* 1590 */ - 78, 116, 130, 128, 130, 31, 32, 116, 116, 35, + 116, 128, 51, 130, 128, 130, 116, 130, 116, 130, /* 1600 */ - 36, 37, 116, 128, 40, 116, 42, 43, 44, 128, + 130, 60, 128, 130, 130, 64, 65, 66, 128, 68, /* 1610 */ - 128, 130, 130, 116, 128, 51, 130, 128, 130, 116, + 128, 70, 71, 130, 73, 74, 75, 62, 77, 78, /* 1620 */ - 130, 116, 130, 130, 60, 128, 130, 130, 64, 65, + 116, 130, 130, 130, 31, 32, 116, 116, 35, 36, /* 1630 */ - 66, 128, 68, 128, 70, 71, 130, 73, 74, 75, + 37, 116, 128, 40, 79, 42, 43, 44, 128, 128, /* 1640 */ - 130, 77, 78, 116, 130, 116, 130, 31, 32, 116, + 130, 130, 116, 128, 51, 130, 116, 130, 130, 130, /* 1650 */ - 116, 35, 36, 37, 116, 128, 40, 128, 42, 43, + 116, 130, 130, 60, 128, 130, 130, 64, 128, 66, /* 1660 */ - 44, 128, 128, 130, 130, 116, 128, 51, 130, 116, + 67, 68, 128, 70, 71, 130, 73, 74, 75, 130, /* 1670 */ - 130, 130, 130, 116, 130, 130, 60, 128, 130, 130, + 77, 78, 116, 130, 116, 130, 31, 32, 130, 116, /* 1680 */ - 64, 128, 66, 67, 68, 128, 70, 71, 130, 73, + 35, 36, 37, 116, 128, 40, 128, 42, 43, 44, /* 1690 */ - 74, 75, 130, 77, 78, 116, 130, 116, 130, 31, + 116, 128, 116, 130, 116, 128, 51, 130, 116, 130, /* 1700 */ - 32, 130, 116, 35, 36, 37, 116, 128, 40, 128, + 116, 130, 128, 130, 128, 60, 128, 130, 130, 64, /* 1710 */ - 42, 43, 44, 116, 128, 116, 130, 116, 128, 51, + 128, 66, 128, 68, 130, 70, 71, 130, 73, 74, /* 1720 */ - 130, 116, 130, 116, 130, 128, 130, 128, 60, 128, + 75, 76, 77, 78, 116, 130, 116, 130, 31, 32, /* 1730 */ - 130, 130, 64, 128, 66, 128, 68, 130, 70, 71, + 130, 116, 35, 36, 37, 116, 128, 40, 128, 42, /* 1740 */ - 130, 73, 74, 75, 76, 77, 78, 116, 130, 116, + 43, 44, 116, 128, 130, 130, 130, 128, 51, 130, /* 1750 */ - 130, 31, 32, 130, 116, 35, 36, 37, 116, 128, + 130, 130, 130, 130, 128, 130, 130, 60, 130, 130, /* 1760 */ - 40, 128, 42, 43, 44, 116, 128, 116, 130, 130, + 130, 64, 130, 66, 130, 68, 130, 70, 71, 130, /* 1770 */ - 128, 51, 130, 130, 130, 130, 130, 128, 130, 128, + 73, 74, 75, 76, 77, 78, 130, 130, 130, 130, /* 1780 */ - 60, 130, 130, 130, 64, 130, 66, 130, 68, 130, + 31, 32, 130, 130, 35, 36, 37, 130, 130, 40, /* 1790 */ - 70, 71, 130, 73, 74, 75, 76, 77, 78, 130, + 130, 42, 43, 44, 130, 130, 130, 130, 130, 130, /* 1800 */ - 130, 130, 130, 31, 32, 130, 130, 35, 36, 37, + 51, 130, 130, 130, 130, 130, 130, 130, 130, 60, /* 1810 */ - 130, 130, 40, 130, 42, 43, 44, 130, 130, 130, + 130, 130, 130, 64, 130, 66, 67, 68, 130, 70, /* 1820 */ - 130, 130, 130, 51, 130, 130, 130, 130, 130, 130, + 71, 130, 73, 74, 75, 130, 77, 78, 130, 130, /* 1830 */ - 130, 130, 60, 130, 130, 130, 64, 130, 66, 67, + 130, 130, 31, 32, 130, 130, 35, 36, 37, 130, /* 1840 */ - 68, 130, 70, 71, 130, 73, 74, 75, 130, 77, + 130, 40, 130, 42, 43, 44, 130, 130, 130, 130, /* 1850 */ - 78, 130, 130, 130, 130, 31, 32, 130, 130, 35, + 130, 130, 51, 130, 130, 130, 130, 130, 130, 130, /* 1860 */ - 36, 37, 130, 130, 40, 130, 42, 43, 44, 130, + 130, 60, 130, 130, 130, 64, 65, 66, 130, 68, /* 1870 */ - 130, 130, 130, 130, 130, 51, 130, 130, 130, 130, + 130, 70, 71, 130, 73, 74, 75, 130, 77, 78, /* 1880 */ - 130, 130, 130, 130, 60, 130, 130, 130, 64, 65, + 130, 130, 130, 130, 31, 32, 130, 130, 35, 36, /* 1890 */ - 66, 130, 68, 130, 70, 71, 130, 73, 74, 75, + 37, 130, 130, 40, 130, 42, 43, 44, 130, 130, /* 1900 */ - 130, 77, 78, 130, 130, 130, 130, 31, 32, 130, + 130, 130, 130, 130, 51, 130, 53, 130, 130, 130, /* 1910 */ - 130, 35, 36, 37, 130, 130, 40, 130, 42, 43, + 130, 130, 130, 60, 130, 130, 130, 64, 130, 66, /* 1920 */ - 44, 130, 130, 130, 130, 130, 130, 51, 130, 53, + 130, 68, 130, 70, 71, 130, 73, 74, 75, 130, /* 1930 */ - 130, 130, 130, 130, 130, 130, 60, 130, 130, 130, + 77, 78, 130, 130, 130, 130, 31, 32, 130, 130, /* 1940 */ - 64, 130, 66, 130, 68, 130, 70, 71, 130, 73, + 35, 36, 37, 130, 130, 40, 41, 42, 43, 44, /* 1950 */ - 74, 75, 130, 77, 78, 130, 130, 130, 130, 31, + 130, 130, 130, 130, 130, 130, 51, 130, 130, 130, /* 1960 */ - 32, 130, 130, 35, 36, 37, 130, 130, 40, 41, + 130, 130, 130, 130, 130, 60, 130, 130, 130, 64, /* 1970 */ - 42, 43, 44, 130, 130, 130, 130, 130, 130, 51, + 130, 66, 130, 68, 130, 70, 71, 130, 73, 74, /* 1980 */ - 130, 130, 130, 130, 130, 130, 130, 130, 60, 130, + 75, 130, 77, 78, 130, 130, 130, 130, 31, 32, /* 1990 */ - 130, 130, 64, 130, 66, 130, 68, 130, 70, 71, + 130, 130, 35, 36, 37, 130, 39, 40, 130, 42, /* 2000 */ - 130, 73, 74, 75, 130, 77, 78, 130, 130, 130, + 43, 44, 130, 130, 130, 130, 130, 130, 51, 130, /* 2010 */ - 130, 31, 32, 130, 130, 35, 36, 37, 130, 39, + 130, 130, 130, 130, 130, 130, 130, 60, 130, 130, /* 2020 */ - 40, 130, 42, 43, 44, 130, 130, 130, 130, 130, + 130, 64, 130, 66, 130, 68, 130, 70, 71, 130, /* 2030 */ - 130, 51, 130, 130, 130, 130, 130, 130, 130, 130, + 73, 74, 75, 130, 77, 78, 130, 130, 130, 130, /* 2040 */ - 60, 130, 130, 130, 64, 130, 66, 130, 68, 130, + 31, 32, 130, 130, 35, 36, 37, 130, 39, 40, /* 2050 */ - 70, 71, 130, 73, 74, 75, 130, 77, 78, 130, + 130, 42, 43, 44, 130, 130, 130, 130, 130, 130, /* 2060 */ - 130, 130, 130, 31, 32, 130, 130, 35, 36, 37, + 51, 130, 130, 130, 130, 130, 130, 130, 130, 60, /* 2070 */ - 130, 39, 40, 130, 42, 43, 44, 130, 130, 130, + 130, 130, 130, 64, 130, 66, 130, 68, 130, 70, /* 2080 */ - 130, 130, 130, 51, 130, 130, 130, 130, 130, 130, + 71, 130, 73, 74, 75, 130, 77, 78, 130, 130, /* 2090 */ - 130, 130, 60, 130, 130, 130, 64, 130, 66, 130, + 130, 130, 31, 32, 130, 130, 35, 36, 37, 130, /* 2100 */ - 68, 130, 70, 71, 130, 73, 74, 75, 130, 77, + 39, 40, 130, 42, 43, 44, 130, 130, 130, 130, /* 2110 */ - 78, 130, 130, 130, 130, 31, 32, 130, 130, 35, + 130, 130, 51, 130, 130, 130, 130, 130, 130, 130, /* 2120 */ - 36, 37, 130, 39, 40, 130, 42, 43, 44, 130, + 130, 60, 130, 130, 130, 64, 130, 66, 130, 68, /* 2130 */ - 130, 130, 130, 130, 130, 51, 130, 130, 130, 130, + 130, 70, 71, 130, 73, 74, 75, 130, 77, 78, /* 2140 */ - 130, 130, 130, 130, 60, 130, 130, 130, 64, 130, + 130, 130, 130, 130, 31, 32, 33, 130, 35, 36, /* 2150 */ - 66, 130, 68, 130, 70, 71, 130, 73, 74, 75, + 37, 130, 130, 40, 130, 42, 43, 44, 130, 130, /* 2160 */ - 130, 77, 78, 130, 130, 130, 130, 31, 32, 33, + 130, 130, 130, 130, 51, 130, 130, 130, 130, 130, /* 2170 */ - 130, 35, 36, 37, 130, 130, 40, 130, 42, 43, + 130, 130, 130, 60, 130, 130, 130, 64, 130, 66, /* 2180 */ - 44, 130, 130, 130, 130, 130, 130, 51, 130, 130, + 130, 68, 130, 70, 71, 130, 73, 74, 75, 130, /* 2190 */ - 130, 130, 130, 130, 130, 130, 60, 130, 130, 130, + 77, 78, 130, 130, 130, 130, 31, 32, 130, 130, /* 2200 */ - 64, 130, 66, 130, 68, 130, 70, 71, 130, 73, + 35, 36, 37, 130, 130, 40, 130, 42, 43, 44, /* 2210 */ - 74, 75, 130, 77, 78, 130, 130, 130, 130, 31, + 130, 130, 130, 130, 130, 130, 51, 130, 130, 130, /* 2220 */ - 32, 130, 130, 35, 36, 37, 130, 130, 40, 130, + 130, 130, 130, 130, 130, 60, 130, 130, 130, 64, /* 2230 */ - 42, 43, 44, 130, 130, 130, 130, 130, 130, 51, + 130, 66, 130, 68, 130, 70, 71, 130, 73, 74, /* 2240 */ - 130, 130, 130, 130, 130, 130, 130, 130, 60, 130, + 75, 130, 77, 78, 130, 130, 130, 21, 22, 130, /* 2250 */ - 130, 130, 64, 130, 66, 130, 68, 130, 70, 71, + 24, 130, 26, 130, 130, 29, 130, 21, 22, 130, /* 2260 */ - 130, 73, 74, 75, 130, 77, 78, 130, 130, 130, + 24, 130, 26, 130, 38, 29, 130, 130, 130, 130, /* 2270 */ - 21, 22, 130, 24, 130, 26, 130, 130, 29, 130, + 130, 130, 130, 130, 38, 130, 130, 130, 130, 130, /* 2280 */ - 21, 22, 130, 24, 130, 26, 130, 38, 29, 130, + 54, 55, 56, 57, 58, 59, 130, 130, 130, 130, /* 2290 */ - 130, 130, 130, 130, 130, 130, 130, 38, 130, 130, + 54, 55, 56, 57, 58, 59, 130, 130, 130, 130, /* 2300 */ - 130, 130, 130, 54, 55, 56, 57, 58, 59, 130, + 130, 130, 130, 130, 130, 130, 80, 81, 82, 83, /* 2310 */ - 130, 130, 130, 54, 55, 56, 57, 58, 59, 130, + 84, 85, 86, 87, 130, 130, 80, 81, 82, 83, /* 2320 */ - 130, 130, 130, 130, 130, 130, 130, 130, 130, 80, + 84, 85, 86, 87, 130, 130, 19, 130, 21, 22, /* 2330 */ - 81, 82, 83, 84, 85, 86, 87, 130, 130, 80, + 130, 24, 130, 26, 4, 18, 29, 130, 21, 22, /* 2340 */ - 81, 82, 83, 84, 85, 86, 87, 130, 130, 130, + 130, 24, 130, 26, 130, 38, 29, 130, 130, 130, /* 2350 */ - 130, 21, 22, 130, 24, 130, 26, 130, 130, 29, + 130, 21, 22, 130, 24, 38, 26, 130, 130, 29, /* 2360 */ - 130, 21, 22, 130, 24, 130, 26, 130, 38, 29, + 130, 54, 55, 56, 57, 58, 59, 130, 38, 130, /* 2370 */ - 130, 130, 130, 130, 130, 130, 130, 130, 38, 130, + 130, 54, 55, 56, 57, 58, 59, 130, 130, 130, /* 2380 */ - 130, 130, 52, 130, 54, 55, 56, 57, 58, 59, + 130, 130, 130, 130, 54, 55, 56, 57, 58, 59, /* 2390 */ - 50, 130, 130, 130, 54, 55, 56, 57, 58, 59, + 21, 22, 130, 24, 87, 26, 130, 130, 29, 130, /* 2400 */ - 130, 130, 130, 130, 21, 22, 130, 24, 130, 26, + 130, 130, 130, 130, 87, 130, 130, 38, 130, 130, /* 2410 */ - 130, 130, 29, 130, 130, 130, 130, 87, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 87, 130, 130, /* 2420 */ - 130, 38, 130, 130, 130, 130, 130, 87, 130, 130, + 130, 52, 130, 54, 55, 56, 57, 58, 59, 21, /* 2430 */ - 130, 130, 4, 130, 130, 130, 130, 54, 55, 56, + 22, 130, 24, 130, 26, 130, 130, 29, 130, 130, /* 2440 */ - 57, 58, 59, 21, 22, 130, 24, 130, 26, 21, + 130, 130, 130, 130, 130, 130, 38, 130, 130, 130, /* 2450 */ - 22, 29, 24, 130, 26, 130, 130, 29, 130, 130, + 130, 130, 21, 22, 130, 24, 87, 26, 50, 130, /* 2460 */ - 38, 130, 130, 130, 130, 130, 38, 130, 130, 130, + 29, 130, 54, 55, 56, 57, 58, 59, 130, 38, /* 2470 */ - 87, 88, 130, 130, 52, 130, 54, 55, 56, 57, + 130, 130, 130, 130, 21, 22, 130, 24, 130, 26, /* 2480 */ - 58, 59, 54, 55, 56, 57, 58, 59, 130, 130, + 130, 130, 29, 130, 130, 54, 55, 56, 57, 58, /* 2490 */ - 130, 19, 130, 21, 22, 130, 24, 130, 26, 130, + 59, 38, 130, 130, 130, 87, 21, 22, 130, 24, /* 2500 */ - 18, 29, 130, 21, 22, 130, 24, 130, 26, 87, + 130, 26, 130, 130, 29, 52, 130, 54, 55, 56, /* 2510 */ - 38, 29, 130, 130, 130, 87, 21, 22, 130, 24, + 57, 58, 59, 38, 130, 130, 130, 130, 87, 88, /* 2520 */ - 38, 26, 130, 130, 29, 130, 54, 55, 56, 57, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 54, /* 2530 */ - 58, 59, 130, 38, 130, 130, 54, 55, 56, 57, + 55, 56, 57, 58, 59, 130, 130, 130, 130, 130, /* 2540 */ - 58, 59, 130, 130, 130, 130, 130, 130, 130, 54, + 87, 21, 22, 130, 24, 130, 26, 130, 130, 29, /* 2550 */ - 55, 56, 57, 58, 59, 21, 22, 130, 24, 87, + 130, 21, 22, 130, 24, 130, 26, 130, 38, 29, /* 2560 */ - 26, 130, 130, 29, 130, 130, 130, 130, 130, 87, + 130, 130, 87, 130, 130, 130, 130, 130, 38, 130, /* 2570 */ - 130, 130, 38, 130, 130, 130, 130, 130, 21, 22, + 130, 130, 130, 130, 54, 55, 56, 57, 58, 59, /* 2580 */ - 130, 24, 87, 26, 130, 130, 29, 130, 54, 55, + 130, 130, 130, 130, 54, 55, 56, 57, 58, 59, /* 2590 */ - 56, 57, 58, 59, 130, 38, 130, 130, 130, 130, - /* 2600 */ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + /* 2600 */ + 130, 130, 130, 130, 130, 130, 130, 87, 130, 130, /* 2610 */ - 130, 54, 55, 56, 57, 58, 59, 130, 130, 130, - /* 2620 */ - 130, 87, 130, 130, 130, 130, 130, 130, 130, 130, - /* 2630 */ - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - /* 2640 */ - 130, 130, 130, 130, 87, + 130, 130, 130, 130, 130, 130, 130, 87, ); - const YY_SHIFT_USE_DFLT = -38; - const YY_SHIFT_MAX = 244; + const YY_SHIFT_USE_DFLT = -4; + const YY_SHIFT_MAX = 367; static $yy_shift_ofst = array( /* 0 */ - 1235, 1261, 1270, 1235, 1272, 1235, 1235, 1277, 1235, 1235, + 1212, 28, 1247, -4, -4, -4, -4, -4, -4, -4, /* 10 */ - 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1324, 1335, 1340, + -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, /* 20 */ - 1342, 1344, 1346, 1409, 1411, 1235, 1427, 1431, 1453, 1474, + -4, -4, -4, -4, -4, -4, 2165, 2475, 155, 1238, /* 30 */ - 1479, 1483, 1498, 2330, 2340, 2383, 2422, 2428, 2495, 2534, + 1249, 1137, 54, -4, 121, 1254, 1301, 1261, 125, -4, /* 40 */ - -37, 2249, 2259, 2472, 2482, 2557, 2557, 2557, 2557, 2557, + 2475, 183, -4, 2475, 2475, 218, 2475, 2475, 218, 2307, /* 50 */ - 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, + 122, 2317, 122, 2475, 122, 2475, 1208, 2475, 1208, 2475, /* 60 */ - 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, + 218, 2475, 4, 2475, 754, 2475, 18, 2226, 18, 2236, /* 70 */ - 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, + 18, 2475, 18, 2475, 18, 2475, 18, 2475, 18, 2475, /* 80 */ - 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, + 18, 2475, 18, 2475, -4, 2475, 1332, 151, 2475, 4, /* 90 */ - 2557, 2557, 2557, 2557, 2557, 287, -37, -3, 195, 286, + -4, -4, 2330, 211, -4, 2475, 262, 2475, 729, 2369, /* 100 */ - 291, -37, 222, 52, 82, 110, 155, 183, 211, 262, + 649, 2475, 4, 2475, 290, -4, 2408, 649, -4, -1, /* 110 */ - 290, 343, 371, 399, 450, 478, 509, 537, 565, 593, + -4, 2520, 2431, -4, 1174, -4, -4, 255, 2475, 649, /* 120 */ - 621, 649, 649, 649, 649, 649, 649, 649, 649, 649, + -4, -4, -4, -4, -4, -4, -4, -4, -4, 1263, /* 130 */ - 677, 729, 754, 1160, 1231, 1231, 1232, 1284, 1355, 1356, + -4, 2530, -4, 256, 2475, 649, -4, -4, 285, 213, /* 140 */ - 1408, 1460, 1512, 1564, 1616, 1668, 1720, 1772, 1824, 1876, + -4, 214, 244, 321, 286, -4, 277, -4, 325, 326, /* 150 */ - 1928, 1980, 2032, 2084, 2136, 2188, 18, 18, 18, 18, + -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, /* 160 */ - 18, 18, 18, 18, 18, 122, 122, 122, 122, 122, + -4, -4, -4, -4, 2475, 122, 2475, 122, 218, 218, /* 170 */ - 218, 218, 218, 218, 218, 1417, 4, 4, 4, 1283, + 315, -4, 393, 48, 2475, 52, 1212, 1312, 1333, 400, /* 180 */ - 1206, 430, 151, 54, 1286, 197, 1403, 231, 232, 298, + -4, 2475, 343, 1317, 1319, 1385, 403, -4, 2475, 371, /* 190 */ - 315, 327, 427, 244, 431, 272, 323, 435, 408, 309, + -4, 407, -4, 416, 1287, -4, 416, -4, 1394, 2475, /* 200 */ - 409, 420, 422, 471, 482, 1167, 1180, 1182, 1184, 643, + 649, 2475, 649, 2475, 649, 2475, 649, 2475, 649, 2475, /* 210 */ - 1190, 1191, 1193, 1197, 1279, 1215, 1200, 1254, 1258, 1263, + 399, -4, 416, -4, -4, -4, 583, 412, 293, 591, /* 220 */ - 1276, 1280, 1290, 1297, 1299, 1310, 1314, 1303, 1250, 1305, + 1212, 1321, 1437, 1157, -4, 2475, 677, 2453, 1412, 1159, /* 230 */ - 1321, 1328, 1318, 1358, 1362, 1371, 1405, 1379, 1383, 1385, + 1212, 1323, 1489, 1161, -4, -4, 643, 1167, 1386, 1388, /* 240 */ - 1386, 1404, 1434, 1413, 1406, + 1541, 1168, -4, 2475, -3, 1212, 1404, 1593, 1177, -4, + /* 250 */ + 1225, 1184, 1260, 1198, 1240, -4, 1216, 1256, -4, -4, + /* 260 */ + 2475, 450, -4, 2475, 82, -4, 2475, 478, -4, 2475, + /* 270 */ + 506, -4, 2475, 534, -4, 199, 1267, 1212, 1408, 1645, + /* 280 */ + 1274, -4, 1276, -4, 1278, -4, 2475, 562, -4, -4, + /* 290 */ + 1291, 1212, 1430, 1697, 1298, -4, 1305, 1212, 1451, 1749, + /* 300 */ + 1308, -4, 1335, 1339, 1801, 1354, -4, 1356, 1280, 1253, + /* 310 */ + 1358, -4, 1433, 1360, 1212, 1456, 1853, 1363, -4, 1374, + /* 320 */ + -4, 1378, 195, -4, -4, -4, -4, -4, -4, -4, + /* 330 */ + -4, 1905, 1387, -4, 2475, 590, 1212, 1460, 1957, 1398, + /* 340 */ + -4, 1395, 1429, 2475, 110, 1212, 1475, 2009, 1406, -4, + /* 350 */ + 2475, 621, 1212, 1555, 2061, 1415, -4, 2113, 1422, -4, + /* 360 */ + 1209, 1439, -4, 1443, 1477, 1462, 1457, -4, ); - const YY_REDUCE_USE_DFLT = -97; - const YY_REDUCE_MAX = 102; + const YY_REDUCE_USE_DFLT = -66; + const YY_REDUCE_MAX = 367; static $yy_reduce_ofst = array( /* 0 */ - 618, 693, 717, 741, 765, 789, 813, 837, 861, 885, + 618, -66, 1052, -66, -66, -66, -66, -66, -66, -66, /* 10 */ - 909, 933, 957, 981, 1005, 1029, 1052, 1052, 1052, 1052, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, /* 20 */ - 1052, 1052, 1052, 1052, 1052, 1075, 1052, 1052, 1052, 1052, + -66, -66, -66, -66, -66, -66, -66, 317, -66, 693, /* 30 */ - 1052, 1052, 1052, 205, 210, 216, 314, 318, 320, 322, + 1052, -66, -66, -66, -66, 717, 1052, -66, -66, -66, /* 40 */ - -65, 317, 1082, 1085, 1089, 1090, 1091, 1093, 1099, 1154, + 1059, -66, -66, 1062, 1066, -66, 1067, 1068, -66, 1070, /* 50 */ - 1161, 1163, 1165, 1171, 1185, 1202, 1273, 1341, 1389, 1393, + -66, 1076, -66, 1138, -66, 1140, -66, 1142, -66, 1143, /* 60 */ - 1423, 1441, 1451, 1465, 1475, 1481, 1482, 1486, 1489, 1497, + -66, 1148, -66, 1162, -66, 1179, -66, 1250, -66, 1318, /* 70 */ - 1503, 1505, 1527, 1529, 1533, 1534, 1538, 1549, 1553, 1557, + -66, 1366, -66, 1370, -66, 1400, -66, 1418, -66, 1442, /* 80 */ - 1579, 1581, 1586, 1590, 1597, 1599, 1601, 1605, 1607, 1631, + -66, 1452, -66, 1458, -66, 1459, -66, -66, 1463, -66, /* 90 */ - 1633, 1638, 1642, 1649, 1651, -71, 37, -96, 35, 131, + -66, -66, 318, -66, -66, 1466, -66, 1474, -66, 205, /* 100 */ - 132, 140, 141, + -66, 1480, -66, 1482, -66, -66, 210, -66, -66, -66, + /* 110 */ + -66, 320, 216, -66, -66, -66, -66, -66, 1504, -66, + /* 120 */ + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + /* 130 */ + -66, 322, -66, -66, 1266, -66, -66, -66, 136, -66, + /* 140 */ + -66, -66, -66, -66, 196, -66, -66, -66, -66, -66, + /* 150 */ + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + /* 160 */ + -66, -66, -66, -66, 324, -66, 1316, -66, -66, -66, + /* 170 */ + -66, -66, -66, -66, 1510, -66, 741, 1052, -66, -66, + /* 180 */ + -66, 1511, -66, 765, 1052, -66, -66, -66, 1515, -66, + /* 190 */ + -66, -66, -66, -65, -66, -66, 37, -66, -66, 1526, + /* 200 */ + -66, 1530, -66, 1534, -66, 1556, -66, 1558, -66, 1563, + /* 210 */ + -66, -66, 475, -66, -66, -66, -66, -66, 135, -66, + /* 220 */ + 789, 1052, -66, -66, -66, 1567, -66, 314, -66, -66, + /* 230 */ + 813, 1052, -66, -66, -66, -66, -66, -66, 837, 1052, + /* 240 */ + -66, -66, -66, 1574, 1078, 861, 1052, -66, -66, -66, + /* 250 */ + -66, 1112, -66, -66, -66, -66, -66, -66, -66, -66, + /* 260 */ + 1576, -66, -66, 1578, -66, -66, 1582, -66, -66, 1584, + /* 270 */ + -66, -66, 1608, -66, -66, -66, -66, 885, 1052, -66, + /* 280 */ + -66, -66, -66, -66, -66, -66, 1610, -66, -66, -66, + /* 290 */ + -66, 909, 1052, -66, -66, -66, -66, 933, 1052, -66, + /* 300 */ + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + /* 310 */ + -66, -66, -66, -66, 957, 1052, -66, -66, -66, 1292, + /* 320 */ + -66, -66, 1293, -66, -66, -66, -66, -66, -66, -66, + /* 330 */ + -66, -66, -66, -66, 1615, -66, 981, 1052, -66, -66, + /* 340 */ + -66, -66, -66, 1619, -66, 1005, 1052, -66, -66, -66, + /* 350 */ + 1626, -66, 1029, 1052, -66, -66, -66, -66, -66, -66, + /* 360 */ + -66, -66, -66, -66, -66, -66, -66, -66, ); static $yy_default = array( /* 0 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 527, 527, 527, 370, 372, 373, 374, 375, 376, 377, /* 10 */ - 523, 523, 523, 523, 523, 523, 366, 523, 523, 523, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, /* 20 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 388, 389, 390, 391, 392, 393, 527, 527, 527, 527, /* 30 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 527, 527, 527, 394, 527, 527, 527, 527, 527, 396, /* 40 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 527, 527, 399, 527, 527, 454, 527, 527, 455, 527, /* 50 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 458, 527, 460, 527, 462, 527, 463, 527, 464, 527, /* 60 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 465, 527, 466, 527, 467, 527, 468, 527, 484, 527, /* 70 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 483, 527, 485, 527, 486, 527, 487, 527, 488, 527, /* 80 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 489, 527, 490, 527, 491, 527, 492, 527, 527, 493, /* 90 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 495, 496, 527, 527, 502, 527, 527, 527, 503, 527, /* 100 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 518, 527, 494, 527, 527, 497, 527, 512, 498, 527, /* 110 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 499, 527, 527, 500, 527, 501, 510, 522, 527, 511, /* 120 */ - 523, 514, 508, 507, 515, 409, 410, 411, 412, 413, + 513, 520, 521, 522, 523, 524, 525, 526, 509, 527, /* 130 */ - 523, 499, 463, 523, 459, 460, 523, 523, 488, 523, + 514, 527, 516, 522, 527, 519, 515, 517, 527, 527, /* 140 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 504, 527, 527, 527, 527, 505, 527, 506, 521, 520, /* 150 */ - 523, 523, 523, 523, 523, 523, 464, 480, 479, 481, + 470, 472, 474, 476, 478, 480, 482, 469, 471, 473, /* 160 */ - 482, 483, 484, 485, 486, 454, 456, 458, 457, 455, + 475, 477, 479, 481, 527, 461, 527, 459, 457, 456, /* 170 */ - 450, 451, 461, 453, 452, 523, 462, 489, 490, 523, + 527, 400, 527, 527, 527, 527, 527, 527, 527, 527, /* 180 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 401, 527, 527, 527, 527, 527, 527, 405, 527, 527, /* 190 */ - 523, 518, 518, 523, 523, 523, 517, 516, 523, 523, + 407, 527, 408, 527, 527, 409, 527, 410, 527, 527, /* 200 */ - 523, 523, 523, 523, 523, 523, 523, 510, 523, 523, + 412, 527, 413, 527, 414, 527, 415, 527, 416, 527, /* 210 */ - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 527, 418, 527, 417, 419, 411, 527, 527, 527, 527, /* 220 */ - 523, 523, 523, 523, 523, 523, 511, 523, 523, 523, + 527, 527, 527, 527, 420, 527, 527, 527, 527, 514, /* 230 */ - 523, 523, 421, 523, 523, 523, 523, 523, 523, 523, + 527, 527, 527, 527, 432, 434, 527, 527, 527, 527, /* 240 */ - 523, 523, 523, 523, 523, 365, 367, 369, 370, 371, + 527, 527, 436, 527, 527, 527, 527, 527, 527, 438, /* 250 */ - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 527, 527, 527, 527, 527, 442, 527, 527, 443, 453, /* 260 */ - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 527, 527, 444, 527, 527, 445, 527, 527, 446, 527, /* 270 */ - 393, 396, 487, 491, 492, 498, 493, 494, 495, 496, + 527, 447, 527, 527, 448, 527, 527, 527, 527, 527, /* 280 */ - 497, 506, 509, 516, 517, 518, 519, 520, 521, 522, + 527, 449, 527, 451, 527, 452, 527, 527, 435, 371, /* 290 */ - 505, 510, 512, 511, 513, 500, 503, 504, 501, 502, + 527, 527, 527, 527, 527, 450, 527, 527, 527, 527, /* 300 */ - 466, 468, 470, 472, 474, 476, 478, 465, 467, 469, + 527, 439, 527, 527, 527, 527, 437, 515, 527, 527, /* 310 */ - 471, 473, 475, 477, 397, 398, 402, 404, 405, 406, + 527, 433, 527, 527, 527, 527, 527, 527, 421, 527, /* 320 */ - 407, 415, 414, 416, 408, 417, 429, 431, 433, 435, + 422, 424, 527, 425, 426, 427, 428, 429, 430, 431, /* 330 */ - 432, 439, 449, 440, 441, 442, 443, 444, 445, 447, + 423, 527, 527, 406, 527, 527, 527, 527, 527, 527, /* 340 */ - 448, 368, 446, 436, 437, 438, 434, 430, 418, 419, + 402, 527, 527, 527, 527, 527, 527, 527, 527, 403, /* 350 */ - 422, 423, 424, 425, 426, 427, 428, 420, 403, 399, + 527, 527, 527, 527, 527, 527, 404, 527, 527, 397, /* 360 */ - 400, 401, 394, 392, 395, + 527, 527, 395, 527, 527, 527, 527, 398, ); /* The next table maps tokens into fallback tokens. If a construct @@ -1454,7 +1518,7 @@ function phvolt_Trace(/* stream */ $TraceFILE, string $zTracePrompt = '') 'DOUBLE', 'NULL', 'FALSE', 'TRUE', 'CALL', 'ENDCALL', 'OPEN_EDELIMITER', 'CLOSE_EDELIMITER', 'BLOCK', 'ENDBLOCK', 'CACHE', 'ENDCACHE', - 'RAW', 'ENDRAW', 'EXTENDS', 'INCLUDE', + 'VERBATIM', 'ENDVERBATIM', 'EXTENDS', 'INCLUDE', 'WITH', 'DO', 'RETURN', 'AUTOESCAPE', 'ENDAUTOESCAPE', 'BREAK', 'CONTINUE', 'RAW_FRAGMENT', 'DEFINED', 'EMPTY', 'EVEN', 'ODD', @@ -1464,7 +1528,7 @@ function phvolt_Trace(/* stream */ $TraceFILE, string $zTracePrompt = '') 'elseif_statement', 'elsefor_statement', 'for_statement', 'switch_statement', 'case_clause', 'set_statement', 'echo_statement', 'block_statement', 'cache_statement', 'extends_statement', 'include_statement', 'do_statement', - 'return_statement', 'autoescape_statement', 'raw_statement', 'break_statement', + 'return_statement', 'autoescape_statement', 'verbatim_statement', 'break_statement', 'continue_statement', 'macro_statement', 'empty_statement', 'macro_call_statement', 'expr', 'set_assignments', 'set_assignment', 'assignable_expr', 'macro_parameters', 'macro_parameter', 'macro_parameter_default', 'argument_list', @@ -1475,322 +1539,165 @@ function phvolt_Trace(/* stream */ $TraceFILE, string $zTracePrompt = '') /* For tracing reduce actions, the names of all rules are required. */ static $yyRuleName = array( - /* 0 */ - "program ::= volt_language", - /* 1 */ - "volt_language ::= statement_list", - /* 2 */ - "statement_list ::= statement_list statement", - /* 3 */ - "statement_list ::= statement", - /* 4 */ - "statement ::= raw_fragment", - /* 5 */ - "statement ::= if_statement", - /* 6 */ - "statement ::= elseif_statement", - /* 7 */ - "statement ::= elsefor_statement", - /* 8 */ - "statement ::= for_statement", - /* 9 */ - "statement ::= switch_statement", - /* 10 */ - "statement ::= case_clause", - /* 11 */ - "statement ::= set_statement", - /* 12 */ - "statement ::= echo_statement", - /* 13 */ - "statement ::= block_statement", - /* 14 */ - "statement ::= cache_statement", - /* 15 */ - "statement ::= extends_statement", - /* 16 */ - "statement ::= include_statement", - /* 17 */ - "statement ::= do_statement", - /* 18 */ - "statement ::= return_statement", - /* 19 */ - "statement ::= autoescape_statement", - /* 20 */ - "statement ::= raw_statement", - /* 21 */ - "statement ::= break_statement", - /* 22 */ - "statement ::= continue_statement", - /* 23 */ - "statement ::= macro_statement", - /* 24 */ - "statement ::= empty_statement", - /* 25 */ - "statement ::= macro_call_statement", - /* 26 */ - "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDIF CLOSE_DELIMITER", - /* 27 */ - "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER OPEN_DELIMITER ENDIF CLOSE_DELIMITER", - /* 28 */ - "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ELSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDIF CLOSE_DELIMITER", - /* 29 */ - "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ELSE CLOSE_DELIMITER OPEN_DELIMITER ENDIF CLOSE_DELIMITER", - /* 30 */ - "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER OPEN_DELIMITER ELSE CLOSE_DELIMITER OPEN_DELIMITER ENDIF CLOSE_DELIMITER", - /* 31 */ - "elseif_statement ::= OPEN_DELIMITER ELSEIF expr CLOSE_DELIMITER", - /* 32 */ - "elsefor_statement ::= OPEN_DELIMITER ELSEFOR CLOSE_DELIMITER", - /* 33 */ - "for_statement ::= OPEN_DELIMITER FOR IDENTIFIER IN expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER", - /* 34 */ - "for_statement ::= OPEN_DELIMITER FOR IDENTIFIER IN expr IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER", - /* 35 */ - "for_statement ::= OPEN_DELIMITER FOR IDENTIFIER COMMA IDENTIFIER IN expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER", - /* 36 */ - "for_statement ::= OPEN_DELIMITER FOR IDENTIFIER COMMA IDENTIFIER IN expr IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER", - /* 37 */ - "switch_statement ::= OPEN_DELIMITER SWITCH expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDSWITCH CLOSE_DELIMITER", - /* 38 */ - "switch_statement ::= OPEN_DELIMITER SWITCH expr CLOSE_DELIMITER OPEN_DELIMITER ENDSWITCH CLOSE_DELIMITER", - /* 39 */ - "case_clause ::= OPEN_DELIMITER CASE expr CLOSE_DELIMITER", - /* 40 */ - "case_clause ::= OPEN_DELIMITER DEFAULT CLOSE_DELIMITER", - /* 41 */ - "set_statement ::= OPEN_DELIMITER SET set_assignments CLOSE_DELIMITER", - /* 42 */ - "set_assignments ::= set_assignments COMMA set_assignment", - /* 43 */ - "set_assignments ::= set_assignment", - /* 44 */ - "set_assignment ::= assignable_expr ASSIGN expr", - /* 45 */ - "set_assignment ::= assignable_expr ADD_ASSIGN expr", - /* 46 */ - "set_assignment ::= assignable_expr SUB_ASSIGN expr", - /* 47 */ - "set_assignment ::= assignable_expr MUL_ASSIGN expr", - /* 48 */ - "set_assignment ::= assignable_expr DIV_ASSIGN expr", - /* 49 */ - "assignable_expr ::= IDENTIFIER", - /* 50 */ - "assignable_expr ::= assignable_expr SBRACKET_OPEN expr SBRACKET_CLOSE", - /* 51 */ - "assignable_expr ::= assignable_expr DOT assignable_expr", - /* 52 */ - "macro_statement ::= OPEN_DELIMITER MACRO IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDMACRO CLOSE_DELIMITER", - /* 53 */ - "macro_statement ::= OPEN_DELIMITER MACRO IDENTIFIER PARENTHESES_OPEN macro_parameters PARENTHESES_CLOSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDMACRO CLOSE_DELIMITER", - /* 54 */ - "macro_parameters ::= macro_parameters COMMA macro_parameter", - /* 55 */ - "macro_parameters ::= macro_parameter", - /* 56 */ - "macro_parameter ::= IDENTIFIER", - /* 57 */ - "macro_parameter ::= IDENTIFIER ASSIGN macro_parameter_default", - /* 58 */ - "macro_parameter_default ::= INTEGER", - /* 59 */ - "macro_parameter_default ::= STRING", - /* 60 */ - "macro_parameter_default ::= DOUBLE", - /* 61 */ - "macro_parameter_default ::= NULL", - /* 62 */ - "macro_parameter_default ::= FALSE", - /* 63 */ - "macro_parameter_default ::= TRUE", - /* 64 */ - "macro_call_statement ::= OPEN_DELIMITER CALL expr PARENTHESES_OPEN argument_list PARENTHESES_CLOSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDCALL CLOSE_DELIMITER", - /* 65 */ - "macro_call_statement ::= OPEN_DELIMITER CALL expr PARENTHESES_OPEN PARENTHESES_CLOSE CLOSE_DELIMITER OPEN_DELIMITER ENDCALL CLOSE_DELIMITER", - /* 66 */ - "empty_statement ::= OPEN_DELIMITER CLOSE_DELIMITER", - /* 67 */ - "echo_statement ::= OPEN_EDELIMITER expr CLOSE_EDELIMITER", - /* 68 */ - "block_statement ::= OPEN_DELIMITER BLOCK IDENTIFIER CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDBLOCK CLOSE_DELIMITER", - /* 69 */ - "block_statement ::= OPEN_DELIMITER BLOCK IDENTIFIER CLOSE_DELIMITER OPEN_DELIMITER ENDBLOCK CLOSE_DELIMITER", - /* 70 */ - "cache_statement ::= OPEN_DELIMITER CACHE expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDCACHE CLOSE_DELIMITER", - /* 71 */ - "cache_statement ::= OPEN_DELIMITER CACHE expr cache_lifetime CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDCACHE CLOSE_DELIMITER", - /* 72 */ - "cache_lifetime ::= INTEGER", - /* 73 */ - "cache_lifetime ::= IDENTIFIER", - /* 74 */ - "raw_statement ::= OPEN_DELIMITER RAW CLOSE_DELIMITER statement OPEN_DELIMITER ENDRAW CLOSE_DELIMITER", - /* 75 */ - "extends_statement ::= OPEN_DELIMITER EXTENDS expr CLOSE_DELIMITER", - /* 76 */ - "include_statement ::= OPEN_DELIMITER INCLUDE expr CLOSE_DELIMITER", - /* 77 */ - "include_statement ::= OPEN_DELIMITER INCLUDE expr WITH expr CLOSE_DELIMITER", - /* 78 */ - "do_statement ::= OPEN_DELIMITER DO expr CLOSE_DELIMITER", - /* 79 */ - "return_statement ::= OPEN_DELIMITER RETURN expr CLOSE_DELIMITER", - /* 80 */ - "autoescape_statement ::= OPEN_DELIMITER AUTOESCAPE FALSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDAUTOESCAPE CLOSE_DELIMITER", - /* 81 */ - "autoescape_statement ::= OPEN_DELIMITER AUTOESCAPE TRUE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDAUTOESCAPE CLOSE_DELIMITER", - /* 82 */ - "break_statement ::= OPEN_DELIMITER BREAK CLOSE_DELIMITER", - /* 83 */ - "continue_statement ::= OPEN_DELIMITER CONTINUE CLOSE_DELIMITER", - /* 84 */ - "raw_fragment ::= RAW_FRAGMENT", - /* 85 */ - "expr ::= MINUS expr", - /* 86 */ - "expr ::= PLUS expr", - /* 87 */ - "expr ::= expr MINUS expr", - /* 88 */ - "expr ::= expr PLUS expr", - /* 89 */ - "expr ::= expr TIMES expr", - /* 90 */ - "expr ::= expr TIMES TIMES expr", - /* 91 */ - "expr ::= expr DIVIDE expr", - /* 92 */ - "expr ::= expr DIVIDE DIVIDE expr", - /* 93 */ - "expr ::= expr MOD expr", - /* 94 */ - "expr ::= expr AND expr", - /* 95 */ - "expr ::= expr OR expr", - /* 96 */ - "expr ::= expr CONCAT expr", - /* 97 */ - "expr ::= expr PIPE expr", - /* 98 */ - "expr ::= expr RANGE expr", - /* 99 */ - "expr ::= expr EQUALS expr", - /* 100 */ - "expr ::= expr NOTEQUALS DEFINED", - /* 101 */ - "expr ::= expr IS DEFINED", - /* 102 */ - "expr ::= expr NOTEQUALS EMPTY", - /* 103 */ - "expr ::= expr IS EMPTY", - /* 104 */ - "expr ::= expr NOTEQUALS EVEN", - /* 105 */ - "expr ::= expr IS EVEN", - /* 106 */ - "expr ::= expr NOTEQUALS ODD", - /* 107 */ - "expr ::= expr IS ODD", - /* 108 */ - "expr ::= expr NOTEQUALS NUMERIC", - /* 109 */ - "expr ::= expr IS NUMERIC", - /* 110 */ - "expr ::= expr NOTEQUALS SCALAR", - /* 111 */ - "expr ::= expr IS SCALAR", - /* 112 */ - "expr ::= expr NOTEQUALS ITERABLE", - /* 113 */ - "expr ::= expr IS ITERABLE", - /* 114 */ - "expr ::= expr IS expr", - /* 115 */ - "expr ::= expr NOTEQUALS expr", - /* 116 */ - "expr ::= expr IDENTICAL expr", - /* 117 */ - "expr ::= expr NOTIDENTICAL expr", - /* 118 */ - "expr ::= expr LESS expr", - /* 119 */ - "expr ::= expr GREATER expr", - /* 120 */ - "expr ::= expr GREATEREQUAL expr", - /* 121 */ - "expr ::= expr LESSEQUAL expr", - /* 122 */ - "expr ::= expr DOT expr", - /* 123 */ - "expr ::= expr IN expr", - /* 124 */ - "expr ::= expr NOT IN expr", - /* 125 */ - "expr ::= NOT expr", - /* 126 */ - "expr ::= expr INCR", - /* 127 */ - "expr ::= expr DECR", - /* 128 */ - "expr ::= PARENTHESES_OPEN expr PARENTHESES_CLOSE", - /* 129 */ - "expr ::= SBRACKET_OPEN SBRACKET_CLOSE", - /* 130 */ - "expr ::= SBRACKET_OPEN array_list SBRACKET_CLOSE", - /* 131 */ - "expr ::= CBRACKET_OPEN CBRACKET_CLOSE", - /* 132 */ - "expr ::= CBRACKET_OPEN array_list CBRACKET_CLOSE", - /* 133 */ - "expr ::= expr SBRACKET_OPEN expr SBRACKET_CLOSE", - /* 134 */ - "expr ::= expr QUESTION expr COLON expr", - /* 135 */ - "expr ::= expr SBRACKET_OPEN COLON slice_offset SBRACKET_CLOSE", - /* 136 */ - "expr ::= expr SBRACKET_OPEN slice_offset COLON SBRACKET_CLOSE", - /* 137 */ - "expr ::= expr SBRACKET_OPEN slice_offset COLON slice_offset SBRACKET_CLOSE", - /* 138 */ - "slice_offset ::= INTEGER", - /* 139 */ - "slice_offset ::= IDENTIFIER", - /* 140 */ - "array_list ::= array_list COMMA array_item", - /* 141 */ - "array_list ::= array_item", - /* 142 */ - "array_item ::= STRING COLON expr", - /* 143 */ - "array_item ::= expr", - /* 144 */ - "expr ::= function_call", - /* 145 */ - "function_call ::= expr PARENTHESES_OPEN argument_list PARENTHESES_CLOSE", - /* 146 */ - "function_call ::= expr PARENTHESES_OPEN PARENTHESES_CLOSE", - /* 147 */ - "argument_list ::= argument_list COMMA argument_item", - /* 148 */ - "argument_list ::= argument_item", - /* 149 */ - "argument_item ::= expr", - /* 150 */ - "argument_item ::= STRING COLON expr", - /* 151 */ - "expr ::= IDENTIFIER", - /* 152 */ - "expr ::= INTEGER", - /* 153 */ - "expr ::= STRING", - /* 154 */ - "expr ::= DOUBLE", - /* 155 */ - "expr ::= NULL", - /* 156 */ - "expr ::= FALSE", - /* 157 */ - "expr ::= TRUE", + 'program ::= volt_language', + 'volt_language ::= statement_list', + 'statement_list ::= statement_list statement', + 'statement_list ::= statement', + 'statement ::= raw_fragment', + 'statement ::= if_statement', + 'statement ::= elseif_statement', + 'statement ::= elsefor_statement', + 'statement ::= for_statement', + 'statement ::= switch_statement', + 'statement ::= case_clause', + 'statement ::= set_statement', + 'statement ::= echo_statement', + 'statement ::= block_statement', + 'statement ::= cache_statement', + 'statement ::= extends_statement', + 'statement ::= include_statement', + 'statement ::= do_statement', + 'statement ::= return_statement', + 'statement ::= autoescape_statement', + 'statement ::= verbatim_statement', + 'statement ::= break_statement', + 'statement ::= continue_statement', + 'statement ::= macro_statement', + 'statement ::= empty_statement', + 'statement ::= macro_call_statement', + 'if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDIF CLOSE_DELIMITER', + 'if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER OPEN_DELIMITER ENDIF CLOSE_DELIMITER', + 'if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ELSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDIF CLOSE_DELIMITER', + 'if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ELSE CLOSE_DELIMITER OPEN_DELIMITER ENDIF CLOSE_DELIMITER', + 'if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER OPEN_DELIMITER ELSE CLOSE_DELIMITER OPEN_DELIMITER ENDIF CLOSE_DELIMITER', + 'elseif_statement ::= OPEN_DELIMITER ELSEIF expr CLOSE_DELIMITER', + 'elsefor_statement ::= OPEN_DELIMITER ELSEFOR CLOSE_DELIMITER', + 'for_statement ::= OPEN_DELIMITER FOR IDENTIFIER IN expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER', + 'for_statement ::= OPEN_DELIMITER FOR IDENTIFIER IN expr IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER', + 'for_statement ::= OPEN_DELIMITER FOR IDENTIFIER COMMA IDENTIFIER IN expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER', + 'for_statement ::= OPEN_DELIMITER FOR IDENTIFIER COMMA IDENTIFIER IN expr IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER', + 'switch_statement ::= OPEN_DELIMITER SWITCH expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDSWITCH CLOSE_DELIMITER', + 'switch_statement ::= OPEN_DELIMITER SWITCH expr CLOSE_DELIMITER OPEN_DELIMITER ENDSWITCH CLOSE_DELIMITER', + 'case_clause ::= OPEN_DELIMITER CASE expr CLOSE_DELIMITER', + 'case_clause ::= OPEN_DELIMITER DEFAULT CLOSE_DELIMITER', + 'set_statement ::= OPEN_DELIMITER SET set_assignments CLOSE_DELIMITER', + 'set_assignments ::= set_assignments COMMA set_assignment', + 'set_assignments ::= set_assignment', + 'set_assignment ::= assignable_expr ASSIGN expr', + 'set_assignment ::= assignable_expr ADD_ASSIGN expr', + 'set_assignment ::= assignable_expr SUB_ASSIGN expr', + 'set_assignment ::= assignable_expr MUL_ASSIGN expr', + 'set_assignment ::= assignable_expr DIV_ASSIGN expr', + 'assignable_expr ::= IDENTIFIER', + 'assignable_expr ::= assignable_expr SBRACKET_OPEN expr SBRACKET_CLOSE', + 'assignable_expr ::= assignable_expr DOT assignable_expr', + 'macro_statement ::= OPEN_DELIMITER MACRO IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDMACRO CLOSE_DELIMITER', + 'macro_statement ::= OPEN_DELIMITER MACRO IDENTIFIER PARENTHESES_OPEN macro_parameters PARENTHESES_CLOSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDMACRO CLOSE_DELIMITER', + 'macro_parameters ::= macro_parameters COMMA macro_parameter', + 'macro_parameters ::= macro_parameter', + 'macro_parameter ::= IDENTIFIER', + 'macro_parameter ::= IDENTIFIER ASSIGN macro_parameter_default', + 'macro_parameter_default ::= INTEGER', + 'macro_parameter_default ::= STRING', + 'macro_parameter_default ::= DOUBLE', + 'macro_parameter_default ::= NULL', + 'macro_parameter_default ::= FALSE', + 'macro_parameter_default ::= TRUE', + 'macro_call_statement ::= OPEN_DELIMITER CALL expr PARENTHESES_OPEN argument_list PARENTHESES_CLOSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDCALL CLOSE_DELIMITER', + 'macro_call_statement ::= OPEN_DELIMITER CALL expr PARENTHESES_OPEN PARENTHESES_CLOSE CLOSE_DELIMITER OPEN_DELIMITER ENDCALL CLOSE_DELIMITER', + 'empty_statement ::= OPEN_DELIMITER CLOSE_DELIMITER', + 'echo_statement ::= OPEN_EDELIMITER expr CLOSE_EDELIMITER', + 'block_statement ::= OPEN_DELIMITER BLOCK IDENTIFIER CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDBLOCK CLOSE_DELIMITER', + 'block_statement ::= OPEN_DELIMITER BLOCK IDENTIFIER CLOSE_DELIMITER OPEN_DELIMITER ENDBLOCK CLOSE_DELIMITER', + 'cache_statement ::= OPEN_DELIMITER CACHE expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDCACHE CLOSE_DELIMITER', + 'cache_statement ::= OPEN_DELIMITER CACHE expr cache_lifetime CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDCACHE CLOSE_DELIMITER', + 'cache_lifetime ::= INTEGER', + 'cache_lifetime ::= IDENTIFIER', + 'verbatim_statement ::= OPEN_DELIMITER VERBATIM CLOSE_DELIMITER raw_fragment OPEN_DELIMITER ENDVERBATIM CLOSE_DELIMITER', + 'verbatim_statement ::= OPEN_DELIMITER VERBATIM CLOSE_DELIMITER OPEN_DELIMITER ENDVERBATIM CLOSE_DELIMITER', + 'extends_statement ::= OPEN_DELIMITER EXTENDS expr CLOSE_DELIMITER', + 'include_statement ::= OPEN_DELIMITER INCLUDE expr CLOSE_DELIMITER', + 'include_statement ::= OPEN_DELIMITER INCLUDE expr WITH expr CLOSE_DELIMITER', + 'do_statement ::= OPEN_DELIMITER DO expr CLOSE_DELIMITER', + 'return_statement ::= OPEN_DELIMITER RETURN expr CLOSE_DELIMITER', + 'autoescape_statement ::= OPEN_DELIMITER AUTOESCAPE FALSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDAUTOESCAPE CLOSE_DELIMITER', + 'autoescape_statement ::= OPEN_DELIMITER AUTOESCAPE TRUE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDAUTOESCAPE CLOSE_DELIMITER', + 'break_statement ::= OPEN_DELIMITER BREAK CLOSE_DELIMITER', + 'continue_statement ::= OPEN_DELIMITER CONTINUE CLOSE_DELIMITER', + 'raw_fragment ::= RAW_FRAGMENT', + 'expr ::= MINUS expr', + 'expr ::= PLUS expr', + 'expr ::= expr MINUS expr', + 'expr ::= expr PLUS expr', + 'expr ::= expr TIMES expr', + 'expr ::= expr TIMES TIMES expr', + 'expr ::= expr DIVIDE expr', + 'expr ::= expr DIVIDE DIVIDE expr', + 'expr ::= expr MOD expr', + 'expr ::= expr AND expr', + 'expr ::= expr OR expr', + 'expr ::= expr CONCAT expr', + 'expr ::= expr PIPE expr', + 'expr ::= expr RANGE expr', + 'expr ::= expr EQUALS expr', + 'expr ::= expr NOTEQUALS DEFINED', + 'expr ::= expr IS DEFINED', + 'expr ::= expr NOTEQUALS EMPTY', + 'expr ::= expr IS EMPTY', + 'expr ::= expr NOTEQUALS EVEN', + 'expr ::= expr IS EVEN', + 'expr ::= expr NOTEQUALS ODD', + 'expr ::= expr IS ODD', + 'expr ::= expr NOTEQUALS NUMERIC', + 'expr ::= expr IS NUMERIC', + 'expr ::= expr NOTEQUALS SCALAR', + 'expr ::= expr IS SCALAR', + 'expr ::= expr NOTEQUALS ITERABLE', + 'expr ::= expr IS ITERABLE', + 'expr ::= expr IS expr', + 'expr ::= expr NOTEQUALS expr', + 'expr ::= expr IDENTICAL expr', + 'expr ::= expr NOTIDENTICAL expr', + 'expr ::= expr LESS expr', + 'expr ::= expr GREATER expr', + 'expr ::= expr GREATEREQUAL expr', + 'expr ::= expr LESSEQUAL expr', + 'expr ::= expr DOT expr', + 'expr ::= expr IN expr', + 'expr ::= expr NOT IN expr', + 'expr ::= NOT expr', + 'expr ::= expr INCR', + 'expr ::= expr DECR', + 'expr ::= PARENTHESES_OPEN expr PARENTHESES_CLOSE', + 'expr ::= SBRACKET_OPEN SBRACKET_CLOSE', + 'expr ::= SBRACKET_OPEN array_list SBRACKET_CLOSE', + 'expr ::= CBRACKET_OPEN CBRACKET_CLOSE', + 'expr ::= CBRACKET_OPEN array_list CBRACKET_CLOSE', + 'expr ::= expr SBRACKET_OPEN expr SBRACKET_CLOSE', + 'expr ::= expr QUESTION expr COLON expr', + 'expr ::= expr SBRACKET_OPEN COLON slice_offset SBRACKET_CLOSE', + 'expr ::= expr SBRACKET_OPEN slice_offset COLON SBRACKET_CLOSE', + 'expr ::= expr SBRACKET_OPEN slice_offset COLON slice_offset SBRACKET_CLOSE', + 'slice_offset ::= INTEGER', + 'slice_offset ::= IDENTIFIER', + 'array_list ::= array_list COMMA array_item', + 'array_list ::= array_item', + 'array_item ::= STRING COLON expr', + 'array_item ::= expr', + 'expr ::= function_call', + 'function_call ::= expr PARENTHESES_OPEN argument_list PARENTHESES_CLOSE', + 'function_call ::= expr PARENTHESES_OPEN PARENTHESES_CLOSE', + 'argument_list ::= argument_list COMMA argument_item', + 'argument_list ::= argument_item', + 'argument_item ::= expr', + 'argument_item ::= STRING COLON expr', + 'expr ::= IDENTIFIER', + 'expr ::= INTEGER', + 'expr ::= STRING', + 'expr ::= DOUBLE', + 'expr ::= NULL', + 'expr ::= FALSE', + 'expr ::= TRUE', ); /* The following function deletes the value associated with a @@ -2196,6 +2103,7 @@ private function yy_shift( 124, 1, 124, 1, 110, 7, + 110, 6, 105, 4, 106, 4, 106, 6, @@ -2328,7 +2236,7 @@ private function yy_reduce(int $yyruleno): void case 23: case 24: case 25: - case 144: + case 145: $this->output = $yymsp->minor; break; case 2: @@ -2341,8 +2249,8 @@ private function yy_reduce(int $yyruleno): void case 3: case 43: case 55: - case 141: - case 148: + case 142: + case 149: phvolt_ret_zval_list( $this->output, null, @@ -2530,8 +2438,8 @@ private function yy_reduce(int $yyruleno): void break; case 42: case 54: - case 140: - case 147: + case 141: + case 148: #line 350 "parser.php.lemon" { phvolt_ret_zval_list($this->output, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); @@ -2582,13 +2490,13 @@ private function yy_reduce(int $yyruleno): void break; case 49: case 73: - case 139: - case 151: + case 140: + case 152: phvolt_ret_literal_zval($this->output, Compiler::PHVOLT_T_IDENTIFIER, $this->yystack[$this->yyidx + 0]->minor, $this->status->getState()); break; case 50: - case 133: + case 134: #line 382 "parser.php.lemon" { phvolt_ret_expr($this->output, Compiler::PHVOLT_T_ARRAYACCESS, $this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor, null, $this->status->getState()); @@ -2598,7 +2506,7 @@ private function yy_reduce(int $yyruleno): void #line 1888 "parser.php.php" break; case 51: - case 122: + case 123: #line 386 "parser.php.lemon" { phvolt_ret_expr($this->output, Compiler::PHVOLT_T_DOT, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); @@ -2649,30 +2557,30 @@ private function yy_reduce(int $yyruleno): void break; case 58: case 72: - case 138: - case 152: + case 139: + case 153: phvolt_ret_literal_zval($this->output, Compiler::PHVOLT_T_INTEGER, $this->yystack[$this->yyidx + 0]->minor, $this->status->getState()); break; case 59: - case 153: + case 154: phvolt_ret_literal_zval($this->output, Compiler::PHVOLT_T_STRING, $this->yystack[$this->yyidx + 0]->minor, $this->status->getState()); break; case 60: - case 154: + case 155: phvolt_ret_literal_zval($this->output, Compiler::PHVOLT_T_DOUBLE, $this->yystack[$this->yyidx + 0]->minor, $this->status->getState()); break; case 61: - case 155: + case 156: phvolt_ret_literal_zval($this->output, Compiler::PHVOLT_T_NULL, null, $this->status->getState()); $this->yy_destructor(57, $this->yystack[$this->yyidx + 0]->minor); break; case 62: - case 156: + case 157: phvolt_ret_literal_zval($this->output, Compiler::PHVOLT_T_FALSE, null, $this->status->getState()); $this->yy_destructor(58, $this->yystack[$this->yyidx + 0]->minor); break; case 63: - case 157: + case 158: phvolt_ret_literal_zval($this->output, Compiler::PHVOLT_T_TRUE, null, $this->status->getState()); $this->yy_destructor(59, $this->yystack[$this->yyidx + 0]->minor); break; @@ -2771,7 +2679,7 @@ private function yy_reduce(int $yyruleno): void #line 2095 "parser.php.php" break; case 74: - phvolt_ret_raw_statement($this->output, $this->yystack[$this->yyidx + -3]->minor, $this->status->getState()); + $this->output = $this->yystack[$this->yyidx + -3]->minor; $this->yy_destructor(1, $this->yystack[$this->yyidx + -6]->minor); $this->yy_destructor(68, $this->yystack[$this->yyidx + -5]->minor); $this->yy_destructor(32, $this->yystack[$this->yyidx + -4]->minor); @@ -2780,6 +2688,15 @@ private function yy_reduce(int $yyruleno): void $this->yy_destructor(32, $this->yystack[$this->yyidx + 0]->minor); break; case 75: + phvolt_ret_literal_zval($this->output, Compiler::PHVOLT_T_RAW_FRAGMENT, null, $this->status->getState()); + $this->yy_destructor(1, $this->yystack[$this->yyidx + -5]->minor); + $this->yy_destructor(68, $this->yystack[$this->yyidx + -4]->minor); + $this->yy_destructor(32, $this->yystack[$this->yyidx + -3]->minor); + $this->yy_destructor(1, $this->yystack[$this->yyidx + -2]->minor); + $this->yy_destructor(69, $this->yystack[$this->yyidx + -1]->minor); + $this->yy_destructor(32, $this->yystack[$this->yyidx + 0]->minor); + break; + case 76: phvolt_ret_extends_statement( $this->output, $this->yystack[$this->yyidx - 1]->minor, @@ -2789,7 +2706,7 @@ private function yy_reduce(int $yyruleno): void $this->yy_destructor(70, $this->yystack[$this->yyidx - 2]->minor); $this->yy_destructor(32, $this->yystack[$this->yyidx]->minor); break; - case 76: + case 77: #line 486 "parser.php.lemon" { phvolt_ret_include_statement($this->output, $this->yystack[$this->yyidx + -1]->minor, null, $this->status->getState()); @@ -2799,14 +2716,14 @@ private function yy_reduce(int $yyruleno): void } #line 2128 "parser.php.php" break; - case 77: + case 78: phvolt_ret_include_statement($this->output, $this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor, $this->status->getState()); $this->yy_destructor(1, $this->yystack[$this->yyidx + -5]->minor); $this->yy_destructor(71, $this->yystack[$this->yyidx + -4]->minor); $this->yy_destructor(72, $this->yystack[$this->yyidx + -2]->minor); $this->yy_destructor(32, $this->yystack[$this->yyidx + 0]->minor); break; - case 78: + case 79: #line 494 "parser.php.lemon" { phvolt_ret_do_statement($this->output, $this->yystack[$this->yyidx + -1]->minor, $this->status->getState()); @@ -2816,7 +2733,7 @@ private function yy_reduce(int $yyruleno): void } #line 2149 "parser.php.php" break; - case 79: + case 80: #line 498 "parser.php.lemon" { phvolt_ret_return_statement($this->output, $this->yystack[$this->yyidx + -1]->minor, $this->status->getState()); @@ -2826,7 +2743,7 @@ private function yy_reduce(int $yyruleno): void } #line 2159 "parser.php.php" break; - case 80: + case 81: #line 502 "parser.php.lemon" { phvolt_ret_autoescape_statement($this->output, 0, $this->yystack[$this->yyidx + -3]->minor, $this->status->getState()); @@ -2840,7 +2757,7 @@ private function yy_reduce(int $yyruleno): void } #line 2173 "parser.php.php" break; - case 81: + case 82: #line 506 "parser.php.lemon" { phvolt_ret_autoescape_statement($this->output, 1, $this->yystack[$this->yyidx + -3]->minor, $this->status->getState()); @@ -2854,7 +2771,7 @@ private function yy_reduce(int $yyruleno): void } #line 2187 "parser.php.php" break; - case 82: + case 83: #line 510 "parser.php.lemon" { phvolt_ret_break_statement($this->output, $this->status->getState()); @@ -2864,20 +2781,20 @@ private function yy_reduce(int $yyruleno): void } #line 2197 "parser.php.php" break; - case 83: + case 84: phvolt_ret_continue_statement($this->output, $this->status->getState()); $this->yy_destructor(1, $this->yystack[$this->yyidx + -2]->minor); $this->yy_destructor(78, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(32, $this->yystack[$this->yyidx + 0]->minor); break; - case 84: + case 85: phvolt_ret_literal_zval($this->output, Compiler::PHVOLT_T_RAW_FRAGMENT, $this->yystack[$this->yyidx + 0]->minor, $this->status->getState()); break; - case 85: + case 86: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_MINUS, null, $this->yystack[$this->yyidx]->minor, null, $this->status->getState()); $this->yy_destructor(22, $this->yystack[$this->yyidx -1]->minor); break; - case 86: + case 87: #line 526 "parser.php.lemon" { phvolt_ret_expr($this->output, Compiler::PHVOLT_T_PLUS, null, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); @@ -2885,7 +2802,7 @@ private function yy_reduce(int $yyruleno): void } #line 2230 "parser.php.php" break; - case 87: + case 88: #line 530 "parser.php.lemon" { phvolt_ret_expr($this->output, Compiler::PHVOLT_T_SUB, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); @@ -2893,7 +2810,7 @@ private function yy_reduce(int $yyruleno): void } #line 2238 "parser.php.php" break; - case 88: + case 89: #line 534 "parser.php.lemon" { phvolt_ret_expr($this->output, Compiler::PHVOLT_T_ADD, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); @@ -2901,7 +2818,7 @@ private function yy_reduce(int $yyruleno): void } #line 2246 "parser.php.php" break; - case 89: + case 90: #line 538 "parser.php.lemon" { phvolt_ret_expr($this->output, Compiler::PHVOLT_T_MUL, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); @@ -2909,7 +2826,7 @@ private function yy_reduce(int $yyruleno): void } #line 2254 "parser.php.php" break; - case 90: + case 91: #line 542 "parser.php.lemon" { phvolt_ret_expr($this->output, Compiler::PHVOLT_T_POW, $this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); @@ -2918,7 +2835,7 @@ private function yy_reduce(int $yyruleno): void } #line 2263 "parser.php.php" break; - case 91: + case 92: #line 546 "parser.php.lemon" { phvolt_ret_expr($this->output, Compiler::PHVOLT_T_DIV, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); @@ -2926,75 +2843,75 @@ private function yy_reduce(int $yyruleno): void } #line 2271 "parser.php.php" break; - case 92: + case 93: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_MOD, $this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(18, $this->yystack[$this->yyidx + -2]->minor); $this->yy_destructor(18, $this->yystack[$this->yyidx + -1]->minor); break; - case 93: + case 94: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_MOD, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(20, $this->yystack[$this->yyidx + -1]->minor); break; - case 94: + case 95: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_AND, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(6, $this->yystack[$this->yyidx + -1]->minor); break; - case 95: + case 96: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_OR, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(7, $this->yystack[$this->yyidx + -1]->minor); break; - case 96: + case 97: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_CONCAT, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(23, $this->yystack[$this->yyidx + -1]->minor); break; - case 97: + case 98: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_PIPE, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(25, $this->yystack[$this->yyidx + -1]->minor); break; - case 98: + case 99: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_RANGE, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(5, $this->yystack[$this->yyidx + -1]->minor); break; - case 99: + case 100: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_EQUALS, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(10, $this->yystack[$this->yyidx + -1]->minor); break; - case 100: + case 101: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_NOT_ISSET, $this->yystack[$this->yyidx + -2]->minor, null, null, $this->status->getState()); $this->yy_destructor(11, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(80, $this->yystack[$this->yyidx + 0]->minor); break; - case 101: + case 102: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_ISSET, $this->yystack[$this->yyidx + -2]->minor, null, null, $this->status->getState()); $this->yy_destructor(9, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(80, $this->yystack[$this->yyidx + 0]->minor); break; - case 102: + case 103: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_NOT_ISEMPTY, $this->yystack[$this->yyidx + -2]->minor, null, null, $this->status->getState()); $this->yy_destructor(11, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(81, $this->yystack[$this->yyidx + 0]->minor); break; - case 103: + case 104: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_ISEMPTY, $this->yystack[$this->yyidx + -2]->minor, null, null, $this->status->getState()); $this->yy_destructor(9, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(81, $this->yystack[$this->yyidx + 0]->minor); break; - case 104: + case 105: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_NOT_ISEVEN, $this->yystack[$this->yyidx + -2]->minor, null, null, $this->status->getState()); $this->yy_destructor(11, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(82, $this->yystack[$this->yyidx + 0]->minor); break; - case 105: + case 106: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_ISEVEN, $this->yystack[$this->yyidx + -2]->minor, null, null, $this->status->getState()); $this->yy_destructor(9, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(82, $this->yystack[$this->yyidx + 0]->minor); break; - case 106: + case 107: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_NOT_ISODD, $this->yystack[$this->yyidx + -2]->minor, null, null, $this->status->getState()); $this->yy_destructor(11, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(83, $this->yystack[$this->yyidx + 0]->minor); break; - case 107: + case 108: phvolt_ret_expr( $this->output, Compiler::PHVOLT_T_ISODD, @@ -3006,105 +2923,105 @@ private function yy_reduce(int $yyruleno): void $this->yy_destructor(9, $this->yystack[$this->yyidx - 1]->minor); $this->yy_destructor(83, $this->yystack[$this->yyidx]->minor); break; - case 108: + case 109: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_NOT_ISNUMERIC, $this->yystack[$this->yyidx + -2]->minor, null, null, $this->status->getState()); $this->yy_destructor(11, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(84, $this->yystack[$this->yyidx + 0]->minor); break; - case 109: + case 110: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_ISNUMERIC, $this->yystack[$this->yyidx + -2]->minor, null, null, $this->status->getState()); $this->yy_destructor(9, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(84, $this->yystack[$this->yyidx + 0]->minor); break; - case 110: + case 111: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_NOT_ISSCALAR, $this->yystack[$this->yyidx + -2]->minor, null, null, $this->status->getState()); $this->yy_destructor(11, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(85, $this->yystack[$this->yyidx + 0]->minor); break; - case 111: + case 112: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_ISSCALAR, $this->yystack[$this->yyidx + -2]->minor, null, null, $this->status->getState()); $this->yy_destructor(9, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(85, $this->yystack[$this->yyidx + 0]->minor); break; - case 112: + case 113: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_NOT_ISITERABLE, $this->yystack[$this->yyidx + -2]->minor, null, null, $this->status->getState()); $this->yy_destructor(11, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(86, $this->yystack[$this->yyidx + 0]->minor); break; - case 113: + case 114: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_ISITERABLE, $this->yystack[$this->yyidx + -2]->minor, null, null, $this->status->getState()); $this->yy_destructor(9, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(86, $this->yystack[$this->yyidx + 0]->minor); break; - case 114: + case 115: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_IS, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(9, $this->yystack[$this->yyidx + -1]->minor); break; - case 115: + case 116: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_NOTEQUALS, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(11, $this->yystack[$this->yyidx + -1]->minor); break; - case 116: + case 117: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_IDENTICAL, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(16, $this->yystack[$this->yyidx + -1]->minor); break; - case 117: + case 118: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_NOTIDENTICAL, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(17, $this->yystack[$this->yyidx + -1]->minor); break; - case 118: + case 119: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_LESS, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(12, $this->yystack[$this->yyidx + -1]->minor); break; - case 119: + case 120: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_GREATER, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(13, $this->yystack[$this->yyidx + -1]->minor); break; - case 120: + case 121: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_GREATEREQUAL, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(14, $this->yystack[$this->yyidx + -1]->minor); break; - case 121: + case 122: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_LESSEQUAL, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(15, $this->yystack[$this->yyidx + -1]->minor); break; - case 123: + case 124: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_IN, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(8, $this->yystack[$this->yyidx + -1]->minor); break; - case 124: + case 125: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_NOT_IN, $this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(26, $this->yystack[$this->yyidx + -2]->minor); $this->yy_destructor(8, $this->yystack[$this->yyidx + -1]->minor); break; - case 125: + case 126: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_NOT, null, $this->yystack[$this->yyidx + 0]->minor, null, $this->status->getState()); $this->yy_destructor(26, $this->yystack[$this->yyidx + -1]->minor); break; - case 126: + case 127: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_INCR, $this->yystack[$this->yyidx + -1]->minor, null, null, $this->status->getState()); $this->yy_destructor(27, $this->yystack[$this->yyidx + 0]->minor); break; - case 127: + case 128: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_DECR, $this->yystack[$this->yyidx + -1]->minor, null, null, $this->status->getState()); $this->yy_destructor(28, $this->yystack[$this->yyidx + 0]->minor); break; - case 128: + case 129: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_ENCLOSED, $this->yystack[$this->yyidx + -1]->minor, null, null, $this->status->getState()); $this->yy_destructor(29, $this->yystack[$this->yyidx + -2]->minor); $this->yy_destructor(52, $this->yystack[$this->yyidx + 0]->minor); break; - case 129: + case 130: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_ARRAY, null, null, null, $this->status->getState()); $this->yy_destructor(24, $this->yystack[$this->yyidx + -1]->minor); $this->yy_destructor(50, $this->yystack[$this->yyidx + 0]->minor); break; - case 130: + case 131: phvolt_ret_expr($this->output, Compiler::PHVOLT_T_ARRAY, $this->yystack[$this->yyidx + -1]->minor, null, null, $this->status->getState()); $this->yy_destructor(24, $this->yystack[$this->yyidx + -2]->minor); $this->yy_destructor(50, $this->yystack[$this->yyidx + 0]->minor); break; - case 131: + case 132: #line 706 "parser.php.lemon" { phvolt_ret_expr($this->output, Compiler::PHVOLT_T_ARRAY, null, null, null, $this->status->getState()); @@ -3113,7 +3030,7 @@ private function yy_reduce(int $yyruleno): void } #line 2603 "parser.php.php" break; - case 132: + case 133: #line 710 "parser.php.lemon" { phvolt_ret_expr($this->output, Compiler::PHVOLT_T_ARRAY, $this->yystack[$this->yyidx + -1]->minor, null, null, $this->status->getState()); @@ -3122,7 +3039,7 @@ private function yy_reduce(int $yyruleno): void } #line 2612 "parser.php.php" break; - case 134: + case 135: #line 718 "parser.php.lemon" { phvolt_ret_expr($this->output, Compiler::PHVOLT_T_TERNARY, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -4]->minor, $this->status->getState()); @@ -3131,7 +3048,7 @@ private function yy_reduce(int $yyruleno): void } #line 2621 "parser.php.php" break; - case 135: + case 136: #line 722 "parser.php.lemon" { phvolt_ret_slice($this->output, $this->yystack[$this->yyidx + -4]->minor, null, $this->yystack[$this->yyidx + -1]->minor, $this->status->getState()); @@ -3141,7 +3058,7 @@ private function yy_reduce(int $yyruleno): void } #line 2631 "parser.php.php" break; - case 136: + case 137: #line 726 "parser.php.lemon" { phvolt_ret_slice($this->output, $this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, null, $this->status->getState()); @@ -3150,14 +3067,14 @@ private function yy_reduce(int $yyruleno): void $this->yy_destructor(50, $this->yystack[$this->yyidx + 0]->minor); } break; - case 137: + case 138: phvolt_ret_slice($this->output, $this->yystack[$this->yyidx + -5]->minor, $this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor, $this->status->getState()); $this->yy_destructor(24, $this->yystack[$this->yyidx + -4]->minor); $this->yy_destructor(4, $this->yystack[$this->yyidx + -2]->minor); $this->yy_destructor(50, $this->yystack[$this->yyidx + 0]->minor); break; - case 142: - case 150: + case 143: + case 151: $this->output = phvolt_ret_named_item( $this->yystack[$this->yyidx - 2]->minor, $this->yystack[$this->yyidx]->minor, @@ -3165,15 +3082,15 @@ private function yy_reduce(int $yyruleno): void ); $this->yy_destructor(4, $this->yystack[$this->yyidx + -1]->minor); break; - case 143: - case 149: + case 144: + case 150: $this->output = phvolt_ret_named_item( null, $this->yystack[$this->yyidx + 0]->minor, $this->status->getState(), ); break; - case 145: + case 146: phvolt_ret_func_call( $this->output, $this->yystack[$this->yyidx - 3]->minor, @@ -3184,7 +3101,7 @@ private function yy_reduce(int $yyruleno): void $this->yy_destructor(29, $this->yystack[$this->yyidx - 2]->minor); $this->yy_destructor(52, $this->yystack[$this->yyidx]->minor); break; - case 146: + case 147: phvolt_ret_func_call( $this->output, $this->yystack[$this->yyidx + -2]->minor, @@ -3813,15 +3730,6 @@ function phvolt_ret_cache_statement(array &$ret, mixed $expr, mixed $block_state $ret['line'] = $state->getActiveLine(); } -function phvolt_ret_raw_statement(array &$ret, mixed $statement, State $state): void -{ - $ret = []; - $ret['type'] = Compiler::PHVOLT_T_RAW; - $ret['content'] = $statement; - $ret['file'] = $state->getActiveFile(); - $ret['line'] = $state->getActiveLine(); -} - function phvolt_ret_extends_statement(array &$ret, mixed $path, State $state): void { $ret = [ diff --git a/src/Compiler.php b/src/Compiler.php index 728559c..2b93ec6 100644 --- a/src/Compiler.php +++ b/src/Compiler.php @@ -117,8 +117,8 @@ class Compiler public const PHVOLT_T_ENDFOR = 305; public const PHVOLT_T_ENDIF = 303; public const PHVOLT_T_ENDMACRO = 323; - public const PHVOLT_T_ENDRAW = 401; public const PHVOLT_T_ENDSWITCH = 414; + public const PHVOLT_T_ENDVERBATIM = 403; public const PHVOLT_T_EQUALS = 272; public const PHVOLT_T_EVEN = 381; public const PHVOLT_T_EXPR = 354; @@ -189,7 +189,6 @@ class Compiler public const PHVOLT_T_QUALIFIED = 355; public const PHVOLT_T_QUESTION = 63; //'?'; public const PHVOLT_T_RANGE = 276; - public const PHVOLT_T_RAW = 400; public const PHVOLT_T_RAW_FRAGMENT = 357; public const PHVOLT_T_RESOLVED_EXPR = 364; public const PHVOLT_T_RETURN = 327; @@ -207,6 +206,7 @@ class Compiler public const PHVOLT_T_SWITCH = 411; public const PHVOLT_T_TERNARY = 366; public const PHVOLT_T_TRUE = 263; + public const PHVOLT_T_VERBATIM = 402; public const PHVOLT_T_WITH = 324; /** @@ -794,7 +794,7 @@ public function compileDo(array $statement): string } /** - * Compiles a {% raw %}`{{` `}}`{% endraw %} statement returning PHP code + * Compiles a `{{` `}}` statement returning PHP code */ public function compileEcho(array $statement): string { @@ -1457,7 +1457,7 @@ public function compileSource(string $viewCode, bool $extendsMode = false): stri * Compiles a template into a string * *```php - * echo $compiler->compileString({% raw %}'{{ "hello world" }}'{% endraw %}); + * echo $compiler->compileString('{{ "hello world" }}'); *``` * * @throws Exception @@ -2240,7 +2240,7 @@ public function getUniquePrefix(): string * *```php * print_r( - * $compiler->parse("{% raw %}{{ 3 + 2 }}{% endraw %}") + * $compiler->parse("{{ 3 + 2 }}") * ); *``` * @throws Exception diff --git a/src/Compiler/Opcode.php b/src/Compiler/Opcode.php index 51e079a..5b7f0a4 100644 --- a/src/Compiler/Opcode.php +++ b/src/Compiler/Opcode.php @@ -57,8 +57,8 @@ enum Opcode: int case ENDFOR = 305; case ENDIF = 303; case ENDMACRO = 323; - case ENDRAW = 401; case ENDSWITCH = 414; + case ENDVERBATIM = 403; case EQUALS = 272; case EVEN = 381; case EXPR = 354; @@ -117,7 +117,6 @@ enum Opcode: int case QUALIFIED = 355; case QUESTION = 63; case RANGE = 276; - case RAW = 400; case RAW_FRAGMENT = 357; case RESOLVED_EXPR = 364; case RETURN = 327; @@ -132,5 +131,6 @@ enum Opcode: int case SWITCH = 411; case TERNARY = 366; case TRUE = 263; + case VERBATIM = 402; case WITH = 324; } diff --git a/src/Parser/Parser.php b/src/Parser/Parser.php index 62de238..8568598 100644 --- a/src/Parser/Parser.php +++ b/src/Parser/Parser.php @@ -158,8 +158,8 @@ public function parse(string $code, string $templatePath = 'eval code'): array CompilerOpcode::ENDCALL->value => $parser->phvolt_(Opcode::ENDCALL->value), CompilerOpcode::CACHE->value => $parser->phvolt_(Opcode::CACHE->value), CompilerOpcode::ENDCACHE->value => $parser->phvolt_(Opcode::ENDCACHE->value), - CompilerOpcode::RAW->value => $this->handleRaw($parser, $state), - CompilerOpcode::ENDRAW->value => $this->handleEndraw($parser, $state), + CompilerOpcode::VERBATIM->value => $parser->phvolt_(Opcode::VERBATIM->value), + CompilerOpcode::ENDVERBATIM->value => $parser->phvolt_(Opcode::ENDVERBATIM->value), CompilerOpcode::INCLUDE->value => $parser->phvolt_(Opcode::INCLUDE->value), CompilerOpcode::WITH->value => $parser->phvolt_(Opcode::WITH->value), CompilerOpcode::DEFINED->value => $parser->phvolt_(Opcode::DEFINED->value), @@ -356,12 +356,6 @@ private function handleEndmacro(phvolt_Parser $parser, State $state): void $parser->phvolt_(Opcode::ENDMACRO->value); } - private function handleEndraw(phvolt_Parser $parser, State $state): void - { - $parser->phvolt_(Opcode::ENDRAW->value); - $state->decrementForcedRawState(); - } - private function handleEndswitch(phvolt_Parser $parser, Status $parserStatus, State $state): void { if ($state->getSwitchLevel() === 0) { @@ -447,12 +441,6 @@ private function handleOpenEdelimiter(phvolt_Parser $parser, Status $parserStatu $parser->phvolt_(Opcode::OPEN_EDELIMITER->value); } - private function handleRaw(phvolt_Parser $parser, State $state): void - { - $parser->phvolt_(Opcode::RAW->value); - $state->incrementForcedRawState(); - } - private function handleRawFragment( phvolt_Parser $parser, Status $parserStatus, diff --git a/src/Scanner/Mode.php b/src/Scanner/Mode.php index 632122a..793a306 100644 --- a/src/Scanner/Mode.php +++ b/src/Scanner/Mode.php @@ -15,7 +15,8 @@ enum Mode: int { - case CODE = 1; - case COMMENT = 2; - case RAW = 0; + case CODE = 1; + case COMMENT = 2; + case RAW = 0; + case VERBATIM = 3; } diff --git a/src/Scanner/Opcode.php b/src/Scanner/Opcode.php index fc68ebe..f219725 100644 --- a/src/Scanner/Opcode.php +++ b/src/Scanner/Opcode.php @@ -51,8 +51,8 @@ enum Opcode: int case ENDFOR = 39; case ENDIF = 33; case ENDMACRO = 53; - case ENDRAW = 69; case ENDSWITCH = 41; + case ENDVERBATIM = 69; case EQUALS = 10; case EVEN = 82; case EXTENDS = 70; @@ -90,7 +90,6 @@ enum Opcode: int case PLUS = 21; case QUESTION = 3; case RANGE = 5; - case RAW = 68; case RAW_FRAGMENT = 79; case RETURN = 74; case SBRACKET_CLOSE = 50; @@ -102,6 +101,7 @@ enum Opcode: int case SWITCH = 40; case TIMES = 19; case TRUE = 59; + case VERBATIM = 68; case WITH = 72; public function label(): string diff --git a/src/Scanner/Scanner.php b/src/Scanner/Scanner.php index 971702f..d180114 100644 --- a/src/Scanner/Scanner.php +++ b/src/Scanner/Scanner.php @@ -33,6 +33,64 @@ public function getToken(): Token } public function scanForToken(): ScannerStatus + { + $status = $this->scan(); + + /** + * "verbatim" / "endverbatim" are reserved words. The generated DFA + * matches them as plain identifiers, so they are reclassified here at + * the single scanner exit point - this emits the exact token stream + * cphalcon produces without rebuilding the generated state machine. + */ + if ( + $status === ScannerStatus::OK + && $this->state->getMode() === Mode::CODE->value + && $this->token->opcode === Opcode::IDENTIFIER->value + ) { + $keyword = strtolower((string) $this->token->value); + + if ($keyword === 'verbatim') { + $this->state->incrementStatementPosition()->setVerbatim(1); + $this->token = new Token(Opcode::VERBATIM->value); + } elseif ($keyword === 'endverbatim') { + $this->state->incrementStatementPosition(); + $this->token = new Token(Opcode::ENDVERBATIM->value); + } + } + + return $status; + } + + /** + * Looks ahead from a "{%" sequence inside a verbatim block to decide + * whether it opens the closing "{% endverbatim %}" tag. Mirrors the + * peek logic in cphalcon's scanner: optional "-" marker, surrounding + * whitespace, case-insensitive "endverbatim" as a whole word. + */ + private function isEndVerbatimAhead(): bool + { + $buffer = $this->state->getRawBuffer(); + // The cursor is on "{" and the next character is "%". + $peek = $this->state->getCursor() + 2; + + if (($buffer[$peek] ?? '') === '-') { + $peek++; + } + + while (in_array($buffer[$peek] ?? '', [' ', "\t", "\r", "\n"], true)) { + $peek++; + } + + if (strtolower(substr($buffer, $peek, 11)) !== 'endverbatim') { + return false; + } + + $after = $buffer[$peek + 11] ?? ''; + + return $after === '' || (!ctype_alnum($after) && $after !== '_'); + } + + private function scan(): ScannerStatus { $start = $this->state->getCursor(); $status = ScannerStatus::IMPOSSIBLE; @@ -88,6 +146,63 @@ public function scanForToken(): ScannerStatus $this->state->appendToRawFragment($cursor); $this->state->incrementStart(); + } elseif ($mode === Mode::VERBATIM->value) { + if ($cursor === "\n") { + $this->state->incrementActiveLine(); + } + + /** + * End of input while still inside a verbatim block. Flush + * whatever has been captured so far; the parser then reports + * the missing {% endverbatim %}. + */ + if ($cursor === null) { + $this->state->setMode(Mode::CODE->value); + + if ($this->state->getRawFragment() !== '') { + $this->token = new Token( + Opcode::RAW_FRAGMENT->value, + $this->state->getRawFragment() + ); + $this->state->setRawFragment(''); + + return ScannerStatus::OK; + } + + return ScannerStatus::EOF; + } + + /** + * Detect the closing "{% endverbatim %}" tag, allowing the + * optional "-" whitespace-control marker and surrounding + * spaces. Everything else - including other "{{", "{%" and + * "{#" sequences - is captured as literal content. + */ + if ($cursor === '{' && $this->state->getNext() === '%' && $this->isEndVerbatimAhead()) { + $this->state->setMode(Mode::CODE->value); + + if ($this->state->getRawFragment() !== '') { + $this->token = new Token( + Opcode::RAW_FRAGMENT->value, + $this->state->getRawFragment() + ); + $this->state->setRawFragment(''); + } else { + $this->token = new Token(Opcode::IGNORE->value); + } + + /** + * Leave the cursor on "{%" so the {% endverbatim %} tag + * is tokenized on the next scan. + */ + return ScannerStatus::OK; + } + + /** + * Literal content: buffer the current character and advance. + */ + $this->state->appendToRawFragment($cursor); + $this->state->incrementStart(); } else { $vvch = $cursor; switch ($vvch) { @@ -915,7 +1030,12 @@ public function scanForToken(): ScannerStatus } vv85: $this->state->incrementStart(); - $this->state->setMode(Mode::RAW->value); + if ($this->state->getVerbatim() === 1) { + $this->state->setMode(Mode::VERBATIM->value); + $this->state->setVerbatim(0); + } else { + $this->state->setMode(Mode::RAW->value); + } $this->token = new Token(Opcode::CLOSE_DELIMITER->value); return ScannerStatus::OK; vv87: @@ -1789,6 +1909,7 @@ public function scanForToken(): ScannerStatus vv156: $this->state->incrementStart(); $this->state->setMode(Mode::RAW->value); + $this->state->setVerbatim(0); $this->token = new Token(Opcode::CLOSE_EDELIMITER->value); return ScannerStatus::OK; vv158: @@ -1798,7 +1919,12 @@ public function scanForToken(): ScannerStatus vv160: $this->state->incrementStart(); - $this->state->setMode(Mode::RAW->value); + if ($this->state->getVerbatim() === 1) { + $this->state->setMode(Mode::VERBATIM->value); + $this->state->setVerbatim(0); + } else { + $this->state->setMode(Mode::RAW->value); + } $this->state->setWhitespaceControl(true); $this->token = new Token(Opcode::CLOSE_DELIMITER->value); return ScannerStatus::OK; @@ -1807,6 +1933,7 @@ public function scanForToken(): ScannerStatus $this->state->incrementStart(); $this->state->setMode(Mode::RAW->value); $this->state->setWhitespaceControl(true); + $this->state->setVerbatim(0); $this->token = new Token(Opcode::CLOSE_EDELIMITER->value); return ScannerStatus::OK; vv164: @@ -2423,11 +2550,11 @@ public function scanForToken(): ScannerStatus goto vv198; } vv198: - { - $this->state->incrementStatementPosition(); - $this->token = new Token(Opcode::RAW->value); - return ScannerStatus::OK; - } + $this->token = new Token( + Opcode::IDENTIFIER->value, + substr($this->state->getRawBuffer(), $start, $this->state->getCursor() - $start) + ); + return ScannerStatus::OK; vv199: $vvch = $this->state->incrementStart()->getStart(); switch ($vvch) { @@ -4413,11 +4540,11 @@ public function scanForToken(): ScannerStatus goto vv304; } vv304: - { - $this->state->incrementStatementPosition(); - $this->token = new Token(Opcode::ENDRAW->value); - return ScannerStatus::OK; - } + $this->token = new Token( + Opcode::IDENTIFIER->value, + substr($this->state->getRawBuffer(), $start, $this->state->getCursor() - $start) + ); + return ScannerStatus::OK; vv305: $vvch = $this->state->incrementStart()->getStart(); switch ($vvch) { diff --git a/src/Scanner/State.php b/src/Scanner/State.php index 35e2399..65bbd8b 100644 --- a/src/Scanner/State.php +++ b/src/Scanner/State.php @@ -21,7 +21,6 @@ class State protected int $blockLevel = 0; protected int $extendsMode = 0; protected int $forLevel = 0; - protected int $forcedRawState = 0; protected int $ifLevel = 0; protected int $macroLevel = 0; protected ?int $marker = null; @@ -32,6 +31,7 @@ class State protected int $startLength; protected int $statementPosition = 0; protected int $switchLevel = 0; + protected int $verbatim = 0; private bool $whitespaceControl = false; protected string $activeFile = 'eval code'; protected int $activeLine = 1; @@ -65,12 +65,6 @@ public function decrementBlockLevel(): self return $this; } - public function decrementForcedRawState(): self - { - $this->forcedRawState--; - - return $this; - } public function decrementForLevel(): self { @@ -135,9 +129,9 @@ public function getForLevel(): int return $this->forLevel; } - public function getForcedRawState(): int + public function getVerbatim(): int { - return $this->forcedRawState; + return $this->verbatim; } public function getIfLevel(): int @@ -229,12 +223,6 @@ public function incrementBlockLevel(): self return $this; } - public function incrementForcedRawState(): self - { - $this->forcedRawState++; - - return $this; - } public function incrementForLevel(): self { @@ -343,9 +331,9 @@ public function setForLevel(int $forLevel): self return $this; } - public function setForcedRawState(int $forcedRawState): self + public function setVerbatim(int $verbatim): self { - $this->forcedRawState = $forcedRawState; + $this->verbatim = $verbatim; return $this; } diff --git a/tests/unit/Compiler/OpcodeTest.php b/tests/unit/Compiler/OpcodeTest.php index 7402a6e..ca30312 100644 --- a/tests/unit/Compiler/OpcodeTest.php +++ b/tests/unit/Compiler/OpcodeTest.php @@ -135,8 +135,8 @@ public function testOpcodeValues(): void $this->assertSame(395, Opcode::NOT_ISNUMERIC->value); $this->assertSame(396, Opcode::NOT_ISSCALAR->value); $this->assertSame(397, Opcode::NOT_ISITERABLE->value); - $this->assertSame(400, Opcode::RAW->value); - $this->assertSame(401, Opcode::ENDRAW->value); + $this->assertSame(402, Opcode::VERBATIM->value); + $this->assertSame(403, Opcode::ENDVERBATIM->value); $this->assertSame(411, Opcode::SWITCH->value); $this->assertSame(412, Opcode::CASE->value); $this->assertSame(413, Opcode::DEFAULT->value); diff --git a/tests/unit/Compiler/RawStatementTest.php b/tests/unit/Compiler/RawStatementTest.php deleted file mode 100644 index 663c208..0000000 --- a/tests/unit/Compiler/RawStatementTest.php +++ /dev/null @@ -1,69 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE.txt - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace Phalcon\Tests\Unit\Compiler; - -use Phalcon\Volt\Compiler; -use PHPUnit\Framework\TestCase; - -final class RawStatementTest extends TestCase -{ - private Compiler $compiler; - - public function setUp(): void - { - $this->compiler = new Compiler(); - } - - /** - * @return void - * - * @author Phalcon Team - * @since 2026-04-10 - */ - public function testMvcViewEngineVoltParserRawStatement(): void - { - $source = '{% raw %}{{ this is not parsed }}{% endraw %}'; - $expected = [ - [ - 'type' => 400, - 'content' => [ - 'type' => 359, - 'expr' => [ - 'type' => 273, - 'left' => [ - 'type' => 265, - 'value' => 'this', - 'file' => 'eval code', - 'line' => 1, - ], - 'right' => [ - 'type' => 265, - 'value' => 'parsed', - 'file' => 'eval code', - 'line' => 1, - ], - 'file' => 'eval code', - 'line' => 1, - ], - 'file' => 'eval code', - 'line' => 1, - ], - 'file' => 'eval code', - 'line' => 1, - ], - ]; - $actual = $this->compiler->parse($source); - $this->assertSame($expected, $actual); - } -} diff --git a/tests/unit/Compiler/VerbatimTest.php b/tests/unit/Compiler/VerbatimTest.php new file mode 100644 index 0000000..08e2fd3 --- /dev/null +++ b/tests/unit/Compiler/VerbatimTest.php @@ -0,0 +1,85 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Tests\Unit\Compiler; + +use Phalcon\Volt\Compiler; +use PHPUnit\Framework\TestCase; + +final class VerbatimTest extends TestCase +{ + /** + * @return array> + */ + public static function getVerbatimSources(): array + { + return [ + // Echo delimiters are emitted as-is + [ + '{% verbatim %}{{ foo }}{% endverbatim %}', + '{{ foo }}', + ], + // Statement delimiters are emitted as-is + [ + '{% verbatim %}{% if x %}literal{% endif %}{% endverbatim %}', + '{% if x %}literal{% endif %}', + ], + // Comment delimiters are emitted as-is + [ + '{% verbatim %}{# not a comment #}{% endverbatim %}', + '{# not a comment #}', + ], + // XML processing instruction + [ + "{% verbatim %}{% endverbatim %}", + "", + ], + // Handlebars/mustache style braces from the issue + [ + '{% verbatim %}{{ keep {{ }} }}{% endverbatim %}', + '{{ keep {{ }} }}', + ], + // Content before and after the block is compiled normally + [ + 'a {{ "b" }} {% verbatim %}{{ c }}{% endverbatim %} d', + "a {{ c }} d", + ], + // Empty block + [ + '{% verbatim %}{% endverbatim %}', + '', + ], + ]; + } + + /** + * Tests Phalcon\Volt\Compiler :: compileString() with the {% verbatim %} + * tag - its body is emitted literally, without being parsed. + * + * @dataProvider getVerbatimSources + * + * @issue https://github.com/phalcon/cphalcon/issues/17085 + * @author Phalcon Team + * @since 2026-06-15 + */ + public function testMvcViewEngineVoltCompilerVerbatim( + string $source, + string $expected + ): void { + $compiler = new Compiler(); + + $actual = $compiler->compileString($source); + + $this->assertSame($expected, $actual); + } +} diff --git a/tests/unit/Parser/ParserTest.php b/tests/unit/Parser/ParserTest.php index 6751eba..247b837 100644 --- a/tests/unit/Parser/ParserTest.php +++ b/tests/unit/Parser/ParserTest.php @@ -286,14 +286,15 @@ public function testCallAndEndcall(): void $this->assertSame(325, $result[0]['type']); // PHVOLT_T_CALL } - public function testRawAndEndraw(): void + public function testVerbatimAndEndverbatim(): void { $parser = new Parser(); - $result = $parser->parse('{% raw %}{{ not_evaluated }}{% endraw %}', 'test.volt'); + $result = $parser->parse('{% verbatim %}{{ not_evaluated }}{% endverbatim %}', 'test.volt'); $this->assertIsArray($result); $this->assertCount(1, $result); - $this->assertSame(400, $result[0]['type']); // PHVOLT_T_RAW + $this->assertSame(357, $result[0]['type']); // PHVOLT_T_RAW_FRAGMENT + $this->assertSame('{{ not_evaluated }}', $result[0]['value']); } public function testIncludeWith(): void diff --git a/tests/unit/Scanner/StateTest.php b/tests/unit/Scanner/StateTest.php index 57d0d76..9682242 100644 --- a/tests/unit/Scanner/StateTest.php +++ b/tests/unit/Scanner/StateTest.php @@ -30,7 +30,6 @@ public function testConstructorDefaults(): void $this->assertSame(0, $state->getBlockLevel()); $this->assertSame(0, $state->getExtendsMode()); $this->assertSame(0, $state->getForLevel()); - $this->assertSame(0, $state->getForcedRawState()); $this->assertSame(0, $state->getIfLevel()); $this->assertSame(0, $state->getMacroLevel()); $this->assertSame(0, $state->getOldIfLevel()); @@ -55,8 +54,8 @@ public function testSettersAndGetters(): void $state->setForLevel(3); $this->assertSame(3, $state->getForLevel()); - $state->setForcedRawState(1); - $this->assertSame(1, $state->getForcedRawState()); + $state->setVerbatim(1); + $this->assertSame(1, $state->getVerbatim()); $state->setIfLevel(1); $this->assertSame(1, $state->getIfLevel()); @@ -122,12 +121,6 @@ public function testIncrementMethods(): void $state->incrementStatementPosition(); $this->assertSame(1, $state->getStatementPosition()); - - $state->incrementForcedRawState(); - $this->assertSame(1, $state->getForcedRawState()); - - $state->decrementForcedRawState(); - $this->assertSame(0, $state->getForcedRawState()); } public function testGetPrevious(): void