From 4ff25bbe59b605bd928d2bd865a1f5ca32509e09 Mon Sep 17 00:00:00 2001 From: hirosan Date: Sun, 4 May 2025 06:34:15 +0900 Subject: [PATCH] Support trailing comma in array (#1128) --- src/Parser/TemplateParser.php | 483 +++++++++--------- src/Parser/TemplateParser.y | 4 + .../ValueTests/Array/ArrayTest.php | 2 + 3 files changed, 251 insertions(+), 238 deletions(-) diff --git a/src/Parser/TemplateParser.php b/src/Parser/TemplateParser.php index 1a9ea97d..772df98d 100644 --- a/src/Parser/TemplateParser.php +++ b/src/Parser/TemplateParser.php @@ -263,9 +263,9 @@ class TemplateParser const TP_ARRAYOPEN = 57; const TP_QUOTE = 58; const TP_BACKTICK = 59; - const YY_NO_ACTION = 541; - const YY_ACCEPT_ACTION = 540; - const YY_ERROR_ACTION = 539; + const YY_NO_ACTION = 542; + const YY_ACCEPT_ACTION = 541; + const YY_ERROR_ACTION = 540; const YY_SZ_ACTTAB = 2565; public static $yy_action = array( @@ -286,7 +286,7 @@ public static $yy_action = array( 278, 226, 302, 282, 200, 203, 446, 53, 4, 115, 302, 47, 22, 285, 41, 5, 54, 247, 248, 249, 1, 139, 137, 267, 202, 141, 6, 87, 14, 222, - 540, 99, 112, 151, 15, 446, 217, 261, 218, 314, + 541, 99, 112, 151, 15, 446, 217, 261, 218, 314, 224, 216, 21, 256, 233, 44, 9, 446, 45, 46, 278, 226, 325, 282, 268, 203, 53, 53, 4, 302, 302, 152, 257, 361, 320, 5, 54, 247, 248, 249, @@ -338,194 +338,194 @@ public static $yy_action = array( 288, 362, 216, 327, 200, 114, 396, 362, 201, 119, 72, 336, 396, 37, 259, 101, 393, 19, 273, 274, 154, 258, 228, 339, 94, 281, 204, 283, 393, 289, - 256, 300, 298, 301, 393, 38, 313, 288, 313, 216, - 313, 313, 114, 207, 319, 201, 119, 72, 313, 313, - 313, 313, 101, 221, 184, 273, 274, 156, 313, 313, - 313, 95, 281, 204, 283, 313, 289, 256, 300, 298, - 301, 313, 313, 313, 288, 313, 216, 313, 313, 108, - 206, 319, 201, 122, 51, 313, 120, 313, 313, 101, - 313, 184, 273, 274, 313, 313, 313, 313, 313, 281, - 204, 283, 313, 289, 313, 300, 298, 301, 288, 313, - 216, 313, 313, 114, 313, 313, 201, 122, 67, 313, - 313, 313, 313, 101, 313, 313, 273, 274, 313, 313, - 313, 313, 313, 281, 204, 283, 313, 289, 313, 300, - 298, 301, 288, 313, 216, 313, 313, 114, 212, 313, - 201, 122, 67, 313, 313, 313, 313, 101, 313, 313, - 273, 274, 313, 313, 313, 313, 313, 281, 204, 283, - 313, 289, 313, 300, 298, 301, 288, 313, 216, 313, - 313, 114, 205, 313, 201, 119, 72, 313, 313, 313, - 313, 101, 313, 313, 273, 274, 313, 313, 313, 313, - 313, 281, 204, 283, 313, 289, 313, 300, 298, 301, - 313, 313, 313, 288, 313, 216, 313, 313, 114, 313, - 318, 201, 122, 78, 313, 313, 313, 313, 101, 313, - 482, 273, 274, 482, 313, 313, 313, 482, 281, 204, - 283, 313, 289, 209, 211, 298, 301, 288, 313, 216, - 313, 313, 108, 313, 313, 201, 122, 58, 313, 238, - 313, 313, 101, 313, 313, 273, 274, 313, 313, 482, - 313, 313, 281, 204, 283, 313, 289, 313, 300, 298, - 301, 288, 313, 216, 313, 313, 114, 313, 313, 201, - 118, 64, 313, 313, 313, 313, 101, 313, 313, 273, - 274, 313, 313, 313, 313, 313, 281, 204, 283, 313, - 289, 313, 300, 298, 301, 288, 313, 216, 313, 313, - 114, 313, 313, 196, 117, 59, 313, 313, 313, 313, - 101, 313, 313, 273, 274, 313, 313, 313, 313, 313, - 281, 204, 283, 313, 289, 313, 300, 298, 301, 288, - 313, 216, 313, 313, 114, 313, 313, 201, 104, 84, - 313, 313, 313, 313, 101, 313, 313, 273, 274, 313, - 313, 313, 313, 313, 281, 204, 283, 313, 289, 313, - 300, 298, 301, 288, 313, 216, 313, 313, 114, 313, - 313, 201, 105, 83, 313, 313, 313, 313, 101, 313, - 313, 273, 274, 313, 313, 313, 313, 313, 281, 204, - 283, 313, 289, 313, 300, 298, 301, 288, 313, 216, - 313, 313, 114, 313, 313, 201, 122, 55, 313, 313, - 313, 313, 101, 313, 313, 273, 274, 313, 313, 313, - 313, 313, 281, 204, 283, 313, 289, 313, 300, 298, - 301, 288, 313, 216, 313, 313, 114, 313, 313, 201, - 122, 66, 313, 313, 313, 313, 101, 313, 313, 273, - 274, 313, 313, 313, 313, 313, 281, 204, 283, 313, - 289, 313, 300, 298, 301, 288, 313, 216, 313, 313, - 114, 313, 313, 201, 104, 56, 313, 313, 313, 313, - 101, 313, 313, 273, 274, 313, 313, 313, 313, 313, - 281, 204, 283, 313, 289, 313, 300, 298, 301, 288, - 313, 216, 313, 313, 114, 313, 313, 201, 122, 65, - 313, 313, 313, 313, 101, 313, 313, 273, 274, 313, - 313, 313, 313, 313, 281, 204, 283, 313, 289, 313, - 300, 298, 301, 288, 313, 216, 313, 313, 114, 313, - 313, 201, 122, 57, 313, 313, 313, 313, 101, 313, - 313, 273, 274, 313, 313, 313, 313, 313, 281, 204, - 283, 313, 289, 313, 300, 298, 301, 288, 313, 216, - 313, 313, 114, 313, 313, 201, 122, 58, 313, 313, - 313, 313, 101, 313, 313, 273, 274, 313, 313, 313, - 313, 313, 281, 204, 283, 313, 289, 313, 300, 298, - 301, 288, 313, 216, 313, 313, 114, 313, 313, 201, - 122, 68, 313, 313, 313, 313, 101, 313, 313, 273, - 274, 313, 313, 313, 313, 313, 281, 204, 283, 313, - 289, 313, 300, 298, 301, 288, 313, 216, 313, 313, - 114, 313, 313, 201, 122, 69, 313, 313, 313, 313, - 101, 313, 313, 273, 274, 313, 313, 313, 313, 313, - 281, 204, 283, 313, 289, 313, 300, 298, 301, 288, - 313, 216, 313, 313, 114, 313, 313, 201, 122, 70, - 313, 313, 313, 313, 101, 313, 313, 273, 274, 313, - 313, 313, 313, 313, 281, 204, 283, 313, 289, 313, - 300, 298, 301, 288, 313, 216, 313, 313, 114, 313, - 313, 201, 122, 71, 313, 313, 313, 313, 101, 313, - 313, 273, 274, 313, 313, 313, 313, 313, 281, 204, - 283, 313, 289, 313, 300, 298, 301, 288, 313, 216, - 313, 313, 114, 313, 313, 201, 122, 73, 313, 313, - 313, 313, 101, 313, 313, 273, 274, 313, 313, 313, - 313, 313, 281, 204, 283, 313, 289, 313, 300, 298, - 301, 288, 313, 216, 313, 313, 114, 313, 313, 195, - 122, 61, 313, 313, 313, 313, 101, 313, 313, 273, - 274, 313, 313, 313, 313, 313, 281, 204, 283, 313, - 289, 313, 300, 298, 301, 288, 313, 216, 313, 313, - 114, 313, 313, 201, 122, 62, 313, 313, 313, 313, - 101, 313, 313, 273, 274, 313, 313, 313, 313, 313, - 281, 204, 283, 313, 289, 313, 300, 298, 301, 288, - 313, 216, 313, 313, 114, 313, 313, 201, 122, 63, - 313, 313, 313, 313, 101, 313, 313, 273, 274, 313, - 313, 313, 313, 313, 281, 204, 283, 313, 289, 313, - 300, 298, 301, 288, 313, 216, 313, 313, 114, 313, - 313, 201, 122, 74, 313, 313, 313, 313, 101, 313, - 313, 273, 274, 313, 313, 313, 313, 313, 281, 204, - 283, 313, 289, 313, 300, 298, 301, 288, 313, 216, - 313, 313, 114, 313, 313, 201, 122, 75, 313, 313, - 313, 313, 101, 313, 313, 273, 274, 313, 313, 313, - 313, 313, 281, 204, 283, 313, 289, 313, 300, 298, - 301, 288, 313, 216, 313, 313, 114, 313, 313, 201, - 122, 76, 313, 313, 313, 313, 101, 313, 313, 273, - 274, 313, 313, 313, 313, 313, 281, 204, 283, 313, - 289, 313, 300, 298, 301, 288, 313, 216, 313, 313, - 114, 313, 313, 201, 122, 77, 313, 313, 313, 313, - 101, 313, 313, 273, 274, 313, 313, 313, 313, 313, - 281, 204, 283, 313, 289, 313, 300, 298, 301, 288, - 313, 216, 313, 313, 114, 313, 313, 201, 122, 79, - 313, 313, 313, 313, 101, 313, 313, 273, 274, 313, - 313, 313, 313, 313, 281, 204, 283, 313, 289, 313, - 210, 298, 301, 288, 313, 216, 313, 313, 114, 313, - 313, 201, 122, 80, 313, 313, 313, 313, 101, 313, - 313, 273, 274, 313, 313, 313, 313, 313, 281, 204, - 283, 313, 289, 313, 300, 298, 301, 288, 313, 216, - 313, 313, 114, 313, 313, 201, 122, 81, 313, 313, - 313, 313, 101, 313, 313, 273, 274, 313, 313, 313, - 313, 313, 281, 204, 283, 313, 289, 313, 300, 298, - 301, 288, 313, 216, 313, 313, 114, 313, 313, 201, - 122, 82, 313, 313, 313, 313, 101, 313, 313, 273, - 274, 313, 313, 313, 313, 313, 281, 204, 283, 313, - 289, 313, 300, 298, 301, 288, 313, 216, 313, 313, - 114, 313, 313, 201, 122, 50, 313, 313, 313, 313, - 101, 313, 313, 273, 274, 313, 313, 313, 313, 313, - 281, 204, 283, 313, 289, 313, 300, 298, 301, 288, - 313, 216, 313, 313, 114, 313, 313, 201, 122, 52, - 313, 313, 313, 313, 101, 313, 313, 273, 274, 313, - 313, 313, 313, 313, 281, 204, 283, 313, 289, 313, - 300, 298, 301, 288, 313, 216, 168, 313, 114, 313, - 313, 201, 134, 313, 313, 313, 256, 313, 101, 47, - 22, 285, 41, 313, 313, 313, 313, 333, 281, 204, - 283, 313, 289, 313, 300, 298, 301, 288, 313, 216, - 145, 313, 114, 313, 313, 201, 128, 313, 313, 313, - 256, 313, 101, 47, 22, 285, 41, 313, 313, 313, - 313, 287, 281, 204, 283, 315, 289, 313, 300, 298, - 301, 247, 248, 249, 2, 313, 313, 313, 313, 313, - 6, 87, 259, 313, 313, 19, 112, 313, 14, 258, - 217, 261, 218, 313, 15, 39, 313, 14, 14, 42, - 43, 286, 12, 15, 15, 313, 313, 313, 42, 43, - 286, 12, 313, 313, 313, 313, 293, 294, 295, 296, - 308, 27, 313, 313, 315, 293, 294, 295, 296, 313, - 247, 248, 249, 2, 313, 313, 313, 110, 313, 6, - 87, 313, 313, 313, 313, 112, 313, 313, 148, 217, - 261, 218, 313, 42, 43, 286, 12, 313, 42, 43, - 286, 12, 313, 313, 313, 313, 313, 313, 313, 313, - 293, 294, 295, 296, 313, 293, 294, 295, 296, 309, - 27, 313, 313, 240, 241, 242, 133, 223, 313, 247, - 248, 249, 1, 313, 482, 313, 313, 482, 6, 87, - 3, 482, 466, 313, 112, 313, 276, 313, 217, 261, - 218, 288, 313, 216, 313, 313, 114, 313, 313, 201, - 132, 313, 313, 313, 313, 313, 101, 313, 466, 313, - 313, 466, 313, 482, 313, 466, 281, 204, 283, 313, - 289, 313, 300, 298, 301, 313, 288, 313, 216, 313, - 200, 114, 313, 313, 201, 123, 313, 313, 313, 313, - 313, 101, 365, 313, 313, 313, 230, 313, 313, 313, - 313, 281, 204, 283, 14, 289, 313, 300, 298, 301, - 15, 313, 288, 446, 216, 313, 169, 114, 313, 313, - 201, 124, 313, 313, 313, 446, 256, 101, 313, 47, - 22, 285, 41, 313, 313, 313, 313, 281, 204, 283, - 313, 289, 313, 300, 298, 301, 313, 288, 313, 216, - 313, 313, 114, 313, 313, 201, 125, 313, 313, 313, - 313, 313, 101, 313, 313, 313, 313, 313, 313, 313, - 313, 313, 281, 204, 283, 313, 289, 313, 300, 298, - 301, 313, 313, 288, 313, 216, 313, 313, 114, 313, - 313, 201, 126, 313, 313, 313, 313, 313, 101, 313, - 313, 313, 313, 313, 313, 313, 313, 313, 281, 204, - 283, 313, 289, 313, 300, 298, 301, 313, 288, 313, - 216, 313, 313, 114, 313, 313, 201, 127, 313, 313, - 313, 313, 313, 101, 313, 313, 313, 313, 313, 313, - 313, 313, 313, 281, 204, 283, 313, 289, 313, 300, - 298, 301, 313, 313, 288, 313, 216, 223, 313, 114, - 313, 313, 201, 131, 482, 313, 313, 482, 313, 101, - 313, 482, 466, 313, 313, 313, 276, 313, 313, 281, - 204, 283, 313, 289, 313, 300, 298, 301, 313, 313, - 409, 313, 313, 313, 313, 313, 313, 313, 466, 313, - 313, 466, 313, 482, 223, 466, 292, 313, 313, 313, - 313, 482, 313, 313, 482, 313, 313, 36, 482, 466, - 313, 223, 446, 276, 409, 409, 409, 409, 482, 313, - 313, 482, 313, 313, 446, 482, 466, 313, 313, 30, - 276, 409, 409, 409, 409, 466, 482, 313, 466, 482, - 482, 313, 466, 482, 466, 313, 313, 313, 276, 313, - 313, 313, 466, 313, 313, 466, 332, 482, 313, 466, - 313, 313, 313, 313, 313, 331, 42, 43, 286, 12, - 466, 313, 313, 466, 313, 482, 313, 466, 313, 42, - 43, 286, 12, 293, 294, 295, 296, 307, 313, 42, - 43, 286, 12, 185, 313, 313, 293, 294, 295, 296, - 186, 313, 313, 313, 322, 313, 293, 294, 295, 296, - 42, 43, 286, 12, 31, 313, 42, 43, 286, 12, - 313, 334, 313, 42, 43, 286, 12, 293, 294, 295, - 296, 313, 313, 293, 294, 295, 296, 313, 313, 313, + 256, 300, 298, 301, 393, 38, 314, 288, 314, 216, + 314, 314, 114, 207, 319, 201, 119, 72, 314, 314, + 314, 314, 101, 221, 184, 273, 274, 156, 314, 314, + 314, 95, 281, 204, 283, 314, 289, 256, 300, 298, + 301, 314, 314, 314, 288, 314, 216, 314, 314, 108, + 206, 319, 201, 122, 51, 314, 120, 314, 314, 101, + 314, 184, 273, 274, 314, 314, 314, 314, 314, 281, + 204, 283, 314, 289, 314, 300, 298, 301, 288, 314, + 216, 314, 314, 114, 314, 314, 201, 122, 67, 314, + 314, 314, 314, 101, 314, 314, 273, 274, 314, 314, + 314, 314, 314, 281, 204, 283, 314, 289, 314, 300, + 298, 301, 288, 314, 216, 314, 314, 114, 212, 314, + 201, 122, 67, 314, 314, 314, 314, 101, 314, 314, + 273, 274, 314, 314, 314, 314, 314, 281, 204, 283, + 314, 289, 314, 300, 298, 301, 288, 314, 216, 314, + 314, 114, 205, 314, 201, 119, 72, 314, 314, 314, + 314, 101, 314, 314, 273, 274, 314, 314, 314, 314, + 314, 281, 204, 283, 314, 289, 314, 300, 298, 301, + 314, 314, 314, 288, 314, 216, 314, 314, 114, 314, + 318, 201, 122, 78, 314, 314, 314, 314, 101, 314, + 482, 273, 274, 482, 314, 314, 314, 482, 281, 204, + 283, 314, 289, 209, 211, 298, 301, 288, 314, 216, + 314, 314, 108, 314, 314, 201, 122, 58, 314, 238, + 314, 314, 101, 314, 314, 273, 274, 314, 314, 482, + 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, + 301, 288, 314, 216, 314, 314, 114, 314, 314, 201, + 118, 64, 314, 314, 314, 314, 101, 314, 314, 273, + 274, 314, 314, 314, 314, 314, 281, 204, 283, 314, + 289, 314, 300, 298, 301, 288, 314, 216, 314, 314, + 114, 314, 314, 196, 117, 59, 314, 314, 314, 314, + 101, 314, 314, 273, 274, 314, 314, 314, 314, 314, + 281, 204, 283, 314, 289, 314, 300, 298, 301, 288, + 314, 216, 314, 314, 114, 314, 314, 201, 104, 84, + 314, 314, 314, 314, 101, 314, 314, 273, 274, 314, + 314, 314, 314, 314, 281, 204, 283, 314, 289, 314, + 300, 298, 301, 288, 314, 216, 314, 314, 114, 314, + 314, 201, 105, 83, 314, 314, 314, 314, 101, 314, + 314, 273, 274, 314, 314, 314, 314, 314, 281, 204, + 283, 314, 289, 314, 300, 298, 301, 288, 314, 216, + 314, 314, 114, 314, 314, 201, 122, 55, 314, 314, + 314, 314, 101, 314, 314, 273, 274, 314, 314, 314, + 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, + 301, 288, 314, 216, 314, 314, 114, 314, 314, 201, + 122, 66, 314, 314, 314, 314, 101, 314, 314, 273, + 274, 314, 314, 314, 314, 314, 281, 204, 283, 314, + 289, 314, 300, 298, 301, 288, 314, 216, 314, 314, + 114, 314, 314, 201, 104, 56, 314, 314, 314, 314, + 101, 314, 314, 273, 274, 314, 314, 314, 314, 314, + 281, 204, 283, 314, 289, 314, 300, 298, 301, 288, + 314, 216, 314, 314, 114, 314, 314, 201, 122, 65, + 314, 314, 314, 314, 101, 314, 314, 273, 274, 314, + 314, 314, 314, 314, 281, 204, 283, 314, 289, 314, + 300, 298, 301, 288, 314, 216, 314, 314, 114, 314, + 314, 201, 122, 57, 314, 314, 314, 314, 101, 314, + 314, 273, 274, 314, 314, 314, 314, 314, 281, 204, + 283, 314, 289, 314, 300, 298, 301, 288, 314, 216, + 314, 314, 114, 314, 314, 201, 122, 58, 314, 314, + 314, 314, 101, 314, 314, 273, 274, 314, 314, 314, + 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, + 301, 288, 314, 216, 314, 314, 114, 314, 314, 201, + 122, 68, 314, 314, 314, 314, 101, 314, 314, 273, + 274, 314, 314, 314, 314, 314, 281, 204, 283, 314, + 289, 314, 300, 298, 301, 288, 314, 216, 314, 314, + 114, 314, 314, 201, 122, 69, 314, 314, 314, 314, + 101, 314, 314, 273, 274, 314, 314, 314, 314, 314, + 281, 204, 283, 314, 289, 314, 300, 298, 301, 288, + 314, 216, 314, 314, 114, 314, 314, 201, 122, 70, + 314, 314, 314, 314, 101, 314, 314, 273, 274, 314, + 314, 314, 314, 314, 281, 204, 283, 314, 289, 314, + 300, 298, 301, 288, 314, 216, 314, 314, 114, 314, + 314, 201, 122, 71, 314, 314, 314, 314, 101, 314, + 314, 273, 274, 314, 314, 314, 314, 314, 281, 204, + 283, 314, 289, 314, 300, 298, 301, 288, 314, 216, + 314, 314, 114, 314, 314, 201, 122, 73, 314, 314, + 314, 314, 101, 314, 314, 273, 274, 314, 314, 314, + 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, + 301, 288, 314, 216, 314, 314, 114, 314, 314, 195, + 122, 61, 314, 314, 314, 314, 101, 314, 314, 273, + 274, 314, 314, 314, 314, 314, 281, 204, 283, 314, + 289, 314, 300, 298, 301, 288, 314, 216, 314, 314, + 114, 314, 314, 201, 122, 62, 314, 314, 314, 314, + 101, 314, 314, 273, 274, 314, 314, 314, 314, 314, + 281, 204, 283, 314, 289, 314, 300, 298, 301, 288, + 314, 216, 314, 314, 114, 314, 314, 201, 122, 63, + 314, 314, 314, 314, 101, 314, 314, 273, 274, 314, + 314, 314, 314, 314, 281, 204, 283, 314, 289, 314, + 300, 298, 301, 288, 314, 216, 314, 314, 114, 314, + 314, 201, 122, 74, 314, 314, 314, 314, 101, 314, + 314, 273, 274, 314, 314, 314, 314, 314, 281, 204, + 283, 314, 289, 314, 300, 298, 301, 288, 314, 216, + 314, 314, 114, 314, 314, 201, 122, 75, 314, 314, + 314, 314, 101, 314, 314, 273, 274, 314, 314, 314, + 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, + 301, 288, 314, 216, 314, 314, 114, 314, 314, 201, + 122, 76, 314, 314, 314, 314, 101, 314, 314, 273, + 274, 314, 314, 314, 314, 314, 281, 204, 283, 314, + 289, 314, 300, 298, 301, 288, 314, 216, 314, 314, + 114, 314, 314, 201, 122, 77, 314, 314, 314, 314, + 101, 314, 314, 273, 274, 314, 314, 314, 314, 314, + 281, 204, 283, 314, 289, 314, 300, 298, 301, 288, + 314, 216, 314, 314, 114, 314, 314, 201, 122, 79, + 314, 314, 314, 314, 101, 314, 314, 273, 274, 314, + 314, 314, 314, 314, 281, 204, 283, 314, 289, 314, + 210, 298, 301, 288, 314, 216, 314, 314, 114, 314, + 314, 201, 122, 80, 314, 314, 314, 314, 101, 314, + 314, 273, 274, 314, 314, 314, 314, 314, 281, 204, + 283, 314, 289, 314, 300, 298, 301, 288, 314, 216, + 314, 314, 114, 314, 314, 201, 122, 81, 314, 314, + 314, 314, 101, 314, 314, 273, 274, 314, 314, 314, + 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, + 301, 288, 314, 216, 314, 314, 114, 314, 314, 201, + 122, 82, 314, 314, 314, 314, 101, 314, 314, 273, + 274, 314, 314, 314, 314, 314, 281, 204, 283, 314, + 289, 314, 300, 298, 301, 288, 314, 216, 314, 314, + 114, 314, 314, 201, 122, 50, 314, 314, 314, 314, + 101, 314, 314, 273, 274, 314, 314, 314, 314, 314, + 281, 204, 283, 314, 289, 314, 300, 298, 301, 288, + 314, 216, 314, 314, 114, 314, 314, 201, 122, 52, + 314, 314, 314, 314, 101, 314, 314, 273, 274, 314, + 314, 314, 314, 314, 281, 204, 283, 314, 289, 314, + 300, 298, 301, 288, 314, 216, 168, 314, 114, 314, + 314, 201, 134, 314, 314, 314, 256, 314, 101, 47, + 22, 285, 41, 314, 314, 314, 314, 333, 281, 204, + 283, 314, 289, 314, 300, 298, 301, 288, 314, 216, + 145, 314, 114, 314, 314, 201, 128, 314, 314, 314, + 256, 314, 101, 47, 22, 285, 41, 314, 314, 314, + 314, 287, 281, 204, 283, 315, 289, 314, 300, 298, + 301, 247, 248, 249, 2, 314, 313, 314, 314, 314, + 6, 87, 259, 314, 314, 19, 112, 314, 14, 258, + 217, 261, 218, 314, 15, 39, 314, 14, 14, 42, + 43, 286, 12, 15, 15, 314, 314, 314, 42, 43, + 286, 12, 314, 314, 314, 314, 293, 294, 295, 296, + 308, 27, 314, 314, 315, 293, 294, 295, 296, 314, + 247, 248, 249, 2, 314, 313, 314, 110, 314, 6, + 87, 314, 314, 314, 314, 112, 314, 314, 148, 217, + 261, 218, 314, 42, 43, 286, 12, 314, 42, 43, + 286, 12, 314, 314, 314, 314, 314, 314, 314, 314, + 293, 294, 295, 296, 314, 293, 294, 295, 296, 309, + 27, 314, 314, 240, 241, 242, 133, 223, 314, 247, + 248, 249, 1, 314, 482, 314, 314, 482, 6, 87, + 3, 482, 466, 314, 112, 314, 276, 314, 217, 261, + 218, 288, 314, 216, 314, 314, 114, 314, 314, 201, + 132, 314, 314, 314, 314, 314, 101, 314, 466, 314, + 314, 466, 314, 482, 314, 466, 281, 204, 283, 314, + 289, 314, 300, 298, 301, 314, 288, 314, 216, 314, + 200, 114, 314, 314, 201, 123, 314, 314, 314, 314, + 314, 101, 365, 314, 314, 314, 230, 314, 314, 314, + 314, 281, 204, 283, 14, 289, 314, 300, 298, 301, + 15, 314, 288, 446, 216, 314, 169, 114, 314, 314, + 201, 124, 314, 314, 314, 446, 256, 101, 314, 47, + 22, 285, 41, 314, 314, 314, 314, 281, 204, 283, + 314, 289, 314, 300, 298, 301, 314, 288, 314, 216, + 314, 314, 114, 314, 314, 201, 125, 314, 314, 314, + 314, 314, 101, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, + 301, 314, 314, 288, 314, 216, 314, 314, 114, 314, + 314, 201, 126, 314, 314, 314, 314, 314, 101, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 281, 204, + 283, 314, 289, 314, 300, 298, 301, 314, 288, 314, + 216, 314, 314, 114, 314, 314, 201, 127, 314, 314, + 314, 314, 314, 101, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 281, 204, 283, 314, 289, 314, 300, + 298, 301, 314, 314, 288, 314, 216, 223, 314, 114, + 314, 314, 201, 131, 482, 314, 314, 482, 314, 101, + 314, 482, 466, 314, 314, 314, 276, 314, 314, 281, + 204, 283, 314, 289, 314, 300, 298, 301, 314, 314, + 409, 314, 314, 314, 314, 314, 314, 314, 466, 314, + 314, 466, 314, 482, 223, 466, 292, 314, 314, 314, + 314, 482, 314, 314, 482, 314, 314, 36, 482, 466, + 314, 223, 446, 276, 409, 409, 409, 409, 482, 314, + 314, 482, 314, 314, 446, 482, 466, 314, 314, 30, + 276, 409, 409, 409, 409, 466, 482, 314, 466, 482, + 482, 314, 466, 482, 466, 314, 314, 314, 276, 314, + 314, 314, 466, 314, 314, 466, 332, 482, 314, 466, + 314, 314, 314, 314, 314, 331, 42, 43, 286, 12, + 466, 314, 314, 466, 314, 482, 314, 466, 314, 42, + 43, 286, 12, 293, 294, 295, 296, 307, 314, 42, + 43, 286, 12, 185, 314, 314, 293, 294, 295, 296, + 186, 314, 314, 314, 322, 314, 293, 294, 295, 296, + 42, 43, 286, 12, 31, 314, 42, 43, 286, 12, + 314, 334, 314, 42, 43, 286, 12, 293, 294, 295, + 296, 314, 314, 293, 294, 295, 296, 314, 314, 314, 293, 294, 295, 296, 42, 43, 286, 12, 42, 43, - 286, 12, 482, 313, 313, 482, 313, 313, 313, 482, - 466, 293, 294, 295, 296, 293, 294, 295, 296, 313, - 313, 313, 259, 313, 313, 19, 313, 313, 313, 258, - 313, 313, 313, 313, 313, 313, 466, 313, 14, 466, - 150, 482, 313, 466, 15, + 286, 12, 482, 314, 314, 482, 314, 314, 314, 482, + 466, 293, 294, 295, 296, 293, 294, 295, 296, 314, + 314, 314, 259, 314, 314, 19, 314, 314, 314, 258, + 314, 314, 314, 314, 314, 314, 466, 314, 14, 466, + 150, 482, 314, 466, 15, ); public static $yy_lookahead = array( 2, 80, 100, 13, 102, 103, 1, 9, 10, 11, @@ -1180,45 +1180,45 @@ public static $yy_action = array( array(), ); public static $yy_default = array( - 350, 539, 539, 539, 524, 524, 539, 501, 501, 539, - 452, 539, 539, 539, 539, 539, 539, 539, 539, 539, - 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, - 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, - 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, - 390, 369, 390, 539, 539, 539, 395, 539, 539, 539, - 363, 539, 539, 539, 539, 539, 374, 500, 413, 420, - 499, 525, 527, 526, 419, 421, 418, 422, 451, 449, - 397, 401, 402, 392, 395, 363, 433, 539, 390, 539, - 390, 390, 514, 454, 390, 390, 539, 539, 381, 340, - 453, 466, 539, 404, 404, 404, 466, 466, 454, 390, - 539, 390, 390, 384, 454, 539, 539, 404, 404, 404, + 350, 540, 540, 540, 525, 525, 540, 501, 501, 524, + 452, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 390, 369, 390, 540, 540, 540, 395, 540, 540, 540, + 363, 540, 540, 540, 540, 540, 374, 500, 413, 420, + 499, 526, 528, 527, 419, 421, 418, 422, 451, 449, + 397, 401, 402, 392, 395, 363, 433, 540, 390, 540, + 390, 390, 514, 454, 390, 390, 540, 540, 381, 340, + 453, 466, 540, 404, 404, 404, 466, 466, 454, 390, + 540, 390, 390, 384, 454, 540, 540, 404, 404, 404, 371, 386, 404, 411, 424, 425, 426, 412, 417, 454, 511, 424, 410, 348, 508, 453, 453, 453, 453, 453, - 539, 468, 466, 482, 360, 370, 539, 373, 539, 378, - 539, 379, 463, 464, 364, 366, 367, 368, 492, 466, + 540, 468, 466, 482, 360, 370, 540, 373, 540, 378, + 540, 379, 463, 464, 364, 366, 367, 368, 492, 466, 491, 494, 493, 457, 458, 459, 460, 380, 376, 377, 372, 382, 502, 385, 387, 503, 442, 466, 488, 515, 512, 348, 507, 507, 507, 466, 466, 433, 429, 433, - 423, 423, 467, 433, 433, 423, 423, 346, 539, 539, - 539, 423, 433, 443, 539, 539, 539, 539, 429, 539, - 461, 461, 539, 429, 539, 539, 539, 539, 539, 539, - 539, 539, 539, 539, 429, 431, 539, 513, 539, 482, - 539, 539, 539, 539, 539, 438, 539, 539, 539, 398, + 423, 423, 467, 433, 433, 423, 423, 346, 540, 540, + 540, 423, 433, 443, 540, 540, 540, 540, 429, 540, + 461, 461, 540, 429, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 429, 431, 540, 513, 540, 482, + 540, 540, 540, 540, 540, 438, 540, 540, 540, 398, 341, 342, 343, 344, 345, 347, 349, 351, 352, 353, 354, 355, 356, 357, 359, 388, 389, 484, 485, 486, 506, 383, 504, 505, 427, 436, 437, 446, 447, 465, 469, 470, 471, 405, 406, 407, 408, 409, 428, 430, 432, 434, 438, 439, 440, 414, 415, 416, 441, 444, 445, 479, 477, 516, 517, 518, 519, 455, 456, 490, - 461, 462, 483, 498, 358, 489, 535, 536, 528, 529, - 530, 533, 532, 534, 537, 538, 531, 521, 523, 522, + 461, 462, 483, 498, 358, 489, 536, 537, 529, 530, + 531, 534, 533, 535, 538, 539, 532, 521, 523, 522, 520, 495, 480, 478, 476, 473, 474, 475, 481, 496, 497, 435, 472, 510, 487, 482, 391, 375, 399, 403, ); const YYNOCODE = 113; const YYSTACKDEPTH = 500; const YYNSTATE = 340; - const YYNRULE = 199; + const YYNRULE = 200; const YYERRORSYMBOL = 60; const YYERRSYMDT = 'yy0'; const YYFALLBACK = 0; @@ -1463,6 +1463,7 @@ public static $yy_action = array( 'arraydef ::= ARRAYOPEN arrayelements CLOSEP', 'arrayelements ::= arrayelement', 'arrayelements ::= arrayelements COMMA arrayelement', + 'arrayelements ::= arrayelements COMMA', 'arrayelements ::=', 'arrayelement ::= value APTR expr', 'arrayelement ::= ID APTR expr', @@ -1977,6 +1978,7 @@ public static $yy_action = array( array( 0 => 94, 1 => 3 ), array( 0 => 108, 1 => 1 ), array( 0 => 108, 1 => 3 ), + array( 0 => 108, 1 => 2 ), array( 0 => 108, 1 => 0 ), array( 0 => 109, 1 => 3 ), array( 0 => 109, 1 => 3 ), @@ -2022,7 +2024,7 @@ public static $yy_action = array( 106 => 6, 122 => 6, 182 => 6, - 187 => 6, + 188 => 6, 7 => 7, 8 => 8, 9 => 9, @@ -2131,7 +2133,7 @@ public static $yy_action = array( 123 => 123, 124 => 124, 126 => 126, - 184 => 126, + 185 => 126, 127 => 127, 128 => 128, 129 => 129, @@ -2149,7 +2151,7 @@ public static $yy_action = array( 141 => 141, 142 => 142, 143 => 143, - 188 => 143, + 189 => 143, 144 => 144, 146 => 146, 147 => 147, @@ -2181,18 +2183,19 @@ public static $yy_action = array( 180 => 180, 181 => 180, 183 => 183, - 185 => 185, + 184 => 184, 186 => 186, - 189 => 189, + 187 => 187, 190 => 190, 191 => 191, 192 => 192, - 195 => 192, 193 => 193, 196 => 193, 194 => 194, - 197 => 197, + 197 => 194, + 195 => 195, 198 => 198, + 199 => 199, ); // line 245 "src/Parser/TemplateParser.y" public function yy_r0(){ @@ -2961,46 +2964,50 @@ public static $yy_action = array( public function yy_r183(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; } -// line 1328 "src/Parser/TemplateParser.y" - public function yy_r185(){ - $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; +// line 1324 "src/Parser/TemplateParser.y" + public function yy_r184(){ + $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.','; } // line 1332 "src/Parser/TemplateParser.y" - public function yy_r186(){ + public function yy_r186(){ + $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; + } +// line 1336 "src/Parser/TemplateParser.y" + public function yy_r187(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; } -// line 1348 "src/Parser/TemplateParser.y" - public function yy_r189(){ +// line 1352 "src/Parser/TemplateParser.y" + public function yy_r190(){ $this->compiler->leaveDoubleQuote(); $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php($this); } -// line 1354 "src/Parser/TemplateParser.y" - public function yy_r190(){ +// line 1358 "src/Parser/TemplateParser.y" + public function yy_r191(){ $this->yystack[$this->yyidx + -1]->minor->append_subtree($this, $this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } -// line 1359 "src/Parser/TemplateParser.y" - public function yy_r191(){ - $this->_retvalue = new Dq($this, $this->yystack[$this->yyidx + 0]->minor); - } // line 1363 "src/Parser/TemplateParser.y" public function yy_r192(){ - $this->_retvalue = new Code('(string)'.$this->yystack[$this->yyidx + -1]->minor); + $this->_retvalue = new Dq($this, $this->yystack[$this->yyidx + 0]->minor); } // line 1367 "src/Parser/TemplateParser.y" public function yy_r193(){ - $this->_retvalue = new Code('(string)('.$this->yystack[$this->yyidx + -1]->minor.')'); + $this->_retvalue = new Code('(string)'.$this->yystack[$this->yyidx + -1]->minor); } // line 1371 "src/Parser/TemplateParser.y" public function yy_r194(){ - $this->_retvalue = new Code('(string)$_smarty_tpl->getValue(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')'); + $this->_retvalue = new Code('(string)('.$this->yystack[$this->yyidx + -1]->minor.')'); } -// line 1383 "src/Parser/TemplateParser.y" - public function yy_r197(){ - $this->_retvalue = new Tag($this, $this->yystack[$this->yyidx + 0]->minor); +// line 1375 "src/Parser/TemplateParser.y" + public function yy_r195(){ + $this->_retvalue = new Code('(string)$_smarty_tpl->getValue(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')'); } // line 1387 "src/Parser/TemplateParser.y" public function yy_r198(){ + $this->_retvalue = new Tag($this, $this->yystack[$this->yyidx + 0]->minor); + } +// line 1391 "src/Parser/TemplateParser.y" + public function yy_r199(){ $this->_retvalue = new DqContent($this->yystack[$this->yyidx + 0]->minor); } diff --git a/src/Parser/TemplateParser.y b/src/Parser/TemplateParser.y index 58d115fe..544148f1 100644 --- a/src/Parser/TemplateParser.y +++ b/src/Parser/TemplateParser.y @@ -1321,6 +1321,10 @@ arrayelements(res) ::= arrayelements(a1) COMMA arrayelement(a). { res = a1.','.a; } +arrayelements(res) ::= arrayelements(a) COMMA. { + res = a.','; +} + arrayelements ::= . { return; } diff --git a/tests/UnitTests/TemplateSource/ValueTests/Array/ArrayTest.php b/tests/UnitTests/TemplateSource/ValueTests/Array/ArrayTest.php index 94391ddd..096a38c7 100644 --- a/tests/UnitTests/TemplateSource/ValueTests/Array/ArrayTest.php +++ b/tests/UnitTests/TemplateSource/ValueTests/Array/ArrayTest.php @@ -70,6 +70,8 @@ class ArrayTest extends PHPUnit_Smarty array('{$foo=[1,2,[7,8,9],4,5]}{$x=2}{$foo.$x.0}', '7', 'T13', $i++), array('{$foo=[1,2,[7,8,9],4,5]}{$x=0}{$foo.2.$x}', '7', 'T14', $i++), array('{$foo=[1,2,[7,8,9],4,5]}{$x=[1,0]}{$foo.2.{$x.1}}', '7', 'T15', $i++), + array('{$foo=[1,2,3,4,5,]}{foreach $foo as $bar}{$bar}{/foreach}', '12345', 'T16', $i++), + array('{$foo=[1,2,3,4,5,[6,7,8,],]}{$foo[5][2]}', '8', 'T17', $i++), ); } }