diff options
| author | taiyoslime <[email protected]> | 2020-10-05 19:53:05 +0900 |
|---|---|---|
| committer | taiyoslime <[email protected]> | 2020-10-13 14:09:36 +0900 |
| commit | bec4d053400c3a11c8efd68c3e8bd5ea4a0bcc54 (patch) | |
| tree | 166195f4009b90a90d1fe1b28ad4c8c84ba2597d | |
| parent | 9ea7b718683386d2dc0787e919fc3d413ab20e67 (diff) | |
| download | mruby-bec4d053400c3a11c8efd68c3e8bd5ea4a0bcc54.tar.gz mruby-bec4d053400c3a11c8efd68c3e8bd5ea4a0bcc54.zip | |
Introduce endless range (a part of #5085)
Co-Authored-By: n4o847 <[email protected]>
Co-Authored-By: smallkirby <[email protected]>
| -rw-r--r-- | mrbgems/mruby-compiler/core/parse.y | 8 | ||||
| -rw-r--r-- | mrbgems/mruby-compiler/core/y.tab.c | 2478 | ||||
| -rw-r--r-- | mrbgems/mruby-range-ext/mrblib/range.rb | 16 | ||||
| -rw-r--r-- | mrbgems/mruby-range-ext/src/range.c | 16 | ||||
| -rw-r--r-- | mrbgems/mruby-range-ext/test/range.rb | 29 | ||||
| -rw-r--r-- | mrbgems/mruby-string-ext/mrblib/string.rb | 23 | ||||
| -rw-r--r-- | mrblib/range.rb | 26 | ||||
| -rw-r--r-- | src/range.c | 28 | ||||
| -rw-r--r-- | test/t/array.rb | 5 | ||||
| -rw-r--r-- | test/t/range.rb | 68 | ||||
| -rw-r--r-- | test/t/string.rb | 4 |
11 files changed, 1449 insertions, 1252 deletions
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 9de45a536..6033581fe 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -2118,10 +2118,18 @@ arg : lhs '=' arg_rhs { $$ = new_dot2(p, $1, $3); } + | arg tDOT2 + { + $$ = new_dot2(p, $1, new_nil(p)); + } | arg tDOT3 arg { $$ = new_dot3(p, $1, $3); } + | arg tDOT3 + { + $$ = new_dot3(p, $1, new_nil(p)); + } | arg '+' arg { $$ = call_bin_op(p, $1, "+", $3); diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index c570fb1d7..4a363096b 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -1907,7 +1907,7 @@ union yyalloc /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 176 /* YYNRULES -- Number of rules. */ -#define YYNRULES 594 +#define YYNRULES 596 /* YYNSTATES -- Number of states. */ #define YYNSTATES 1034 @@ -1991,43 +1991,43 @@ static const yytype_int16 yyrline[] = 2121, 2125, 2129, 2133, 2137, 2141, 2145, 2149, 2153, 2157, 2161, 2165, 2169, 2173, 2177, 2181, 2185, 2189, 2193, 2197, 2201, 2205, 2209, 2213, 2217, 2221, 2225, 2229, 2233, 2237, - 2241, 2245, 2249, 2255, 2256, 2261, 2265, 2272, 2276, 2284, - 2288, 2314, 2315, 2318, 2319, 2320, 2325, 2330, 2337, 2343, - 2348, 2353, 2358, 2365, 2365, 2376, 2382, 2386, 2392, 2393, - 2396, 2402, 2408, 2413, 2420, 2425, 2430, 2437, 2438, 2439, - 2440, 2441, 2442, 2443, 2444, 2448, 2453, 2452, 2464, 2468, - 2463, 2473, 2473, 2477, 2481, 2485, 2489, 2494, 2499, 2503, - 2507, 2511, 2515, 2519, 2520, 2526, 2532, 2525, 2544, 2552, - 2560, 2560, 2560, 2567, 2567, 2567, 2574, 2580, 2585, 2587, - 2584, 2596, 2594, 2612, 2617, 2610, 2634, 2632, 2649, 2653, - 2648, 2670, 2676, 2669, 2693, 2697, 2701, 2705, 2711, 2718, - 2719, 2720, 2723, 2724, 2727, 2728, 2736, 2737, 2743, 2747, - 2750, 2754, 2758, 2762, 2767, 2771, 2775, 2779, 2785, 2784, - 2794, 2798, 2802, 2806, 2812, 2817, 2822, 2826, 2830, 2834, + 2241, 2245, 2249, 2253, 2257, 2263, 2264, 2269, 2273, 2280, + 2284, 2292, 2296, 2322, 2323, 2326, 2327, 2328, 2333, 2338, + 2345, 2351, 2356, 2361, 2366, 2373, 2373, 2384, 2390, 2394, + 2400, 2401, 2404, 2410, 2416, 2421, 2428, 2433, 2438, 2445, + 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2456, 2461, 2460, + 2472, 2476, 2471, 2481, 2481, 2485, 2489, 2493, 2497, 2502, + 2507, 2511, 2515, 2519, 2523, 2527, 2528, 2534, 2540, 2533, + 2552, 2560, 2568, 2568, 2568, 2575, 2575, 2575, 2582, 2588, + 2593, 2595, 2592, 2604, 2602, 2620, 2625, 2618, 2642, 2640, + 2657, 2661, 2656, 2678, 2684, 2677, 2701, 2705, 2709, 2713, + 2719, 2726, 2727, 2728, 2731, 2732, 2735, 2736, 2744, 2745, + 2751, 2755, 2758, 2762, 2766, 2770, 2775, 2779, 2783, 2787, + 2793, 2792, 2802, 2806, 2810, 2814, 2820, 2825, 2830, 2834, 2838, 2842, 2846, 2850, 2854, 2858, 2862, 2866, 2870, 2874, - 2878, 2884, 2889, 2896, 2896, 2900, 2905, 2912, 2916, 2922, - 2923, 2926, 2931, 2934, 2938, 2944, 2948, 2955, 2954, 2969, - 2979, 2983, 2988, 2995, 2999, 3003, 3007, 3011, 3015, 3019, - 3023, 3027, 3034, 3033, 3048, 3047, 3063, 3071, 3080, 3083, - 3090, 3093, 3097, 3098, 3101, 3105, 3108, 3112, 3115, 3116, - 3117, 3118, 3121, 3122, 3128, 3129, 3130, 3134, 3140, 3141, - 3147, 3152, 3151, 3162, 3166, 3172, 3176, 3182, 3186, 3192, - 3195, 3196, 3199, 3205, 3211, 3212, 3215, 3222, 3221, 3235, - 3239, 3246, 3251, 3258, 3264, 3265, 3266, 3267, 3268, 3272, - 3278, 3282, 3288, 3289, 3290, 3294, 3300, 3304, 3308, 3312, - 3316, 3322, 3326, 3332, 3336, 3340, 3344, 3348, 3352, 3360, - 3367, 3378, 3379, 3383, 3387, 3386, 3402, 3408, 3426, 3432, - 3438, 3444, 3451, 3456, 3463, 3467, 3473, 3477, 3483, 3484, - 3487, 3491, 3497, 3501, 3505, 3509, 3515, 3520, 3525, 3529, + 2878, 2882, 2886, 2892, 2897, 2904, 2904, 2908, 2913, 2920, + 2924, 2930, 2931, 2934, 2939, 2942, 2946, 2952, 2956, 2963, + 2962, 2977, 2987, 2991, 2996, 3003, 3007, 3011, 3015, 3019, + 3023, 3027, 3031, 3035, 3042, 3041, 3056, 3055, 3071, 3079, + 3088, 3091, 3098, 3101, 3105, 3106, 3109, 3113, 3116, 3120, + 3123, 3124, 3125, 3126, 3129, 3130, 3136, 3137, 3138, 3142, + 3148, 3149, 3155, 3160, 3159, 3170, 3174, 3180, 3184, 3190, + 3194, 3200, 3203, 3204, 3207, 3213, 3219, 3220, 3223, 3230, + 3229, 3243, 3247, 3254, 3259, 3266, 3272, 3273, 3274, 3275, + 3276, 3280, 3286, 3290, 3296, 3297, 3298, 3302, 3308, 3312, + 3316, 3320, 3324, 3330, 3334, 3340, 3344, 3348, 3352, 3356, + 3360, 3368, 3375, 3386, 3387, 3391, 3395, 3394, 3410, 3416, + 3434, 3440, 3446, 3452, 3459, 3464, 3471, 3475, 3481, 3485, + 3491, 3492, 3495, 3499, 3505, 3509, 3513, 3517, 3523, 3528, 3533, 3537, 3541, 3545, 3549, 3553, 3557, 3561, 3565, 3569, - 3573, 3577, 3582, 3588, 3593, 3598, 3603, 3608, 3615, 3619, - 3626, 3631, 3630, 3642, 3646, 3652, 3660, 3668, 3676, 3680, - 3686, 3690, 3696, 3697, 3700, 3705, 3712, 3713, 3716, 3722, - 3726, 3732, 3737, 3737, 3762, 3763, 3769, 3774, 3780, 3781, - 3784, 3790, 3795, 3805, 3812, 3813, 3814, 3817, 3818, 3819, - 3820, 3823, 3824, 3825, 3828, 3829, 3832, 3836, 3842, 3843, - 3849, 3850, 3853, 3854, 3857, 3860, 3861, 3862, 3865, 3866, - 3867, 3870, 3877, 3878, 3882 + 3573, 3577, 3581, 3585, 3590, 3596, 3601, 3606, 3611, 3616, + 3623, 3627, 3634, 3639, 3638, 3650, 3654, 3660, 3668, 3676, + 3684, 3688, 3694, 3698, 3704, 3705, 3708, 3713, 3720, 3721, + 3724, 3730, 3734, 3740, 3745, 3745, 3770, 3771, 3777, 3782, + 3788, 3789, 3792, 3798, 3803, 3813, 3820, 3821, 3822, 3825, + 3826, 3827, 3828, 3831, 3832, 3833, 3836, 3837, 3840, 3844, + 3850, 3851, 3857, 3858, 3861, 3862, 3865, 3868, 3869, 3870, + 3873, 3874, 3875, 3878, 3885, 3886, 3890 }; #endif @@ -2126,7 +2126,7 @@ static const yytype_int16 yytoknum[] = #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-595) +#define YYTABLE_NINF (-597) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -2246,110 +2246,110 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 0, 1, 0, 0, 0, 0, 276, 0, - 0, 300, 303, 0, 0, 580, 324, 325, 326, 327, - 288, 253, 400, 475, 474, 476, 477, 582, 0, 10, - 0, 479, 478, 480, 466, 275, 468, 467, 470, 469, - 462, 463, 424, 425, 481, 482, 274, 0, 0, 0, - 0, 278, 594, 594, 80, 295, 0, 0, 0, 0, - 0, 0, 439, 0, 0, 0, 3, 580, 6, 9, + 2, 0, 0, 1, 0, 0, 0, 0, 278, 0, + 0, 302, 305, 0, 0, 582, 326, 327, 328, 329, + 290, 255, 402, 477, 476, 478, 479, 584, 0, 10, + 0, 481, 480, 482, 468, 277, 470, 469, 472, 471, + 464, 465, 426, 427, 483, 484, 276, 0, 0, 0, + 0, 280, 596, 596, 80, 297, 0, 0, 0, 0, + 0, 0, 441, 0, 0, 0, 3, 582, 6, 9, 27, 32, 44, 52, 51, 0, 68, 0, 72, 82, - 0, 49, 232, 0, 53, 293, 267, 268, 422, 269, - 270, 271, 420, 419, 451, 421, 418, 473, 0, 272, - 273, 253, 5, 8, 324, 325, 288, 594, 400, 0, - 105, 106, 274, 0, 0, 0, 0, 108, 483, 328, - 0, 473, 273, 0, 316, 160, 170, 161, 157, 186, + 0, 49, 234, 0, 53, 295, 269, 270, 424, 271, + 272, 273, 422, 421, 453, 423, 420, 475, 0, 274, + 275, 255, 5, 8, 326, 327, 290, 596, 402, 0, + 105, 106, 276, 0, 0, 0, 0, 108, 485, 330, + 0, 475, 275, 0, 318, 160, 170, 161, 157, 186, 187, 188, 189, 168, 183, 176, 166, 165, 181, 164, 163, 159, 184, 158, 171, 175, 177, 169, 162, 178, 185, 180, 179, 172, 182, 167, 156, 174, 173, 155, 153, 154, 150, 151, 152, 110, 112, 111, 145, 146, 141, 123, 124, 125, 132, 129, 131, 126, 127, 147, 148, 133, 134, 138, 142, 128, 130, 120, 121, 122, - 135, 136, 137, 139, 140, 143, 144, 149, 552, 318, - 113, 114, 551, 0, 0, 0, 50, 0, 0, 0, - 473, 0, 273, 0, 0, 0, 104, 0, 339, 338, - 0, 0, 473, 273, 179, 172, 182, 167, 150, 151, - 152, 110, 111, 0, 115, 117, 20, 116, 442, 447, - 446, 588, 591, 580, 590, 0, 444, 0, 592, 589, - 581, 564, 0, 0, 0, 0, 248, 260, 66, 252, - 594, 422, 594, 556, 67, 65, 594, 242, 289, 64, - 0, 241, 399, 63, 580, 0, 583, 18, 0, 0, - 209, 0, 210, 285, 0, 0, 0, 580, 15, 580, - 70, 14, 0, 580, 0, 585, 585, 233, 0, 0, - 585, 554, 0, 0, 78, 0, 88, 95, 522, 456, - 455, 457, 458, 0, 454, 453, 437, 431, 430, 433, - 0, 0, 428, 449, 0, 460, 0, 426, 0, 435, - 0, 464, 465, 48, 224, 225, 4, 581, 0, 0, - 0, 0, 0, 0, 0, 387, 389, 0, 84, 0, + 135, 136, 137, 139, 140, 143, 144, 149, 554, 320, + 113, 114, 553, 0, 0, 0, 50, 0, 0, 0, + 475, 0, 275, 0, 0, 0, 104, 0, 341, 340, + 0, 0, 475, 275, 179, 172, 182, 167, 150, 151, + 152, 110, 111, 0, 115, 117, 20, 116, 444, 449, + 448, 590, 593, 582, 592, 0, 446, 0, 594, 591, + 583, 566, 0, 0, 0, 0, 250, 262, 66, 254, + 596, 424, 596, 558, 67, 65, 596, 244, 291, 64, + 0, 243, 401, 63, 582, 0, 585, 18, 0, 0, + 211, 0, 212, 287, 0, 0, 0, 582, 15, 582, + 70, 14, 0, 582, 0, 587, 587, 235, 0, 0, + 587, 556, 0, 0, 78, 0, 88, 95, 524, 458, + 457, 459, 460, 0, 456, 455, 439, 433, 432, 435, + 0, 0, 430, 451, 0, 462, 0, 428, 0, 437, + 0, 466, 467, 48, 226, 227, 4, 583, 0, 0, + 0, 0, 0, 0, 0, 389, 391, 0, 84, 0, 76, 73, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 200, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 577, 594, 576, 0, 579, 578, 0, 404, 402, 294, - 423, 0, 0, 393, 57, 292, 313, 105, 106, 107, - 464, 465, 484, 311, 0, 594, 0, 0, 0, 319, - 575, 574, 321, 0, 594, 285, 330, 0, 329, 0, - 0, 594, 0, 0, 0, 0, 0, 0, 285, 0, - 594, 0, 308, 0, 118, 0, 0, 443, 445, 0, - 0, 593, 558, 0, 261, 563, 255, 0, 258, 249, - 0, 257, 0, 250, 0, 580, 0, 580, 594, 594, - 243, 254, 580, 0, 291, 47, 0, 0, 0, 0, - 0, 0, 17, 580, 283, 13, 581, 69, 279, 282, - 286, 587, 234, 586, 587, 236, 287, 555, 94, 86, - 0, 81, 0, 0, 594, 0, 529, 525, 524, 523, - 526, 527, 498, 531, 543, 499, 547, 546, 542, 522, - 296, 491, 496, 594, 501, 594, 521, 384, 528, 530, - 533, 507, 0, 540, 507, 545, 507, 0, 505, 459, - 0, 0, 434, 440, 438, 429, 450, 461, 427, 436, + 579, 596, 578, 0, 581, 580, 0, 406, 404, 296, + 425, 0, 0, 395, 57, 294, 315, 105, 106, 107, + 466, 467, 486, 313, 0, 596, 0, 0, 0, 321, + 577, 576, 323, 0, 596, 287, 332, 0, 331, 0, + 0, 596, 0, 0, 0, 0, 0, 0, 287, 0, + 596, 0, 310, 0, 118, 0, 0, 445, 447, 0, + 0, 595, 560, 0, 263, 565, 257, 0, 260, 251, + 0, 259, 0, 252, 0, 582, 0, 582, 596, 596, + 245, 256, 582, 0, 293, 47, 0, 0, 0, 0, + 0, 0, 17, 582, 285, 13, 583, 69, 281, 284, + 288, 589, 236, 588, 589, 238, 289, 557, 94, 86, + 0, 81, 0, 0, 596, 0, 531, 527, 526, 525, + 528, 529, 500, 533, 545, 501, 549, 548, 544, 524, + 298, 493, 498, 596, 503, 596, 523, 386, 530, 532, + 535, 509, 0, 542, 509, 547, 509, 0, 507, 461, + 0, 0, 436, 442, 440, 431, 452, 463, 429, 438, 0, 0, 7, 21, 22, 23, 24, 25, 45, 46, - 594, 0, 28, 30, 0, 31, 580, 0, 74, 85, - 43, 33, 41, 0, 237, 190, 29, 0, 273, 206, - 214, 219, 220, 221, 216, 218, 228, 229, 222, 223, - 199, 200, 226, 227, 582, 215, 217, 211, 212, 213, - 201, 202, 203, 204, 205, 567, 572, 568, 573, 398, - 253, 396, 0, 567, 569, 568, 570, 397, 594, 567, - 568, 253, 594, 594, 34, 237, 191, 40, 198, 55, - 58, 0, 0, 0, 105, 106, 109, 0, 0, 594, - 0, 580, 522, 0, 277, 594, 594, 410, 594, 331, - 571, 284, 0, 567, 568, 594, 333, 301, 332, 304, - 571, 284, 0, 567, 568, 0, 0, 0, 0, 260, - 0, 307, 559, 561, 560, 0, 0, 262, 256, 594, - 562, 557, 240, 239, 244, 245, 247, 290, 584, 19, - 0, 26, 197, 71, 16, 580, 585, 87, 79, 91, - 93, 0, 90, 92, 489, 535, 0, 582, 0, 490, - 0, 503, 550, 500, 0, 504, 0, 514, 536, 0, - 517, 544, 0, 519, 548, 452, 0, 441, 207, 208, - 375, 373, 0, 372, 371, 266, 0, 83, 77, 0, - 0, 0, 0, 0, 594, 0, 0, 0, 0, 395, - 61, 401, 0, 0, 394, 59, 390, 54, 0, 0, - 594, 314, 0, 0, 401, 317, 553, 522, 0, 0, - 322, 411, 412, 594, 413, 0, 594, 336, 0, 0, - 334, 0, 0, 401, 0, 0, 0, 0, 0, 401, - 0, 119, 448, 306, 0, 0, 259, 263, 251, 594, - 11, 280, 235, 89, 529, 347, 580, 340, 0, 377, - 0, 0, 297, 0, 497, 594, 549, 506, 534, 507, - 507, 507, 541, 507, 529, 507, 432, 370, 582, 582, - 493, 494, 594, 594, 355, 0, 538, 355, 355, 353, - 0, 0, 264, 75, 42, 238, 567, 568, 0, 567, - 568, 0, 0, 39, 195, 38, 196, 62, 0, 36, - 193, 37, 194, 60, 391, 392, 0, 0, 0, 0, - 485, 312, 580, 580, 0, 488, 522, 0, 0, 415, - 337, 0, 12, 417, 0, 298, 0, 299, 0, 0, - 309, 262, 594, 246, 348, 345, 532, 0, 383, 0, - 0, 0, 502, 0, 510, 0, 512, 0, 518, 0, - 515, 520, 0, 0, 0, 492, 0, 351, 352, 355, - 363, 537, 0, 366, 0, 368, 388, 265, 401, 231, - 230, 35, 192, 405, 403, 0, 0, 487, 486, 320, - 0, 0, 414, 0, 96, 103, 0, 416, 0, 302, - 305, 0, 407, 408, 406, 0, 0, 343, 381, 582, - 379, 382, 386, 385, 507, 507, 507, 507, 376, 374, - 285, 0, 495, 594, 0, 354, 361, 355, 355, 355, - 539, 355, 355, 56, 315, 0, 102, 0, 594, 0, - 594, 594, 0, 349, 346, 0, 341, 0, 378, 511, - 0, 508, 513, 516, 571, 284, 350, 0, 358, 0, - 360, 0, 367, 0, 364, 369, 323, 99, 101, 0, - 567, 568, 409, 335, 310, 0, 344, 0, 380, 507, - 355, 355, 355, 355, 97, 342, 509, 359, 0, 356, - 362, 365, 355, 357 + 596, 0, 28, 30, 0, 31, 582, 0, 74, 85, + 43, 33, 41, 0, 239, 190, 29, 0, 275, 208, + 216, 221, 222, 223, 218, 220, 230, 231, 224, 225, + 199, 201, 228, 229, 584, 217, 219, 213, 214, 215, + 203, 204, 205, 206, 207, 569, 574, 570, 575, 400, + 255, 398, 0, 569, 571, 570, 572, 399, 596, 569, + 570, 255, 596, 596, 34, 239, 191, 40, 198, 55, + 58, 0, 0, 0, 105, 106, 109, 0, 0, 596, + 0, 582, 524, 0, 279, 596, 596, 412, 596, 333, + 573, 286, 0, 569, 570, 596, 335, 303, 334, 306, + 573, 286, 0, 569, 570, 0, 0, 0, 0, 262, + 0, 309, 561, 563, 562, 0, 0, 264, 258, 596, + 564, 559, 242, 241, 246, 247, 249, 292, 586, 19, + 0, 26, 197, 71, 16, 582, 587, 87, 79, 91, + 93, 0, 90, 92, 491, 537, 0, 584, 0, 492, + 0, 505, 552, 502, 0, 506, 0, 516, 538, 0, + 519, 546, 0, 521, 550, 454, 0, 443, 209, 210, + 377, 375, 0, 374, 373, 268, 0, 83, 77, 0, + 0, 0, 0, 0, 596, 0, 0, 0, 0, 397, + 61, 403, 0, 0, 396, 59, 392, 54, 0, 0, + 596, 316, 0, 0, 403, 319, 555, 524, 0, 0, + 324, 413, 414, 596, 415, 0, 596, 338, 0, 0, + 336, 0, 0, 403, 0, 0, 0, 0, 0, 403, + 0, 119, 450, 308, 0, 0, 261, 265, 253, 596, + 11, 282, 237, 89, 531, 349, 582, 342, 0, 379, + 0, 0, 299, 0, 499, 596, 551, 508, 536, 509, + 509, 509, 543, 509, 531, 509, 434, 372, 584, 584, + 495, 496, 596, 596, 357, 0, 540, 357, 357, 355, + 0, 0, 266, 75, 42, 240, 569, 570, 0, 569, + 570, 0, 0, 39, 195, 38, 196, 62, 0, 36, + 193, 37, 194, 60, 393, 394, 0, 0, 0, 0, + 487, 314, 582, 582, 0, 490, 524, 0, 0, 417, + 339, 0, 12, 419, 0, 300, 0, 301, 0, 0, + 311, 264, 596, 248, 350, 347, 534, 0, 385, 0, + 0, 0, 504, 0, 512, 0, 514, 0, 520, 0, + 517, 522, 0, 0, 0, 494, 0, 353, 354, 357, + 365, 539, 0, 368, 0, 370, 390, 267, 403, 233, + 232, 35, 192, 407, 405, 0, 0, 489, 488, 322, + 0, 0, 416, 0, 96, 103, 0, 418, 0, 304, + 307, 0, 409, 410, 408, 0, 0, 345, 383, 584, + 381, 384, 388, 387, 509, 509, 509, 509, 378, 376, + 287, 0, 497, 596, 0, 356, 363, 357, 357, 357, + 541, 357, 357, 56, 317, 0, 102, 0, 596, 0, + 596, 596, 0, 351, 348, 0, 343, 0, 380, 513, + 0, 510, 515, 518, 573, 286, 352, 0, 360, 0, + 362, 0, 369, 0, 366, 371, 325, 99, 101, 0, + 569, 570, 411, 337, 312, 0, 346, 0, 382, 509, + 357, 357, 357, 357, 97, 344, 511, 361, 0, 358, + 364, 367, 357, 359 }; /* YYPGOTO[NTERM-NUM]. */ @@ -2412,42 +2412,42 @@ static const yytype_int16 yytable[] = 668, 688, 305, 533, 668, 662, 399, 629, 766, 642, 258, 264, 209, 671, 265, 314, 705, 776, 652, 885, 200, 600, 812, 608, 970, 387, 305, 694, 951, 614, - 617, 295, 629, 336, 119, 119, 267, 272, -564, 416, + 617, 295, 629, 336, 119, 119, 267, 272, -566, 416, 748, 749, 119, 274, -99, 271, 800, 242, 262, 262, - 384, -472, 262, -101, 394, 473, 324, 326, 328, 330, - -96, 209, -475, 83, 380, 535, 728, 841, 535, 422, - 535, 629, 535, -474, 535, -103, -476, 477, -102, -104, + 384, -474, 262, -101, 394, 473, 324, 326, 328, 330, + -96, 209, -477, 83, 380, 535, 728, 841, 535, 422, + 535, 629, 535, -476, 535, -103, -478, 477, -102, -104, 431, 479, 691, 119, 296, 300, -98, 256, 256, 695, - 397, 256, -471, 646, 398, 794, 629, 497, 498, 499, - 500, -466, 987, 387, 3, -100, 382, 119, 242, 970, - 261, 261, 279, 501, 261, -466, 393, 424, -475, 556, - -96, -97, 267, 272, 283, 533, 951, 808, 801, -474, - -477, 842, -476, 630, 345, 388, 238, 560, 393, 239, - 240, 470, 697, 516, 847, -103, 261, 261, -564, 853, - -466, 765, 83, 439, -564, 426, 427, -466, -401, -91, - 348, -567, 209, 209, 453, 495, 490, 241, -93, 242, - -568, 986, 286, 720, 489, -88, 560, 560, 858, 238, - 471, 390, 239, 240, 884, 825, -477, 353, 825, 450, - -95, 454, 314, -94, 476, -69, 391, 200, 451, -479, + 397, 256, -473, 646, 398, 794, 629, 497, 498, 499, + 500, -468, 987, 387, 3, -100, 382, 119, 242, 970, + 261, 261, 279, 501, 261, -468, 393, 424, -477, 556, + -96, -97, 267, 272, 283, 533, 951, 808, 801, -476, + -479, 842, -478, 630, 345, 388, 238, 560, 393, 239, + 240, 470, 697, 516, 847, -103, 261, 261, -566, 853, + -468, 765, 83, 439, -566, 426, 427, -468, -403, -91, + 348, -569, 209, 209, 453, 495, 490, 241, -93, 242, + -570, 986, 286, 720, 489, -88, 560, 560, 858, 238, + 471, 390, 239, 240, 884, 825, -479, 353, 825, 450, + -95, 454, 314, -94, 476, -69, 391, 200, 451, -481, 451, -90, 483, 483, 460, 671, 812, 483, -102, 436, 241, 392, 242, 388, 209, 717, -83, 721, 209, 266, - -92, -401, 209, 209, 481, 668, 668, 83, 786, 290, - 347, 490, 83, 83, -471, -401, -89, 286, 833, -103, - 83, 266, 506, 672, 376, 377, 378, -478, -480, 260, - 677, 305, 472, 475, 942, -479, -466, 352, -470, 274, - 478, 683, -96, 402, 461, 415, 516, 507, -401, 410, - -401, 552, 762, 825, 535, 558, 562, -401, 423, 543, + -92, -403, 209, 209, 481, 668, 668, 83, 786, 290, + 347, 490, 83, 83, -473, -403, -89, 286, 833, -103, + 83, 266, 506, 672, 376, 377, 378, -480, -482, 260, + 677, 305, 472, 475, 942, -481, -468, 352, -472, 274, + 478, 683, -96, 402, 461, 415, 516, 507, -403, 410, + -403, 552, 762, 825, 535, 558, 562, -403, 423, 543, 544, 545, 546, -88, 419, 83, 209, 209, 209, 209, 83, 209, 209, 290, 432, 209, 626, 83, 305, 774, - 567, 428, 262, -478, -480, 69, 892, 775, 808, 542, - 547, 530, -466, -98, -470, 562, 562, 437, 808, 460, - 239, 240, 838, 907, 908, 411, 554, -98, -328, 209, + 567, 428, 262, -480, -482, 69, 892, 775, 808, 542, + 547, 530, -468, -98, -472, 562, 562, 437, 808, 460, + 239, 240, 838, 907, 908, 411, 554, -98, -330, 209, 808, 554, 119, 434, 600, -100, 608, 256, 880, 567, - 567, 256, -328, 460, 727, 717, 439, 606, 533, 753, + 567, 256, -330, 460, 727, 717, 439, 606, 533, 753, 606, 448, 637, 209, 42, 83, 209, 43, 442, 460, 261, 687, 467, 489, 261, 83, 665, 353, 460, 209, - 606, 392, 792, 83, 788, 843, 276, -328, 209, 119, - 849, 851, -68, 83, -328, 474, 606, 675, 676, 876, + 606, 392, 792, 83, 788, 843, 276, -330, 209, 119, + 849, 851, -68, 83, -330, 474, 606, 675, 676, 876, 863, 516, 943, 486, 785, 606, 451, 451, 607, -103, 237, 468, 60, 490, 480, 102, 416, 286, 331, 332, -98, 679, 671, -98, -98, 83, 488, -97, 660, 756, @@ -2460,66 +2460,66 @@ static const yytype_int16 yytable[] = 381, 635, 669, 726, 864, 607, 921, 382, 724, 639, 744, -100, 256, 746, 788, 101, -98, 661, -97, 261, 516, 256, 736, 238, 529, 305, 239, 240, 673, 101, - 607, 744, 276, 686, 678, 261, 560, -90, -565, 119, - 681, 119, 560, 404, 261, -83, 890, 560, 560, -582, - 448, 700, -582, -582, 241, -100, 242, 380, 794, 638, + 607, 744, 276, 686, 678, 261, 560, -90, -567, 119, + 681, 119, 560, 404, 261, -83, 890, 560, 560, -584, + 448, 700, -584, -584, 241, -100, 242, 380, 794, 638, 497, 498, 499, 500, 261, 703, 271, 645, 261, 271, 724, 724, 704, 740, 730, 420, 501, 657, 101, 706, - 101, 745, 242, 752, 747, 256, 1009, 271, -274, 380, + 101, 745, 242, 752, 747, 256, 1009, 271, -276, 380, 209, 83, 405, 764, 767, 261, 767, 709, 261, 382, - 629, -470, -274, 767, 886, 926, 119, 711, 261, 784, - 237, 712, 760, 483, 743, -470, 780, 200, 454, 714, + 629, -472, -276, 767, 886, 926, 119, 711, 261, 784, + 237, 712, 760, 483, 743, -472, 780, 200, 454, 714, 489, 781, 936, 209, 421, 400, 401, 451, 938, 257, - 257, 382, 729, 257, 554, 739, 316, -274, 317, 318, - 200, 854, -100, 267, -274, 276, 267, 985, -565, 741, - -470, 731, -100, 560, -565, -100, -100, -470, 429, 754, + 257, 382, 729, 257, 554, 739, 316, -276, 317, 318, + 200, 854, -100, 267, -276, 276, 267, 985, -567, 741, + -472, 731, -100, 560, -567, -100, -100, -472, 429, 754, 280, 282, 739, -92, 267, 257, 298, 768, 765, 101, 927, 928, 380, 716, 755, 562, 975, 334, 335, 101, 101, 562, 845, -100, 765, -100, 562, 562, 319, 320, 83, 948, 460, 497, 498, 499, 500, 305, 83, 567, 902, 903, 209, 353, 773, 567, 209, 430, 724, 501, 567, 567, 779, 782, 382, 783, 83, 83, 834, 606, - 790, 869, -571, 848, 873, 793, 83, 789, 242, 874, + 790, 869, -573, 848, 873, 793, 83, 789, 242, 874, 710, 101, 713, 83, 816, 101, 209, 861, 883, 101, 101, 867, 343, 344, 101, 83, 83, 451, 871, 101, 101, -97, 238, 83, 875, 239, 240, 101, 374, 375, 376, 377, 378, 702, 616, 618, 276, 276, 83, 83, 607, 534, -89, 317, 318, 877, 887, 888, 119, 803, - 702, 702, 889, 694, 893, -571, 895, 897, 905, 261, - 261, 899, 562, 911, 906, 909, 616, 618, 912, -571, + 702, 702, 889, 694, 893, -573, 895, 897, 905, 261, + 261, 899, 562, 911, 906, 909, 616, 618, 912, -573, 502, 914, 101, 101, 101, 101, 101, 101, 101, 101, 916, 918, 101, 979, 101, 923, 567, 101, 238, 924, 929, 239, 240, 319, 320, 256, 83, 83, 505, 506, - 939, 940, -571, 946, -571, 933, 206, 206, -567, 83, - 767, -571, 206, 952, 682, 469, 101, 493, 261, 241, + 939, 940, -573, 946, -573, 933, 206, 206, -569, 83, + 767, -573, 206, 952, 682, 469, 101, 493, 261, 241, 953, 242, 960, 958, 507, 959, 101, 101, 973, 380, - 329, 380, -284, 317, 318, 444, 445, 446, 334, 119, - 101, 974, 101, 101, 119, -473, -284, 976, 990, 257, - 997, 539, 101, 257, 317, 318, 101, 988, 1006, -473, + 329, 380, -286, 317, 318, 444, 445, 446, 334, 119, + 101, 974, 101, 101, 119, -475, -286, 976, 990, 257, + 997, 539, 101, 257, 317, 318, 101, 988, 1006, -475, 101, 857, 999, 1001, 421, 101, 494, 276, 83, 1003, - 101, 382, 810, 382, 83, 813, 83, 870, -273, 83, - 1014, -284, 1015, 319, 320, -568, 119, 828, -284, 878, - 879, 702, -273, 1017, -473, 238, -567, 882, 239, 240, - -568, -473, 101, 1024, 319, 320, 460, 680, 637, 767, - 396, 101, 1028, 891, 218, -567, 209, 124, 1013, 1018, - 323, 317, 318, 817, 1012, 418, 241, -273, 242, 101, - 553, 418, 855, 606, -273, 564, 569, 570, 571, 572, + 101, 382, 810, 382, 83, 813, 83, 870, -275, 83, + 1014, -286, 1015, 319, 320, -570, 119, 828, -286, 878, + 879, 702, -275, 1017, -475, 238, -569, 882, 239, 240, + -570, -475, 101, 1024, 319, 320, 460, 680, 637, 767, + 396, 101, 1028, 891, 218, -569, 209, 124, 1013, 1018, + 323, 317, 318, 817, 1012, 418, 241, -275, 242, 101, + 553, 418, 855, 606, -275, 564, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 438, 202, 257, 820, 101, 261, 441, 930, - 925, 319, 320, 804, 615, 615, 452, 962, -567, -568, - -285, 967, 809, 937, 607, 894, 896, 898, 257, 900, - 0, 901, -567, 0, -285, 733, 0, 100, 0, 100, + 925, 319, 320, 804, 615, 615, 452, 962, -569, -570, + -287, 967, 809, 937, 607, 894, 896, 898, 257, 900, + 0, 901, -569, 0, -287, 733, 0, 100, 0, 100, 122, 122, 615, 0, 257, 0, 615, 615, 223, 380, 0, 206, 206, 257, 961, 0, 0, 325, 317, 318, - 0, 0, 659, 0, 0, -567, 663, -567, 380, -285, - 664, -567, 0, 667, -567, 670, -285, 298, 0, 256, - 0, 0, -568, 0, 734, 100, 0, 977, 980, 307, - 981, 382, 0, 982, 615, 441, -568, 101, 101, 955, + 0, 0, 659, 0, 0, -569, 663, -569, 380, -287, + 664, -569, 0, 667, -569, 670, -287, 298, 0, 256, + 0, 0, -570, 0, 734, 100, 0, 977, 980, 307, + 981, 382, 0, 982, 615, 441, -570, 101, 101, 955, 0, 380, 261, 405, 667, 0, 0, 298, 319, 320, 382, 462, 465, 307, 0, 968, 0, 257, 971, 0, - 844, 846, 0, 0, 0, 850, 852, 0, 0, -568, - 101, -568, 0, 0, 699, -568, 978, 0, -568, 0, + 844, 846, 0, 0, 0, 850, 852, 0, 0, -570, + 101, -570, 0, 0, 699, -570, 978, 0, -570, 0, 797, 0, 0, 382, 794, 708, 497, 498, 499, 500, 100, 0, 0, 811, 844, 846, 815, 850, 852, 327, 317, 318, 501, 718, 719, 824, 0, 0, 0, 0, @@ -2562,10 +2562,10 @@ static const yytype_int16 yytable[] = 1030, 1031, 353, 0, 0, 0, 366, 367, 648, 0, 1033, 0, 0, 0, 80, 0, 97, 366, 367, 80, 80, 794, 0, 497, 498, 499, 500, 80, 373, 374, - 375, 376, 377, 378, -281, 0, 100, -281, -281, 501, + 375, 376, 377, 378, -283, 0, 100, -283, -283, 501, 0, 0, 98, 371, 372, 373, 374, 375, 376, 377, 378, 0, 0, 0, 0, 0, 0, 374, 375, 376, - 377, 378, 307, 503, -281, -281, 0, -281, 0, 947, + 377, 378, 307, 503, -283, -283, 0, -283, 0, 947, 238, 257, 80, 239, 240, 206, 794, 80, 497, 498, 499, 500, 0, 0, 80, 0, 0, 563, 496, 0, 497, 498, 499, 500, 501, 0, 418, 448, 0, 0, @@ -2609,21 +2609,21 @@ static const yytype_int16 yytable[] = 0, 0, 563, 507, 0, 0, 0, 563, 563, 0, 0, 0, 0, 80, 80, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, - 80, -594, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 80, 80, -594, -594, -594, -594, -594, -594, - 80, -594, 0, 98, 97, 0, 0, -594, -594, 0, - 0, 0, 0, 0, 0, 80, 80, 0, -594, -594, - 0, -594, -594, -594, -594, -594, 0, 0, 0, 0, + 80, -596, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 80, 80, -596, -596, -596, -596, -596, -596, + 80, -596, 0, 98, 97, 0, 0, -596, -596, 0, + 0, 0, 0, 0, 0, 80, 80, 0, -596, -596, + 0, -596, -596, -596, -596, -596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 563, 0, 0, 0, 0, 0, 0, - -594, 0, 0, 80, 80, 0, 0, 0, 0, 0, - 0, 0, 932, 0, -594, 0, 80, 0, 0, 0, - 0, 0, 0, 0, -594, 98, 0, -594, -594, 0, + -596, 0, 0, 80, 80, 0, 0, 0, 0, 0, + 0, 0, 932, 0, -596, 0, 80, 0, 0, 0, + 0, 0, 0, 0, -596, 98, 0, -596, -596, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, - 306, 97, 0, 0, 0, 0, 0, -594, -594, 0, - 0, 0, 0, 266, -594, -594, -594, -594, 0, 97, + 306, 97, 0, 0, 0, 0, 0, -596, -596, 0, + 0, 0, 0, 266, -596, -596, -596, -596, 0, 97, 97, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 80, 97, 0, 0, 0, 0, 80, 0, 80, 0, 0, 80, 0, 97, 97, @@ -2643,16 +2643,16 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, 366, 367, 97, 0, 0, 0, 0, 0, 97, 0, 97, - 98, 0, 97, 353, -595, -595, -595, -595, 358, 359, - 98, 98, -595, -595, 0, 0, 0, 0, 366, 367, + 98, 0, 97, 353, -597, -597, -597, -597, 358, 359, + 98, 98, -597, -597, 0, 0, 0, 0, 366, 367, 0, 0, 368, 98, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 0, 0, 0, 0, 0, 0, - 0, 0, -260, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 98, 0, - 98, -594, 4, 98, 5, 6, 7, 8, 9, 10, + 98, -596, 4, 98, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, @@ -2663,90 +2663,90 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, 58, 59, 60, - 61, -466, 0, 62, -594, 0, 0, -594, -594, 0, - 0, 0, 0, 0, -466, -466, -466, -466, -466, -466, - 0, -466, 0, 63, 64, 65, 0, 0, -466, -466, - 0, 0, 0, 0, 0, -594, 0, -594, -466, -466, - 0, -466, -466, -466, -466, -466, 0, 0, 0, 0, + 61, -468, 0, 62, -596, 0, 0, -596, -596, 0, + 0, 0, 0, 0, -468, -468, -468, -468, -468, -468, + 0, -468, 0, 63, 64, 65, 0, 0, -468, -468, + 0, 0, 0, 0, 0, -596, 0, -596, -468, -468, + 0, -468, -468, -468, -468, -468, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -466, -466, -466, -466, -466, -466, -466, - -466, -466, -466, -466, -466, -466, 0, 0, -466, -466, - -466, 0, -466, -466, 0, 0, 0, 0, 0, -466, - 0, 0, 0, 0, -466, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -466, 0, 0, -466, -466, 0, - -466, -466, 0, -466, -466, -466, -466, -466, -466, -466, - -466, -466, -466, 0, 0, -594, 0, 0, -466, -466, - -466, -466, 0, 0, -466, -466, -466, -466, -594, -594, - -594, -594, -594, -594, 0, -594, 0, 0, 0, 0, - 0, 0, -594, -594, 0, 0, 0, 0, 0, 0, - 0, 0, -594, -594, 0, -594, -594, -594, -594, -594, + 0, 0, 0, -468, -468, -468, -468, -468, -468, -468, + -468, -468, -468, -468, -468, -468, 0, 0, -468, -468, + -468, 0, -468, -468, 0, 0, 0, 0, 0, -468, + 0, 0, 0, 0, -468, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -468, 0, 0, -468, -468, 0, + -468, -468, 0, -468, -468, -468, -468, -468, -468, -468, + -468, -468, -468, 0, 0, -596, 0, 0, -468, -468, + -468, -468, 0, 0, -468, -468, -468, -468, -596, -596, + -596, -596, -596, -596, 0, -596, 0, 0, 0, 0, + 0, 0, -596, -596, 0, 0, 0, 0, 0, 0, + 0, 0, -596, -596, 0, -596, -596, -596, -596, -596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -594, -594, -594, - -594, -594, -594, -594, -594, -594, -594, -594, -594, -594, - 0, 0, -594, -594, -594, 0, 0, -594, 0, 0, - 0, 0, 0, -594, 0, 0, 0, 0, -594, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -594, 0, - 0, -594, -594, 0, 0, -594, 0, -594, -594, -594, - -594, -594, -594, -594, -594, -594, -594, 0, 0, -571, - 0, 0, -594, -594, -594, -594, 0, 266, -594, -594, - -594, -594, -571, -571, -571, 0, -571, -571, 0, -571, - 0, 0, 0, 0, 0, -571, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -571, -571, 0, -571, - -571, -571, -571, -571, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, + 0, 0, -596, -596, -596, 0, 0, -596, 0, 0, + 0, 0, 0, -596, 0, 0, 0, 0, -596, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -596, 0, + 0, -596, -596, 0, 0, -596, 0, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, 0, 0, -573, + 0, 0, -596, -596, -596, -596, 0, 266, -596, -596, + -596, -596, -573, -573, -573, 0, -573, -573, 0, -573, + 0, 0, 0, 0, 0, -573, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -573, -573, 0, -573, + -573, -573, -573, -573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -571, -571, -571, -571, -571, -571, -571, -571, -571, - -571, -571, -571, -571, 0, 0, -571, -571, -571, 0, + 0, -573, -573, -573, -573, -573, -573, -573, -573, -573, + -573, -573, -573, -573, 0, 0, -573, -573, -573, 0, 737, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -571, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -571, 0, 0, -571, -571, 0, -99, -571, - 0, -571, -571, -571, -571, -571, -571, -571, -571, -571, - -571, 0, 0, -571, 0, -571, -571, -571, 0, -91, - 0, 0, -571, -571, -571, -571, -571, -571, -571, 0, - -571, -571, 0, -571, 0, 0, 0, 0, 0, -571, + 0, 0, -573, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -573, 0, 0, -573, -573, 0, -99, -573, + 0, -573, -573, -573, -573, -573, -573, -573, -573, -573, + -573, 0, 0, -573, 0, -573, -573, -573, 0, -91, + 0, 0, -573, -573, -573, -573, -573, -573, -573, 0, + -573, -573, 0, -573, 0, 0, 0, 0, 0, -573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -571, -571, 0, -571, -571, -571, -571, -571, 0, 0, + -573, -573, 0, -573, -573, -573, -573, -573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -571, -571, -571, -571, -571, - -571, -571, -571, -571, -571, -571, -571, -571, 0, 0, - -571, -571, -571, 0, 737, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -571, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -571, 0, 0, -571, - -571, 0, -99, -571, 0, -571, -571, -571, -571, -571, - -571, -571, -571, -571, -571, 0, 0, -284, 0, -571, - -571, -571, 0, -571, 0, 0, -571, -571, -571, -571, - -284, -284, -284, 0, -284, -284, 0, -284, 0, 0, + 0, 0, 0, 0, 0, -573, -573, -573, -573, -573, + -573, -573, -573, -573, -573, -573, -573, -573, 0, 0, + -573, -573, -573, 0, 737, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -573, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -573, 0, 0, -573, + -573, 0, -99, -573, 0, -573, -573, -573, -573, -573, + -573, -573, -573, -573, -573, 0, 0, -286, 0, -573, + -573, -573, 0, -573, 0, 0, -573, -573, -573, -573, + -286, -286, -286, 0, -286, -286, 0, -286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -284, -284, 0, -284, -284, -284, - -284, -284, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -286, -286, 0, -286, -286, -286, + -286, -286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, 0, 0, -284, -284, -284, 0, 738, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, 0, 0, -286, -286, -286, 0, 738, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -284, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -284, 0, 0, -284, -284, 0, -101, -284, 0, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, 0, - 0, -284, 0, 0, -284, -284, 0, -93, 0, 0, - -284, -284, -284, -284, -284, -284, -284, 0, -284, -284, - 0, -284, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -284, -284, - 0, -284, -284, -284, -284, -284, 0, 0, 0, 0, + -286, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -286, 0, 0, -286, -286, 0, -101, -286, 0, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, 0, + 0, -286, 0, 0, -286, -286, 0, -93, 0, 0, + -286, -286, -286, -286, -286, -286, -286, 0, -286, -286, + 0, -286, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -286, -286, + 0, -286, -286, -286, -286, -286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, 0, 0, -284, -284, - -284, 0, 738, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -284, 0, 0, -284, -284, 0, - -101, -284, 0, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, 0, 0, 0, 0, 0, -284, -284, - 0, -284, 0, 0, -284, -284, -284, -284, 284, 0, + 0, 0, 0, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, 0, 0, -286, -286, + -286, 0, 738, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -286, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -286, 0, 0, -286, -286, 0, + -101, -286, 0, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, 0, 0, 0, 0, 0, -286, -286, + 0, -286, 0, 0, -286, -286, -286, -286, 284, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - -594, -594, -594, 0, 0, -594, 15, 0, 16, 17, + -596, -596, -596, 0, 0, -596, 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, @@ -2756,11 +2756,11 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, 58, 59, 60, 61, 0, 0, 62, - -594, 0, 0, -594, -594, 0, 0, 0, 0, 0, + -596, 0, 0, -596, -596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -594, 284, -594, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 0, 0, -594, 0, -594, -594, + 0, -596, 284, -596, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 0, 0, -596, 0, -596, -596, 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, @@ -2770,12 +2770,12 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, 58, 59, 60, - 61, 0, 0, 62, -594, 0, 0, -594, -594, 0, + 61, 0, 0, 62, -596, 0, 0, -596, -596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -594, 284, -594, 5, 6, + 0, 0, 0, 0, 0, -596, 284, -596, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, - -594, 0, 0, -594, 15, -594, 16, 17, 18, 19, + -596, 0, 0, -596, 15, -596, 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, @@ -2784,12 +2784,12 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, - 57, 58, 59, 60, 61, 0, 0, 62, -594, 0, - 0, -594, -594, 0, 0, 0, 0, 0, 0, 0, + 57, 58, 59, 60, 61, 0, 0, 62, -596, 0, + 0, -596, -596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -594, - 284, -594, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 0, 0, -594, 0, 0, -594, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -596, + 284, -596, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 0, 0, -596, 0, 0, -596, 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, @@ -2799,10 +2799,10 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, 58, 59, 60, 61, 0, - 0, 62, -594, 0, 0, -594, -594, 4, 0, 5, + 0, 62, -596, 0, 0, -596, -596, 4, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 63, 64, 65, 0, 15, 0, 16, 17, 18, - 19, 0, 0, -594, 0, -594, 20, 21, 22, 23, + 19, 0, 0, -596, 0, -596, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, @@ -2810,12 +2810,12 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, - 56, 57, 58, 59, 60, 61, 0, 0, 62, -594, - 0, 0, -594, -594, 0, 0, 0, 0, 0, 0, + 56, 57, 58, 59, 60, 61, 0, 0, 62, -596, + 0, 0, -596, -596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, - 65, 0, 0, -594, 0, 0, 0, 0, 0, 0, - -594, 284, -594, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 0, -594, -594, 0, 0, 0, 15, + 65, 0, 0, -596, 0, 0, 0, 0, 0, 0, + -596, 284, -596, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 0, -596, -596, 0, 0, 0, 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, @@ -2825,10 +2825,10 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, 58, 59, 60, 61, - 0, 0, 62, -594, 0, 0, -594, -594, 284, 0, + 0, 0, 62, -596, 0, 0, -596, -596, 284, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 63, 64, 65, 0, 15, 0, 16, 17, - 18, 19, 0, 0, -594, 0, -594, 20, 21, 22, + 18, 19, 0, 0, -596, 0, -596, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, @@ -2837,10 +2837,10 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 285, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, 58, 59, 60, 61, 0, 0, 62, - -594, 0, 0, -594, -594, 284, 0, 5, 6, 7, + -596, 0, 0, -596, -596, 284, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 63, 64, 65, 0, 15, 0, 16, 17, 18, 19, 0, - -594, -594, 0, -594, 20, 21, 22, 23, 24, 25, + -596, -596, 0, -596, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, @@ -2848,11 +2848,11 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, - 58, 59, 60, 61, 0, 0, 62, -594, 0, 0, - -594, -594, 284, 0, 5, 6, 7, 8, 9, 10, + 58, 59, 60, 61, 0, 0, 62, -596, 0, 0, + -596, -596, 284, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 63, 64, 65, 0, - 15, 0, 16, 17, 18, 19, 0, -594, -594, 0, - -594, 20, 21, 22, 23, 24, 25, 26, 0, 0, + 15, 0, 16, 17, 18, 19, 0, -596, -596, 0, + -596, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, @@ -2860,12 +2860,12 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, 58, 59, 60, - 61, 0, 0, 62, -594, 0, 0, -594, -594, 0, + 61, 0, 0, 62, -596, 0, 0, -596, -596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 64, 65, 0, 0, -594, 0, - 0, 0, 0, 0, 0, -594, 284, -594, 5, 6, + 0, 0, 0, 63, 64, 65, 0, 0, -596, 0, + 0, 0, 0, 0, 0, -596, 284, -596, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, - -594, 0, 0, 0, 15, 0, 16, 17, 18, 19, + -596, 0, 0, 0, 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, @@ -2874,11 +2874,11 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, - 57, 58, 59, 60, 61, 0, 0, 62, -594, 0, - 0, -594, -594, 0, 0, 5, 6, 7, 8, 9, + 57, 58, 59, 60, 61, 0, 0, 62, -596, 0, + 0, -596, -596, 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 63, 64, 65, - 0, 15, 0, 16, 17, 18, 19, 0, 0, -594, - 0, -594, 20, 21, 22, 23, 24, 25, 26, 0, + 0, 15, 0, 16, 17, 18, 19, 0, 0, -596, + 0, -596, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, @@ -2927,21 +2927,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 0, 195, 196, 0, 0, 0, 0, 0, - 0, 197, 198, -564, -564, -564, -564, -564, -564, -564, - -564, -564, 0, 0, 0, 0, 0, 0, 0, -564, - 0, -564, -564, -564, -564, 0, -564, 0, 0, 0, - -564, -564, -564, -564, -564, -564, -564, 0, 0, -564, - 0, 0, 0, 0, 0, 0, 0, 0, -564, -564, - -564, -564, -564, -564, -564, -564, -564, 0, -564, -564, - -564, 0, 0, -564, 0, 0, -564, -564, 0, -564, - -564, -564, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -564, 0, 0, -564, -564, 0, -564, -564, 0, -564, - -564, -564, -564, 0, -564, -564, -564, -564, -564, -564, - 0, 0, -564, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -564, -564, -564, 0, -564, 0, 0, 0, - 0, 0, -564, -566, -566, -566, -566, -566, -566, -566, + 0, 197, 198, -566, -566, -566, -566, -566, -566, -566, -566, -566, 0, 0, 0, 0, 0, 0, 0, -566, 0, -566, -566, -566, -566, 0, -566, 0, 0, 0, -566, -566, -566, -566, -566, -566, -566, 0, 0, -566, @@ -2955,79 +2941,93 @@ static const yytype_int16 yytable[] = 0, 0, -566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -566, -566, -566, 0, -566, 0, 0, 0, - 0, 0, -566, -565, -565, -565, -565, -565, -565, -565, - -565, -565, 0, 0, 0, 0, 0, 0, 0, -565, - 0, -565, -565, -565, -565, 0, -565, 0, 0, 0, - -565, -565, -565, -565, -565, -565, -565, 0, 0, -565, - 0, 0, 0, 0, 0, 0, 0, 0, -565, -565, - -565, -565, -565, -565, -565, -565, -565, 0, -565, -565, - -565, 0, 0, -565, 0, 0, -565, -565, 0, -565, - -565, -565, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -565, 0, 0, -565, -565, 0, -565, -565, 0, -565, - -565, -565, -565, 0, -565, -565, -565, -565, -565, -565, - 0, 0, -565, 0, 0, 0, 0, 0, 0, -567, - -567, -567, -567, -567, -567, -567, -567, -567, 0, 0, - 0, 0, -565, -565, -565, -567, -565, -567, -567, -567, - -567, 0, -565, 0, 0, 0, -567, -567, -567, -567, - -567, -567, -567, 0, 0, -567, 0, 0, 0, 0, - 0, 0, 0, 0, -567, -567, -567, -567, -567, -567, - -567, -567, -567, 0, -567, -567, -567, 0, 0, -567, - 0, 0, -567, -567, 0, -567, -567, -567, 0, 0, + 0, 0, -566, -568, -568, -568, -568, -568, -568, -568, + -568, -568, 0, 0, 0, 0, 0, 0, 0, -568, + 0, -568, -568, -568, -568, 0, -568, 0, 0, 0, + -568, -568, -568, -568, -568, -568, -568, 0, 0, -568, + 0, 0, 0, 0, 0, 0, 0, 0, -568, -568, + -568, -568, -568, -568, -568, -568, -568, 0, -568, -568, + -568, 0, 0, -568, 0, 0, -568, -568, 0, -568, + -568, -568, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -567, 771, 0, -567, - -567, 0, -567, -567, 0, -567, -567, -567, -567, 0, - -567, -567, -567, -567, -567, -567, 0, 0, -567, 0, - 0, 0, 0, 0, 0, -99, -568, -568, -568, -568, - -568, -568, -568, -568, -568, 0, 0, 0, -567, -567, - -567, 0, -568, 0, -568, -568, -568, -568, -567, 0, - 0, 0, 0, -568, -568, -568, -568, -568, -568, -568, + -568, 0, 0, -568, -568, 0, -568, -568, 0, -568, + -568, -568, -568, 0, -568, -568, -568, -568, -568, -568, 0, 0, -568, 0, 0, 0, 0, 0, 0, 0, - 0, -568, -568, -568, -568, -568, -568, -568, -568, -568, - 0, -568, -568, -568, 0, 0, -568, 0, 0, -568, - -568, 0, -568, -568, -568, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -568, 772, 0, -568, -568, 0, -568, - -568, 0, -568, -568, -568, -568, 0, -568, -568, -568, - -568, -568, -568, 0, 0, -568, 0, 0, 0, 0, - 0, 0, -101, -253, -253, -253, -253, -253, -253, -253, - -253, -253, 0, 0, 0, -568, -568, -568, 0, -253, - 0, -253, -253, -253, -253, -568, 0, 0, 0, 0, - -253, -253, -253, -253, -253, -253, -253, 0, 0, -253, - 0, 0, 0, 0, 0, 0, 0, 0, -253, -253, - -253, -253, -253, -253, -253, -253, -253, 0, -253, -253, - -253, 0, 0, -253, 0, 0, -253, -253, 0, -253, - -253, -253, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -568, -568, -568, 0, -568, 0, 0, 0, + 0, 0, -568, -567, -567, -567, -567, -567, -567, -567, + -567, -567, 0, 0, 0, 0, 0, 0, 0, -567, + 0, -567, -567, -567, -567, 0, -567, 0, 0, 0, + -567, -567, -567, -567, -567, -567, -567, 0, 0, -567, + 0, 0, 0, 0, 0, 0, 0, 0, -567, -567, + -567, -567, -567, -567, -567, -567, -567, 0, -567, -567, + -567, 0, 0, -567, 0, 0, -567, -567, 0, -567, + -567, -567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -253, 0, 0, -253, -253, 0, -253, -253, 0, -253, - -253, -253, -253, 0, -253, -253, -253, -253, -253, -253, - 0, 0, -253, 0, 0, 0, 0, 0, 0, -569, + -567, 0, 0, -567, -567, 0, -567, -567, 0, -567, + -567, -567, -567, 0, -567, -567, -567, -567, -567, -567, + 0, 0, -567, 0, 0, 0, 0, 0, 0, -569, -569, -569, -569, -569, -569, -569, -569, -569, 0, 0, - 0, 0, -253, -253, -253, -569, 0, -569, -569, -569, - -569, 0, 266, 0, 0, 0, -569, -569, -569, -569, + 0, 0, -567, -567, -567, -569, -567, -569, -569, -569, + -569, 0, -567, 0, 0, 0, -569, -569, -569, -569, -569, -569, -569, 0, 0, -569, 0, 0, 0, 0, 0, 0, 0, 0, -569, -569, -569, -569, -569, -569, -569, -569, -569, 0, -569, -569, -569, 0, 0, -569, 0, 0, -569, -569, 0, -569, -569, -569, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -569, 0, 0, -569, + 0, 0, 0, 0, 0, 0, -569, 771, 0, -569, -569, 0, -569, -569, 0, -569, -569, -569, -569, 0, -569, -569, -569, -569, -569, -569, 0, 0, -569, 0, - 0, 0, 0, 0, 0, -570, -570, -570, -570, -570, - -570, -570, -570, -570, 0, 0, 0, 0, -569, -569, - -569, -570, 0, -570, -570, -570, -570, 0, -569, 0, - 0, 0, -570, -570, -570, -570, -570, -570, -570, 0, - 0, -570, 0, 0, 0, 0, 0, 0, 0, 0, - -570, -570, -570, -570, -570, -570, -570, -570, -570, 0, - -570, -570, -570, 0, 0, -570, 0, 0, -570, -570, - 0, -570, -570, -570, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -99, -570, -570, -570, -570, + -570, -570, -570, -570, -570, 0, 0, 0, -569, -569, + -569, 0, -570, 0, -570, -570, -570, -570, -569, 0, + 0, 0, 0, -570, -570, -570, -570, -570, -570, -570, + 0, 0, -570, 0, 0, 0, 0, 0, 0, 0, + 0, -570, -570, -570, -570, -570, -570, -570, -570, -570, + 0, -570, -570, -570, 0, 0, -570, 0, 0, -570, + -570, 0, -570, -570, -570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -570, 0, 0, -570, -570, 0, -570, -570, - 0, -570, -570, -570, -570, 0, -570, -570, -570, -570, - -570, -570, 0, 0, -570, 0, 0, 0, 0, 0, + 0, 0, 0, -570, 772, 0, -570, -570, 0, -570, + -570, 0, -570, -570, -570, -570, 0, -570, -570, -570, + -570, -570, -570, 0, 0, -570, 0, 0, 0, 0, + 0, 0, -101, -255, -255, -255, -255, -255, -255, -255, + -255, -255, 0, 0, 0, -570, -570, -570, 0, -255, + 0, -255, -255, -255, -255, -570, 0, 0, 0, 0, + -255, -255, -255, -255, -255, -255, -255, 0, 0, -255, + 0, 0, 0, 0, 0, 0, 0, 0, -255, -255, + -255, -255, -255, -255, -255, -255, -255, 0, -255, -255, + -255, 0, 0, -255, 0, 0, -255, -255, 0, -255, + -255, -255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -570, -570, -570, 0, 0, 0, - 0, 0, 0, 0, -570, 125, 126, 127, 128, 129, + -255, 0, 0, -255, -255, 0, -255, -255, 0, -255, + -255, -255, -255, 0, -255, -255, -255, -255, -255, -255, + 0, 0, -255, 0, 0, 0, 0, 0, 0, -571, + -571, -571, -571, -571, -571, -571, -571, -571, 0, 0, + 0, 0, -255, -255, -255, -571, 0, -571, -571, -571, + -571, 0, 266, 0, 0, 0, -571, -571, -571, -571, + -571, -571, -571, 0, 0, -571, 0, 0, 0, 0, + 0, 0, 0, 0, -571, -571, -571, -571, -571, -571, + -571, -571, -571, 0, -571, -571, -571, 0, 0, -571, + 0, 0, -571, -571, 0, -571, -571, -571, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -571, 0, 0, -571, + -571, 0, -571, -571, 0, -571, -571, -571, -571, 0, + -571, -571, -571, -571, -571, -571, 0, 0, -571, 0, + 0, 0, 0, 0, 0, -572, -572, -572, -572, -572, + -572, -572, -572, -572, 0, 0, 0, 0, -571, -571, + -571, -572, 0, -572, -572, -572, -572, 0, -571, 0, + 0, 0, -572, -572, -572, -572, -572, -572, -572, 0, + 0, -572, 0, 0, 0, 0, 0, 0, 0, 0, + -572, -572, -572, -572, -572, -572, -572, -572, -572, 0, + -572, -572, -572, 0, 0, -572, 0, 0, -572, -572, + 0, -572, -572, -572, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -572, 0, 0, -572, -572, 0, -572, -572, + 0, -572, -572, -572, -572, 0, -572, -572, -572, -572, + -572, -572, 0, 0, -572, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -572, -572, -572, 0, 0, 0, + 0, 0, 0, 0, -572, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 0, 0, 0, 149, 150, 151, 224, 225, 226, 227, 156, @@ -3529,17 +3529,17 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 0, 0, 0, 0, 0, 0, 0, - 368, -260, 369, 370, 371, 372, 373, 374, 375, 376, + 368, -262, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 0, 0, 0, 0, 0, 0, 0, 0, - -261, 353, 354, 355, 356, 357, 358, 359, 360, 361, + -263, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, 366, 367, 0, 0, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, 366, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 0, 0, 0, 0, 0, 0, 0, 368, -262, + 378, 0, 0, 0, 0, 0, 0, 0, 368, -264, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 0, 0, 0, 0, 0, 0, 0, 0, -263, 353, + 0, 0, 0, 0, 0, 0, 0, 0, -265, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, 366, 367, 0, 0, 0, 447, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, @@ -3549,7 +3549,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, -595, -595, 0, 0, 366, 367, 353, 354, 355, + 363, -597, -597, 0, 0, 366, 367, 353, 354, 355, 356, 357, 358, 359, 360, 0, 362, 363, 0, 0, 0, 0, 366, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4863,43 +4863,43 @@ static const yytype_int16 yyr1[] = 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 185, 185, 185, 185, 186, 186, 187, - 187, 188, 188, 189, 189, 189, 189, 189, 190, 190, - 190, 190, 190, 192, 191, 193, 194, 194, 195, 195, - 196, 196, 196, 196, 197, 197, 197, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 199, 198, 200, 201, - 198, 202, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 203, 204, 198, 198, 198, - 205, 206, 198, 207, 208, 198, 198, 198, 209, 210, - 198, 211, 198, 212, 213, 198, 214, 198, 215, 216, - 198, 217, 218, 198, 198, 198, 198, 198, 219, 220, - 220, 220, 221, 221, 222, 222, 223, 223, 224, 224, - 225, 225, 225, 225, 225, 225, 225, 225, 226, 225, - 227, 227, 227, 227, 228, 228, 229, 229, 229, 229, + 184, 184, 184, 184, 184, 185, 185, 185, 185, 186, + 186, 187, 187, 188, 188, 189, 189, 189, 189, 189, + 190, 190, 190, 190, 190, 192, 191, 193, 194, 194, + 195, 195, 196, 196, 196, 196, 197, 197, 197, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 199, 198, + 200, 201, 198, 202, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 203, 204, 198, + 198, 198, 205, 206, 198, 207, 208, 198, 198, 198, + 209, 210, 198, 211, 198, 212, 213, 198, 214, 198, + 215, 216, 198, 217, 218, 198, 198, 198, 198, 198, + 219, 220, 220, 220, 221, 221, 222, 222, 223, 223, + 224, 224, 225, 225, 225, 225, 225, 225, 225, 225, + 226, 225, 227, 227, 227, 227, 228, 228, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 230, 230, 232, 231, 231, 231, 233, 233, 234, - 234, 235, 235, 236, 236, 237, 237, 239, 238, 240, - 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 243, 242, 244, 242, 245, 246, 246, 247, - 247, 248, 248, 248, 249, 249, 250, 250, 251, 251, - 251, 251, 252, 252, 253, 253, 253, 253, 254, 254, - 255, 256, 255, 255, 255, 257, 257, 258, 258, 259, - 260, 260, 261, 261, 262, 262, 263, 264, 263, 265, - 265, 266, 266, 267, 268, 268, 268, 268, 268, 268, - 269, 269, 270, 270, 270, 270, 271, 271, 271, 271, - 271, 272, 272, 273, 273, 273, 273, 273, 273, 273, - 273, 274, 274, 275, 276, 275, 277, 277, 277, 278, - 279, 279, 280, 280, 281, 281, 282, 282, 283, 283, - 284, 284, 285, 285, 285, 285, 286, 286, 287, 287, + 229, 229, 229, 230, 230, 232, 231, 231, 231, 233, + 233, 234, 234, 235, 235, 236, 236, 237, 237, 239, + 238, 240, 240, 240, 240, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 243, 242, 244, 242, 245, 246, + 246, 247, 247, 248, 248, 248, 249, 249, 250, 250, + 251, 251, 251, 251, 252, 252, 253, 253, 253, 253, + 254, 254, 255, 256, 255, 255, 255, 257, 257, 258, + 258, 259, 260, 260, 261, 261, 262, 262, 263, 264, + 263, 265, 265, 266, 266, 267, 268, 268, 268, 268, + 268, 268, 269, 269, 270, 270, 270, 270, 271, 271, + 271, 271, 271, 272, 272, 273, 273, 273, 273, 273, + 273, 273, 273, 274, 274, 275, 276, 275, 277, 277, + 277, 278, 279, 279, 280, 280, 281, 281, 282, 282, + 283, 283, 284, 284, 285, 285, 285, 285, 286, 286, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 288, 288, 288, 288, 288, 289, 289, - 290, 291, 290, 292, 292, 293, 294, 295, 296, 296, - 297, 297, 298, 298, 299, 299, 300, 300, 301, 302, - 302, 303, 304, 303, 305, 305, 306, 306, 307, 307, - 308, 308, 308, 308, 309, 309, 309, 310, 310, 310, - 310, 311, 311, 311, 312, 312, 313, 313, 314, 314, - 315, 315, 316, 316, 317, 318, 318, 318, 319, 319, - 319, 320, 321, 321, 322 + 287, 287, 287, 287, 287, 288, 288, 288, 288, 288, + 289, 289, 290, 291, 290, 292, 292, 293, 294, 295, + 296, 296, 297, 297, 298, 298, 299, 299, 300, 300, + 301, 302, 302, 303, 304, 303, 305, 305, 306, 306, + 307, 307, 308, 308, 308, 308, 309, 309, 309, 310, + 310, 310, 310, 311, 311, 311, 312, 312, 313, 313, + 314, 314, 315, 315, 316, 316, 317, 318, 318, 318, + 319, 319, 319, 320, 321, 321, 322 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -4925,46 +4925,46 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 6, 5, 5, 5, 5, 4, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 4, 4, 2, - 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 3, 3, 3, 3, - 6, 6, 1, 1, 2, 4, 2, 1, 3, 3, - 3, 1, 1, 1, 2, 2, 4, 2, 1, 2, - 2, 4, 1, 0, 2, 2, 2, 1, 1, 3, - 1, 2, 3, 4, 3, 4, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 4, 0, 0, - 5, 0, 3, 3, 3, 2, 3, 3, 1, 2, - 4, 3, 2, 1, 2, 0, 0, 5, 6, 6, - 0, 0, 7, 0, 0, 7, 5, 4, 0, 0, - 9, 0, 6, 0, 0, 8, 0, 5, 0, 0, - 7, 0, 0, 9, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 5, 1, 2, 1, 1, - 1, 4, 6, 3, 5, 2, 4, 1, 0, 4, - 4, 2, 2, 1, 2, 0, 6, 8, 4, 6, - 4, 3, 6, 2, 4, 6, 2, 4, 2, 4, - 1, 1, 1, 0, 4, 1, 4, 1, 4, 1, - 3, 1, 1, 4, 1, 3, 3, 0, 5, 2, - 4, 5, 5, 2, 4, 4, 3, 3, 3, 2, - 1, 4, 0, 5, 0, 5, 5, 1, 1, 6, - 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, - 1, 1, 1, 2, 1, 1, 2, 3, 1, 2, - 1, 0, 4, 1, 2, 2, 3, 2, 3, 1, - 1, 2, 1, 2, 1, 2, 1, 0, 4, 2, - 3, 1, 4, 2, 1, 1, 1, 1, 1, 2, - 2, 3, 1, 1, 2, 2, 1, 1, 1, 1, + 2, 3, 2, 3, 3, 3, 3, 3, 3, 4, + 4, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, + 3, 3, 6, 6, 1, 1, 2, 4, 2, 1, + 3, 3, 3, 1, 1, 1, 2, 2, 4, 2, + 1, 2, 2, 4, 1, 0, 2, 2, 2, 1, + 1, 3, 1, 2, 3, 4, 3, 4, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, + 0, 0, 5, 0, 3, 3, 3, 2, 3, 3, + 1, 2, 4, 3, 2, 1, 2, 0, 0, 5, + 6, 6, 0, 0, 7, 0, 0, 7, 5, 4, + 0, 0, 9, 0, 6, 0, 0, 8, 0, 5, + 0, 0, 7, 0, 0, 9, 1, 1, 1, 1, + 1, 1, 1, 2, 1, 1, 1, 5, 1, 2, + 1, 1, 1, 4, 6, 3, 5, 2, 4, 1, + 0, 4, 4, 2, 2, 1, 2, 0, 6, 8, + 4, 6, 4, 3, 6, 2, 4, 6, 2, 4, + 2, 4, 1, 1, 1, 0, 4, 1, 4, 1, + 4, 1, 3, 1, 1, 4, 1, 3, 3, 0, + 5, 2, 4, 5, 5, 2, 4, 4, 3, 3, + 3, 2, 1, 4, 0, 5, 0, 5, 5, 1, + 1, 6, 1, 1, 1, 1, 2, 1, 2, 1, + 1, 1, 1, 1, 1, 2, 1, 1, 2, 3, + 1, 2, 1, 0, 4, 1, 2, 2, 3, 2, + 3, 1, 1, 2, 1, 2, 1, 2, 1, 0, + 4, 2, 3, 1, 4, 2, 1, 1, 1, 1, + 1, 2, 2, 3, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 0, 4, 3, 3, 2, 2, - 2, 1, 2, 1, 1, 3, 1, 3, 1, 1, - 2, 1, 4, 2, 2, 1, 2, 0, 6, 8, - 4, 6, 4, 6, 2, 4, 6, 2, 4, 2, - 4, 1, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 4, 1, 3, 2, 2, 2, 1, 3, - 1, 3, 1, 1, 2, 1, 1, 1, 2, 2, - 1, 1, 0, 4, 1, 2, 1, 3, 1, 2, - 3, 3, 3, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 4, 3, 3, + 2, 2, 2, 1, 2, 1, 1, 3, 1, 3, + 1, 1, 2, 1, 4, 2, 2, 1, 2, 0, + 6, 8, 4, 6, 4, 6, 2, 4, 6, 2, + 4, 2, 4, 1, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 4, 1, 3, 2, 2, 2, + 1, 3, 1, 3, 1, 1, 2, 1, 1, 1, + 2, 2, 1, 1, 0, 4, 1, 2, 1, 3, + 1, 2, 3, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 1, 0, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 2, 0 + 1, 1, 0, 1, 0, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 2, 0 }; @@ -6778,7 +6778,7 @@ yyreduce: case 200: #line 2122 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_dot3(p, (yyvsp[-2].nd), (yyvsp[0].nd)); + (yyval.nd) = new_dot2(p, (yyvsp[-1].nd), new_nil(p)); } #line 6784 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6786,7 +6786,7 @@ yyreduce: case 201: #line 2126 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "+", (yyvsp[0].nd)); + (yyval.nd) = new_dot3(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } #line 6792 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6794,7 +6794,7 @@ yyreduce: case 202: #line 2130 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "-", (yyvsp[0].nd)); + (yyval.nd) = new_dot3(p, (yyvsp[-1].nd), new_nil(p)); } #line 6800 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6802,7 +6802,7 @@ yyreduce: case 203: #line 2134 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "*", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "+", (yyvsp[0].nd)); } #line 6808 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6810,7 +6810,7 @@ yyreduce: case 204: #line 2138 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "/", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "-", (yyvsp[0].nd)); } #line 6816 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6818,7 +6818,7 @@ yyreduce: case 205: #line 2142 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "%", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "*", (yyvsp[0].nd)); } #line 6824 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6826,7 +6826,7 @@ yyreduce: case 206: #line 2146 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "/", (yyvsp[0].nd)); } #line 6832 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6834,7 +6834,7 @@ yyreduce: case 207: #line 2150 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)), "-@"); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "%", (yyvsp[0].nd)); } #line 6840 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6842,7 +6842,7 @@ yyreduce: case 208: #line 2154 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)), "-@"); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)); } #line 6848 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6850,7 +6850,7 @@ yyreduce: case 209: #line 2158 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "+@"); + (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)), "-@"); } #line 6856 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6858,7 +6858,7 @@ yyreduce: case 210: #line 2162 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "-@"); + (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)), "-@"); } #line 6864 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6866,7 +6866,7 @@ yyreduce: case 211: #line 2166 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "|", (yyvsp[0].nd)); + (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "+@"); } #line 6872 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6874,7 +6874,7 @@ yyreduce: case 212: #line 2170 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "^", (yyvsp[0].nd)); + (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "-@"); } #line 6880 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6882,7 +6882,7 @@ yyreduce: case 213: #line 2174 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "&", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "|", (yyvsp[0].nd)); } #line 6888 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6890,7 +6890,7 @@ yyreduce: case 214: #line 2178 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=>", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "^", (yyvsp[0].nd)); } #line 6896 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6898,7 +6898,7 @@ yyreduce: case 215: #line 2182 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "&", (yyvsp[0].nd)); } #line 6904 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6906,7 +6906,7 @@ yyreduce: case 216: #line 2186 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">=", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=>", (yyvsp[0].nd)); } #line 6912 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6914,7 +6914,7 @@ yyreduce: case 217: #line 2190 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">", (yyvsp[0].nd)); } #line 6920 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6922,7 +6922,7 @@ yyreduce: case 218: #line 2194 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">=", (yyvsp[0].nd)); } #line 6928 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6930,7 +6930,7 @@ yyreduce: case 219: #line 2198 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "==", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<", (yyvsp[0].nd)); } #line 6936 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6938,7 +6938,7 @@ yyreduce: case 220: #line 2202 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "===", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=", (yyvsp[0].nd)); } #line 6944 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6946,7 +6946,7 @@ yyreduce: case 221: #line 2206 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!=", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "==", (yyvsp[0].nd)); } #line 6952 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6954,7 +6954,7 @@ yyreduce: case 222: #line 2210 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "=~", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "===", (yyvsp[0].nd)); } #line 6960 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6962,7 +6962,7 @@ yyreduce: case 223: #line 2214 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!~", (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!=", (yyvsp[0].nd)); } #line 6968 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6970,7 +6970,7 @@ yyreduce: case 224: #line 2218 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "=~", (yyvsp[0].nd)); } #line 6976 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6978,7 +6978,7 @@ yyreduce: case 225: #line 2222 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "~"); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!~", (yyvsp[0].nd)); } #line 6984 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6986,7 +6986,7 @@ yyreduce: case 226: #line 2226 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<<", (yyvsp[0].nd)); + (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); } #line 6992 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -6994,7 +6994,7 @@ yyreduce: case 227: #line 2230 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">>", (yyvsp[0].nd)); + (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "~"); } #line 7000 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7002,7 +7002,7 @@ yyreduce: case 228: #line 2234 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<<", (yyvsp[0].nd)); } #line 7008 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7010,7 +7010,7 @@ yyreduce: case 229: #line 2238 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd)); + (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">>", (yyvsp[0].nd)); } #line 7016 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7018,7 +7018,7 @@ yyreduce: case 230: #line 2242 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); + (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } #line 7024 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7026,7 +7026,7 @@ yyreduce: case 231: #line 2246 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); + (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } #line 7032 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7034,65 +7034,81 @@ yyreduce: case 232: #line 2250 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = (yyvsp[0].nd); + (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); } #line 7040 "mrbgems/mruby-compiler/core/y.tab.c" break; + case 233: +#line 2254 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); + } +#line 7048 "mrbgems/mruby-compiler/core/y.tab.c" + break; + case 234: -#line 2257 "mrbgems/mruby-compiler/core/parse.y" +#line 2258 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[0].nd); + } +#line 7056 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 236: +#line 2265 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7049 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7065 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 235: -#line 2262 "mrbgems/mruby-compiler/core/parse.y" + case 237: +#line 2270 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd))); } -#line 7057 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7073 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 236: -#line 2266 "mrbgems/mruby-compiler/core/parse.y" + case 238: +#line 2274 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(new_kw_hash(p, (yyvsp[-1].nd)), 0); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7066 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7082 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 237: -#line 2273 "mrbgems/mruby-compiler/core/parse.y" + case 239: +#line 2281 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7074 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7090 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 238: -#line 2277 "mrbgems/mruby-compiler/core/parse.y" + case 240: +#line 2285 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[-2].nd)); void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7084 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7100 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 239: -#line 2285 "mrbgems/mruby-compiler/core/parse.y" + case 241: +#line 2293 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 7092 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7108 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 240: -#line 2289 "mrbgems/mruby-compiler/core/parse.y" + case 242: +#line 2297 "mrbgems/mruby-compiler/core/parse.y" { #if 1 mrb_sym r = mrb_intern_lit(p->mrb, "*"); @@ -7116,273 +7132,257 @@ yyreduce: (yyval.nd) = 0; } } -#line 7120 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7136 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 245: -#line 2321 "mrbgems/mruby-compiler/core/parse.y" + case 247: +#line 2329 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons((yyvsp[-1].nd),0); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7129 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7145 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 246: -#line 2326 "mrbgems/mruby-compiler/core/parse.y" + case 248: +#line 2334 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(push((yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd))), 0); NODE_LINENO((yyval.nd), (yyvsp[-3].nd)); } -#line 7138 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7154 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 247: -#line 2331 "mrbgems/mruby-compiler/core/parse.y" + case 249: +#line 2339 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(list1(new_kw_hash(p, (yyvsp[-1].nd))), 0); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7147 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7163 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 248: -#line 2338 "mrbgems/mruby-compiler/core/parse.y" + case 250: +#line 2346 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(list1((yyvsp[0].nd)), 0); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7157 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7173 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 249: -#line 2344 "mrbgems/mruby-compiler/core/parse.y" + case 251: +#line 2352 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons((yyvsp[-1].nd), (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7166 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7182 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 250: -#line 2349 "mrbgems/mruby-compiler/core/parse.y" + case 252: +#line 2357 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(list1(new_kw_hash(p, (yyvsp[-1].nd))), (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7175 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7191 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 251: -#line 2354 "mrbgems/mruby-compiler/core/parse.y" + case 253: +#line 2362 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(push((yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd))), (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[-3].nd)); } -#line 7184 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7200 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 252: -#line 2359 "mrbgems/mruby-compiler/core/parse.y" + case 254: +#line 2367 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(0, (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7193 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7209 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 253: -#line 2365 "mrbgems/mruby-compiler/core/parse.y" + case 255: +#line 2373 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; CMDARG_PUSH(1); } -#line 7202 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7218 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 254: -#line 2370 "mrbgems/mruby-compiler/core/parse.y" + case 256: +#line 2378 "mrbgems/mruby-compiler/core/parse.y" { p->cmdarg_stack = (yyvsp[-1].stack); (yyval.nd) = (yyvsp[0].nd); } -#line 7211 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7227 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 255: -#line 2377 "mrbgems/mruby-compiler/core/parse.y" + case 257: +#line 2385 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block_arg(p, (yyvsp[0].nd)); } -#line 7219 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7235 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 256: -#line 2383 "mrbgems/mruby-compiler/core/parse.y" + case 258: +#line 2391 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7227 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7243 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 257: -#line 2387 "mrbgems/mruby-compiler/core/parse.y" + case 259: +#line 2395 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 7235 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7251 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 260: -#line 2397 "mrbgems/mruby-compiler/core/parse.y" + case 262: +#line 2405 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons((yyvsp[0].nd), 0); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7245 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7261 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 261: -#line 2403 "mrbgems/mruby-compiler/core/parse.y" + case 263: +#line 2411 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_splat(p, (yyvsp[0].nd)), 0); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7255 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7271 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 262: -#line 2409 "mrbgems/mruby-compiler/core/parse.y" + case 264: +#line 2417 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7264 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7280 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 263: -#line 2414 "mrbgems/mruby-compiler/core/parse.y" + case 265: +#line 2422 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); } -#line 7273 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7289 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 264: -#line 2421 "mrbgems/mruby-compiler/core/parse.y" + case 266: +#line 2429 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7282 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7298 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 265: -#line 2426 "mrbgems/mruby-compiler/core/parse.y" + case 267: +#line 2434 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); } -#line 7291 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7307 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 266: -#line 2431 "mrbgems/mruby-compiler/core/parse.y" + case 268: +#line 2439 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd))); } -#line 7300 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7316 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 274: -#line 2445 "mrbgems/mruby-compiler/core/parse.y" + case 276: +#line 2453 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_nvar(p, (yyvsp[0].num)); } -#line 7308 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7324 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 275: -#line 2449 "mrbgems/mruby-compiler/core/parse.y" + case 277: +#line 2457 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[0].id), 0); } -#line 7316 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7332 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 276: -#line 2453 "mrbgems/mruby-compiler/core/parse.y" + case 278: +#line 2461 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 7325 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7341 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 277: -#line 2459 "mrbgems/mruby-compiler/core/parse.y" + case 279: +#line 2467 "mrbgems/mruby-compiler/core/parse.y" { p->cmdarg_stack = (yyvsp[-2].stack); (yyval.nd) = (yyvsp[-1].nd); } -#line 7334 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7350 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 278: -#line 2464 "mrbgems/mruby-compiler/core/parse.y" + case 280: +#line 2472 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 7343 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7359 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 279: -#line 2468 "mrbgems/mruby-compiler/core/parse.y" + case 281: +#line 2476 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_ENDARG;} -#line 7349 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7365 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 280: -#line 2469 "mrbgems/mruby-compiler/core/parse.y" + case 282: +#line 2477 "mrbgems/mruby-compiler/core/parse.y" { p->cmdarg_stack = (yyvsp[-3].stack); (yyval.nd) = (yyvsp[-2].nd); } -#line 7358 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 281: -#line 2473 "mrbgems/mruby-compiler/core/parse.y" - {p->lstate = EXPR_ENDARG;} -#line 7364 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 282: -#line 2474 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_nil(p); - } -#line 7372 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7374 "mrbgems/mruby-compiler/core/y.tab.c" break; case 283: -#line 2478 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } +#line 2481 "mrbgems/mruby-compiler/core/parse.y" + {p->lstate = EXPR_ENDARG;} #line 7380 "mrbgems/mruby-compiler/core/y.tab.c" break; case 284: #line 2482 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); + (yyval.nd) = new_nil(p); } #line 7388 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7390,7 +7390,7 @@ yyreduce: case 285: #line 2486 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_colon3(p, (yyvsp[0].id)); + (yyval.nd) = (yyvsp[-1].nd); } #line 7396 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7398,33 +7398,33 @@ yyreduce: case 286: #line 2490 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_array(p, (yyvsp[-1].nd)); - NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); + (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); } -#line 7405 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7404 "mrbgems/mruby-compiler/core/y.tab.c" break; case 287: -#line 2495 "mrbgems/mruby-compiler/core/parse.y" +#line 2494 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_hash(p, (yyvsp[-1].nd)); - NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); + (yyval.nd) = new_colon3(p, (yyvsp[0].id)); } -#line 7414 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7412 "mrbgems/mruby-compiler/core/y.tab.c" break; case 288: -#line 2500 "mrbgems/mruby-compiler/core/parse.y" +#line 2498 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_return(p, 0); + (yyval.nd) = new_array(p, (yyvsp[-1].nd)); + NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7422 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7421 "mrbgems/mruby-compiler/core/y.tab.c" break; case 289: -#line 2504 "mrbgems/mruby-compiler/core/parse.y" +#line 2503 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_yield(p, (yyvsp[0].nd)); + (yyval.nd) = new_hash(p, (yyvsp[-1].nd)); + NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } #line 7430 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7432,7 +7432,7 @@ yyreduce: case 290: #line 2508 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_uni_op(p, cond((yyvsp[-1].nd)), "!"); + (yyval.nd) = new_return(p, 0); } #line 7438 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7440,7 +7440,7 @@ yyreduce: case 291: #line 2512 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = call_uni_op(p, new_nil(p), "!"); + (yyval.nd) = new_yield(p, (yyvsp[0].nd)); } #line 7446 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7448,41 +7448,57 @@ yyreduce: case 292: #line 2516 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_fcall(p, (yyvsp[-1].id), cons(0, (yyvsp[0].nd))); + (yyval.nd) = call_uni_op(p, cond((yyvsp[-1].nd)), "!"); } #line 7454 "mrbgems/mruby-compiler/core/y.tab.c" break; + case 293: +#line 2520 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = call_uni_op(p, new_nil(p), "!"); + } +#line 7462 "mrbgems/mruby-compiler/core/y.tab.c" + break; + case 294: -#line 2521 "mrbgems/mruby-compiler/core/parse.y" +#line 2524 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_fcall(p, (yyvsp[-1].id), cons(0, (yyvsp[0].nd))); + } +#line 7470 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 296: +#line 2529 "mrbgems/mruby-compiler/core/parse.y" { call_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = (yyvsp[-1].nd); } -#line 7463 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7479 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 295: -#line 2526 "mrbgems/mruby-compiler/core/parse.y" + case 297: +#line 2534 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); (yyval.num) = p->lpar_beg; p->lpar_beg = ++p->paren_nest; } -#line 7473 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7489 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 296: -#line 2532 "mrbgems/mruby-compiler/core/parse.y" + case 298: +#line 2540 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 7482 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7498 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 297: -#line 2537 "mrbgems/mruby-compiler/core/parse.y" + case 299: +#line 2545 "mrbgems/mruby-compiler/core/parse.y" { p->lpar_beg = (yyvsp[-3].num); (yyval.nd) = new_lambda(p, (yyvsp[-2].nd), (yyvsp[0].nd)); @@ -7490,149 +7506,149 @@ yyreduce: p->cmdarg_stack = (yyvsp[-1].stack); CMDARG_LEXPOP(); } -#line 7494 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7510 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 298: -#line 2548 "mrbgems/mruby-compiler/core/parse.y" + case 300: +#line 2556 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-5].num)); } -#line 7503 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7519 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 299: -#line 2556 "mrbgems/mruby-compiler/core/parse.y" + case 301: +#line 2564 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_unless(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-5].num)); } -#line 7512 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7528 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 300: -#line 2560 "mrbgems/mruby-compiler/core/parse.y" + case 302: +#line 2568 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 7518 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7534 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 301: -#line 2560 "mrbgems/mruby-compiler/core/parse.y" + case 303: +#line 2568 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 7524 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7540 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 302: -#line 2563 "mrbgems/mruby-compiler/core/parse.y" + case 304: +#line 2571 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_while(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-6].num)); } -#line 7533 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7549 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 303: -#line 2567 "mrbgems/mruby-compiler/core/parse.y" + case 305: +#line 2575 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 7539 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7555 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 304: -#line 2567 "mrbgems/mruby-compiler/core/parse.y" + case 306: +#line 2575 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 7545 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7561 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 305: -#line 2570 "mrbgems/mruby-compiler/core/parse.y" + case 307: +#line 2578 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_until(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-6].num)); } -#line 7554 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7570 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 306: -#line 2577 "mrbgems/mruby-compiler/core/parse.y" + case 308: +#line 2585 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_case(p, (yyvsp[-3].nd), (yyvsp[-1].nd)); } -#line 7562 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7578 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 307: -#line 2581 "mrbgems/mruby-compiler/core/parse.y" + case 309: +#line 2589 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_case(p, 0, (yyvsp[-1].nd)); } -#line 7570 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7586 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 308: -#line 2585 "mrbgems/mruby-compiler/core/parse.y" + case 310: +#line 2593 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 7576 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7592 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 309: -#line 2587 "mrbgems/mruby-compiler/core/parse.y" + case 311: +#line 2595 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 7582 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7598 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 310: -#line 2590 "mrbgems/mruby-compiler/core/parse.y" + case 312: +#line 2598 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_for(p, (yyvsp[-7].nd), (yyvsp[-4].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-8].num)); } -#line 7591 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7607 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 311: -#line 2596 "mrbgems/mruby-compiler/core/parse.y" + case 313: +#line 2604 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "class definition in method body"); (yyval.nd) = local_switch(p); nvars_block(p); } -#line 7602 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7618 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 312: -#line 2604 "mrbgems/mruby-compiler/core/parse.y" + case 314: +#line 2612 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_class(p, (yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-5].num)); local_resume(p, (yyvsp[-2].nd)); nvars_unnest(p); } -#line 7613 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7629 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 313: -#line 2612 "mrbgems/mruby-compiler/core/parse.y" + case 315: +#line 2620 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = p->in_def; p->in_def = 0; } -#line 7622 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7638 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 314: -#line 2617 "mrbgems/mruby-compiler/core/parse.y" + case 316: +#line 2625 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(local_switch(p), nint(p->in_single)); nvars_block(p); p->in_single = 0; } -#line 7632 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7648 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 315: -#line 2624 "mrbgems/mruby-compiler/core/parse.y" + case 317: +#line 2632 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_sclass(p, (yyvsp[-5].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-7].num)); @@ -7641,52 +7657,52 @@ yyreduce: p->in_def = (yyvsp[-4].num); p->in_single = intn((yyvsp[-2].nd)->cdr); } -#line 7645 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7661 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 316: -#line 2634 "mrbgems/mruby-compiler/core/parse.y" + case 318: +#line 2642 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "module definition in method body"); (yyval.nd) = local_switch(p); nvars_block(p); } -#line 7656 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7672 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 317: -#line 2642 "mrbgems/mruby-compiler/core/parse.y" + case 319: +#line 2650 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_module(p, (yyvsp[-3].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-4].num)); local_resume(p, (yyvsp[-2].nd)); nvars_unnest(p); } -#line 7667 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7683 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 318: -#line 2649 "mrbgems/mruby-compiler/core/parse.y" + case 320: +#line 2657 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 7676 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7692 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 319: -#line 2653 "mrbgems/mruby-compiler/core/parse.y" + case 321: +#line 2661 "mrbgems/mruby-compiler/core/parse.y" { p->in_def++; (yyval.nd) = local_switch(p); nvars_block(p); } -#line 7686 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7702 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 320: -#line 2661 "mrbgems/mruby-compiler/core/parse.y" + case 322: +#line 2669 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_def(p, (yyvsp[-5].id), (yyvsp[-2].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-6].num)); @@ -7695,32 +7711,32 @@ yyreduce: p->in_def--; p->cmdarg_stack = (yyvsp[-4].stack); } -#line 7699 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7715 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 321: -#line 2670 "mrbgems/mruby-compiler/core/parse.y" + case 323: +#line 2678 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_FNAME; (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 7709 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7725 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 322: -#line 2676 "mrbgems/mruby-compiler/core/parse.y" + case 324: +#line 2684 "mrbgems/mruby-compiler/core/parse.y" { p->in_single++; p->lstate = EXPR_ENDFN; /* force for args */ (yyval.nd) = local_switch(p); nvars_block(p); } -#line 7720 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7736 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 323: -#line 2685 "mrbgems/mruby-compiler/core/parse.y" + case 325: +#line 2693 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_sdef(p, (yyvsp[-7].nd), (yyvsp[-4].id), (yyvsp[-2].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-8].num)); @@ -7729,29 +7745,13 @@ yyreduce: p->in_single--; p->cmdarg_stack = (yyvsp[-5].stack); } -#line 7733 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 324: -#line 2694 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_break(p, 0); - } -#line 7741 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 325: -#line 2698 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_next(p, 0); - } #line 7749 "mrbgems/mruby-compiler/core/y.tab.c" break; case 326: #line 2702 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_redo(p); + (yyval.nd) = new_break(p, 0); } #line 7757 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7759,56 +7759,56 @@ yyreduce: case 327: #line 2706 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_retry(p); + (yyval.nd) = new_next(p, 0); } #line 7765 "mrbgems/mruby-compiler/core/y.tab.c" break; case 328: -#line 2712 "mrbgems/mruby-compiler/core/parse.y" +#line 2710 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = (yyvsp[0].nd); - if (!(yyval.nd)) (yyval.nd) = new_nil(p); + (yyval.nd) = new_redo(p); } -#line 7774 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7773 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 335: -#line 2731 "mrbgems/mruby-compiler/core/parse.y" + case 329: +#line 2714 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_if(p, cond((yyvsp[-3].nd)), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_retry(p); } -#line 7782 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7781 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 337: -#line 2738 "mrbgems/mruby-compiler/core/parse.y" + case 330: +#line 2720 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); + if (!(yyval.nd)) (yyval.nd) = new_nil(p); } #line 7790 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 338: -#line 2744 "mrbgems/mruby-compiler/core/parse.y" + case 337: +#line 2739 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list1(list1((yyvsp[0].nd))); + (yyval.nd) = new_if(p, cond((yyvsp[-3].nd)), (yyvsp[-1].nd), (yyvsp[0].nd)); } #line 7798 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 340: -#line 2751 "mrbgems/mruby-compiler/core/parse.y" + case 339: +#line 2746 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list3((yyvsp[0].nd),0,0); + (yyval.nd) = (yyvsp[0].nd); } #line 7806 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 341: -#line 2755 "mrbgems/mruby-compiler/core/parse.y" + case 340: +#line 2752 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list3((yyvsp[-3].nd), new_arg(p, (yyvsp[0].id)), 0); + (yyval.nd) = list1(list1((yyvsp[0].nd))); } #line 7814 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7816,7 +7816,7 @@ yyreduce: case 342: #line 2759 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list3((yyvsp[-5].nd), new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); + (yyval.nd) = list3((yyvsp[0].nd),0,0); } #line 7822 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7824,24 +7824,24 @@ yyreduce: case 343: #line 2763 "mrbgems/mruby-compiler/core/parse.y" { - local_add_f(p, 0); - (yyval.nd) = list3((yyvsp[-2].nd), (node*)-1, 0); + (yyval.nd) = list3((yyvsp[-3].nd), new_arg(p, (yyvsp[0].id)), 0); } -#line 7831 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7830 "mrbgems/mruby-compiler/core/y.tab.c" break; case 344: -#line 2768 "mrbgems/mruby-compiler/core/parse.y" +#line 2767 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list3((yyvsp[-4].nd), (node*)-1, (yyvsp[0].nd)); + (yyval.nd) = list3((yyvsp[-5].nd), new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 7839 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7838 "mrbgems/mruby-compiler/core/y.tab.c" break; case 345: -#line 2772 "mrbgems/mruby-compiler/core/parse.y" +#line 2771 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list3(0, new_arg(p, (yyvsp[0].id)), 0); + local_add_f(p, 0); + (yyval.nd) = list3((yyvsp[-2].nd), (node*)-1, 0); } #line 7847 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7849,7 +7849,7 @@ yyreduce: case 346: #line 2776 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list3(0, new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); + (yyval.nd) = list3((yyvsp[-4].nd), (node*)-1, (yyvsp[0].nd)); } #line 7855 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7857,40 +7857,40 @@ yyreduce: case 347: #line 2780 "mrbgems/mruby-compiler/core/parse.y" { - local_add_f(p, 0); - (yyval.nd) = list3(0, (node*)-1, 0); + (yyval.nd) = list3(0, new_arg(p, (yyvsp[0].id)), 0); } -#line 7864 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7863 "mrbgems/mruby-compiler/core/y.tab.c" break; case 348: -#line 2785 "mrbgems/mruby-compiler/core/parse.y" +#line 2784 "mrbgems/mruby-compiler/core/parse.y" { - local_add_f(p, 0); + (yyval.nd) = list3(0, new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 7872 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7871 "mrbgems/mruby-compiler/core/y.tab.c" break; case 349: -#line 2789 "mrbgems/mruby-compiler/core/parse.y" +#line 2788 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list3(0, (node*)-1, (yyvsp[0].nd)); + local_add_f(p, 0); + (yyval.nd) = list3(0, (node*)-1, 0); } #line 7880 "mrbgems/mruby-compiler/core/y.tab.c" break; case 350: -#line 2795 "mrbgems/mruby-compiler/core/parse.y" +#line 2793 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); + local_add_f(p, 0); } #line 7888 "mrbgems/mruby-compiler/core/y.tab.c" break; case 351: -#line 2799 "mrbgems/mruby-compiler/core/parse.y" +#line 2797 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); + (yyval.nd) = list3(0, (node*)-1, (yyvsp[0].nd)); } #line 7896 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7898,7 +7898,7 @@ yyreduce: case 352: #line 2803 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); + (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); } #line 7904 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7906,39 +7906,39 @@ yyreduce: case 353: #line 2807 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); + (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); } #line 7912 "mrbgems/mruby-compiler/core/y.tab.c" break; case 354: -#line 2813 "mrbgems/mruby-compiler/core/parse.y" +#line 2811 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = (yyvsp[0].nd); + (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); } #line 7920 "mrbgems/mruby-compiler/core/y.tab.c" break; case 355: -#line 2817 "mrbgems/mruby-compiler/core/parse.y" +#line 2815 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, 0, 0); + (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); } #line 7928 "mrbgems/mruby-compiler/core/y.tab.c" break; case 356: -#line 2823 "mrbgems/mruby-compiler/core/parse.y" +#line 2821 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = (yyvsp[0].nd); } #line 7936 "mrbgems/mruby-compiler/core/y.tab.c" break; case 357: -#line 2827 "mrbgems/mruby-compiler/core/parse.y" +#line 2825 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args_tail(p, 0, 0, 0); } #line 7944 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7946,7 +7946,7 @@ yyreduce: case 358: #line 2831 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } #line 7952 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7954,7 +7954,7 @@ yyreduce: case 359: #line 2835 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } #line 7960 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7962,7 +7962,7 @@ yyreduce: case 360: #line 2839 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } #line 7968 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7970,7 +7970,7 @@ yyreduce: case 361: #line 2843 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-2].nd), 0, 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } #line 7976 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7978,7 +7978,7 @@ yyreduce: case 362: #line 2847 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } #line 7984 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7986,7 +7986,7 @@ yyreduce: case 363: #line 2851 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-2].nd), 0, 0, 0, (yyvsp[0].nd)); } #line 7992 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -7994,7 +7994,7 @@ yyreduce: case 364: #line 2855 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } #line 8000 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8002,7 +8002,7 @@ yyreduce: case 365: #line 2859 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); } #line 8008 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8010,7 +8010,7 @@ yyreduce: case 366: #line 2863 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } #line 8016 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8018,7 +8018,7 @@ yyreduce: case 367: #line 2867 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } #line 8024 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8026,7 +8026,7 @@ yyreduce: case 368: #line 2871 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } #line 8032 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8034,7 +8034,7 @@ yyreduce: case 369: #line 2875 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } #line 8040 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8042,138 +8042,154 @@ yyreduce: case 370: #line 2879 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } #line 8048 "mrbgems/mruby-compiler/core/y.tab.c" break; case 371: -#line 2885 "mrbgems/mruby-compiler/core/parse.y" +#line 2883 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + } +#line 8056 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 372: +#line 2887 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); + } +#line 8064 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 373: +#line 2893 "mrbgems/mruby-compiler/core/parse.y" { local_add_blk(p, 0); (yyval.nd) = 0; } -#line 8057 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8073 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 372: -#line 2890 "mrbgems/mruby-compiler/core/parse.y" + case 374: +#line 2898 "mrbgems/mruby-compiler/core/parse.y" { p->cmd_start = TRUE; (yyval.nd) = (yyvsp[0].nd); } -#line 8066 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8082 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 373: -#line 2896 "mrbgems/mruby-compiler/core/parse.y" + case 375: +#line 2904 "mrbgems/mruby-compiler/core/parse.y" {local_add_blk(p, 0);} -#line 8072 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8088 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 374: -#line 2897 "mrbgems/mruby-compiler/core/parse.y" + case 376: +#line 2905 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8080 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8096 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 375: -#line 2901 "mrbgems/mruby-compiler/core/parse.y" + case 377: +#line 2909 "mrbgems/mruby-compiler/core/parse.y" { local_add_blk(p, 0); (yyval.nd) = 0; } -#line 8089 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8105 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 376: -#line 2906 "mrbgems/mruby-compiler/core/parse.y" + case 378: +#line 2914 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-2].nd); } -#line 8097 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8113 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 377: -#line 2913 "mrbgems/mruby-compiler/core/parse.y" + case 379: +#line 2921 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8105 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8121 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 378: -#line 2917 "mrbgems/mruby-compiler/core/parse.y" + case 380: +#line 2925 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8113 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8129 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 381: -#line 2927 "mrbgems/mruby-compiler/core/parse.y" + case 383: +#line 2935 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); new_bv(p, (yyvsp[0].id)); } -#line 8122 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8138 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 383: -#line 2935 "mrbgems/mruby-compiler/core/parse.y" + case 385: +#line 2943 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-2].nd); } -#line 8130 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8146 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 384: -#line 2939 "mrbgems/mruby-compiler/core/parse.y" + case 386: +#line 2947 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8138 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8154 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 385: -#line 2945 "mrbgems/mruby-compiler/core/parse.y" + case 387: +#line 2953 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8146 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8162 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 386: -#line 2949 "mrbgems/mruby-compiler/core/parse.y" + case 388: +#line 2957 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8154 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8170 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 387: -#line 2955 "mrbgems/mruby-compiler/core/parse.y" + case 389: +#line 2963 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); } -#line 8163 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8179 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 388: -#line 2962 "mrbgems/mruby-compiler/core/parse.y" + case 390: +#line 2970 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); local_unnest(p); nvars_unnest(p); } -#line 8173 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8189 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 389: -#line 2970 "mrbgems/mruby-compiler/core/parse.y" + case 391: +#line 2978 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[-1].nd)->car == (node*)NODE_YIELD) { yyerror(p, "block given to yield"); @@ -8183,55 +8199,39 @@ yyreduce: } (yyval.nd) = (yyvsp[-1].nd); } -#line 8187 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8203 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 390: -#line 2980 "mrbgems/mruby-compiler/core/parse.y" + case 392: +#line 2988 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 8195 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8211 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 391: -#line 2984 "mrbgems/mruby-compiler/core/parse.y" + case 393: +#line 2992 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); call_with_block(p, (yyval.nd), (yyvsp[0].nd)); } -#line 8204 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8220 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 392: -#line 2989 "mrbgems/mruby-compiler/core/parse.y" + case 394: +#line 2997 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); call_with_block(p, (yyval.nd), (yyvsp[0].nd)); } -#line 8213 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 393: -#line 2996 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 8221 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 394: -#line 3000 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); - } #line 8229 "mrbgems/mruby-compiler/core/y.tab.c" break; case 395: #line 3004 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); + (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); } #line 8237 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8239,7 +8239,7 @@ yyreduce: case 396: #line 3008 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); + (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } #line 8245 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8247,7 +8247,7 @@ yyreduce: case 397: #line 3012 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), intern_lit("call"), (yyvsp[0].nd), (yyvsp[-1].num)); + (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); } #line 8253 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8255,7 +8255,7 @@ yyreduce: case 398: #line 3016 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), intern_lit("call"), (yyvsp[0].nd), tCOLON2); + (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); } #line 8261 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8263,7 +8263,7 @@ yyreduce: case 399: #line 3020 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_super(p, (yyvsp[0].nd)); + (yyval.nd) = new_call(p, (yyvsp[-2].nd), intern_lit("call"), (yyvsp[0].nd), (yyvsp[-1].num)); } #line 8269 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8271,7 +8271,7 @@ yyreduce: case 400: #line 3024 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_zsuper(p); + (yyval.nd) = new_call(p, (yyvsp[-2].nd), intern_lit("call"), (yyvsp[0].nd), tCOLON2); } #line 8277 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8279,63 +8279,79 @@ yyreduce: case 401: #line 3028 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_lit("[]"), (yyvsp[-1].nd), '.'); + (yyval.nd) = new_super(p, (yyvsp[0].nd)); } #line 8285 "mrbgems/mruby-compiler/core/y.tab.c" break; case 402: -#line 3034 "mrbgems/mruby-compiler/core/parse.y" +#line 3032 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_zsuper(p); + } +#line 8293 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 403: +#line 3036 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_lit("[]"), (yyvsp[-1].nd), '.'); + } +#line 8301 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 404: +#line 3042 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); (yyval.num) = p->lineno; } -#line 8295 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8311 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 403: -#line 3041 "mrbgems/mruby-compiler/core/parse.y" + case 405: +#line 3049 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-3].num)); local_unnest(p); nvars_unnest(p); } -#line 8306 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8322 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 404: -#line 3048 "mrbgems/mruby-compiler/core/parse.y" + case 406: +#line 3056 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); (yyval.num) = p->lineno; } -#line 8316 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8332 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 405: -#line 3055 "mrbgems/mruby-compiler/core/parse.y" + case 407: +#line 3063 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-3].num)); local_unnest(p); nvars_unnest(p); } -#line 8327 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8343 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 406: -#line 3066 "mrbgems/mruby-compiler/core/parse.y" + case 408: +#line 3074 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(cons((yyvsp[-3].nd), (yyvsp[-1].nd)), (yyvsp[0].nd)); } -#line 8335 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8351 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 407: -#line 3072 "mrbgems/mruby-compiler/core/parse.y" + case 409: +#line 3080 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[0].nd)) { (yyval.nd) = cons(cons(0, (yyvsp[0].nd)), 0); @@ -8344,297 +8360,281 @@ yyreduce: (yyval.nd) = 0; } } -#line 8348 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8364 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 409: -#line 3086 "mrbgems/mruby-compiler/core/parse.y" + case 411: +#line 3094 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(list3((yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd))); if ((yyvsp[0].nd)) (yyval.nd) = append((yyval.nd), (yyvsp[0].nd)); } -#line 8357 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8373 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 411: -#line 3094 "mrbgems/mruby-compiler/core/parse.y" + case 413: +#line 3102 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 8365 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8381 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 414: -#line 3102 "mrbgems/mruby-compiler/core/parse.y" + case 416: +#line 3110 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8373 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8389 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 416: -#line 3109 "mrbgems/mruby-compiler/core/parse.y" + case 418: +#line 3117 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8381 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8397 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 423: -#line 3123 "mrbgems/mruby-compiler/core/parse.y" + case 425: +#line 3131 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = concat_string(p, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8389 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8405 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 426: -#line 3131 "mrbgems/mruby-compiler/core/parse.y" + case 428: +#line 3139 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8397 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8413 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 427: -#line 3135 "mrbgems/mruby-compiler/core/parse.y" + case 429: +#line 3143 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dstr(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); } -#line 8405 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8421 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 429: -#line 3142 "mrbgems/mruby-compiler/core/parse.y" + case 431: +#line 3150 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = append((yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8413 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8429 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 430: -#line 3148 "mrbgems/mruby-compiler/core/parse.y" + case 432: +#line 3156 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 8421 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8437 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 431: -#line 3152 "mrbgems/mruby-compiler/core/parse.y" + case 433: +#line 3160 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = p->lex_strterm; p->lex_strterm = NULL; } -#line 8430 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8446 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 432: -#line 3158 "mrbgems/mruby-compiler/core/parse.y" + case 434: +#line 3166 "mrbgems/mruby-compiler/core/parse.y" { p->lex_strterm = (yyvsp[-2].nd); (yyval.nd) = list2((yyvsp[-3].nd), (yyvsp[-1].nd)); } -#line 8439 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8455 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 433: -#line 3163 "mrbgems/mruby-compiler/core/parse.y" + case 435: +#line 3171 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_literal_delim(p)); } -#line 8447 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8463 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 434: -#line 3167 "mrbgems/mruby-compiler/core/parse.y" + case 436: +#line 3175 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_literal_delim(p)); } -#line 8455 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8471 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 435: -#line 3173 "mrbgems/mruby-compiler/core/parse.y" + case 437: +#line 3181 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8463 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8479 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 436: -#line 3177 "mrbgems/mruby-compiler/core/parse.y" + case 438: +#line 3185 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dxstr(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); } -#line 8471 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8487 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 437: -#line 3183 "mrbgems/mruby-compiler/core/parse.y" + case 439: +#line 3191 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8479 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8495 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 438: -#line 3187 "mrbgems/mruby-compiler/core/parse.y" + case 440: +#line 3195 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dregx(p, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8487 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8503 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 442: -#line 3200 "mrbgems/mruby-compiler/core/parse.y" + case 444: +#line 3208 "mrbgems/mruby-compiler/core/parse.y" { parser_heredoc_info * inf = parsing_heredoc_inf(p); inf->doc = push(inf->doc, new_str(p, "", 0)); heredoc_end(p); } -#line 8497 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8513 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 443: -#line 3206 "mrbgems/mruby-compiler/core/parse.y" + case 445: +#line 3214 "mrbgems/mruby-compiler/core/parse.y" { heredoc_end(p); } -#line 8505 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8521 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 446: -#line 3216 "mrbgems/mruby-compiler/core/parse.y" + case 448: +#line 3224 "mrbgems/mruby-compiler/core/parse.y" { parser_heredoc_info * inf = parsing_heredoc_inf(p); inf->doc = push(inf->doc, (yyvsp[0].nd)); heredoc_treat_nextline(p); } -#line 8515 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8531 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 447: -#line 3222 "mrbgems/mruby-compiler/core/parse.y" + case 449: +#line 3230 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = p->lex_strterm; p->lex_strterm = NULL; } -#line 8524 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8540 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 448: -#line 3228 "mrbgems/mruby-compiler/core/parse.y" + case 450: +#line 3236 "mrbgems/mruby-compiler/core/parse.y" { parser_heredoc_info * inf = parsing_heredoc_inf(p); p->lex_strterm = (yyvsp[-2].nd); inf->doc = push(push(inf->doc, (yyvsp[-3].nd)), (yyvsp[-1].nd)); } -#line 8534 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8550 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 449: -#line 3236 "mrbgems/mruby-compiler/core/parse.y" + case 451: +#line 3244 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_words(p, list1((yyvsp[0].nd))); } -#line 8542 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8558 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 450: -#line 3240 "mrbgems/mruby-compiler/core/parse.y" + case 452: +#line 3248 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_words(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); } -#line 8550 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8566 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 451: -#line 3247 "mrbgems/mruby-compiler/core/parse.y" + case 453: +#line 3255 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDARG; (yyval.nd) = new_sym(p, (yyvsp[0].id)); } -#line 8559 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8575 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 452: -#line 3252 "mrbgems/mruby-compiler/core/parse.y" + case 454: +#line 3260 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDARG; (yyval.nd) = new_dsym(p, new_dstr(p, push((yyvsp[-1].nd), (yyvsp[0].nd)))); } -#line 8568 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 453: -#line 3259 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.id) = (yyvsp[0].id); - } -#line 8576 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 458: -#line 3269 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.id) = new_strsym(p, (yyvsp[0].nd)); - } #line 8584 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 459: -#line 3273 "mrbgems/mruby-compiler/core/parse.y" + case 455: +#line 3267 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.id) = new_strsym(p, (yyvsp[0].nd)); + (yyval.id) = (yyvsp[0].id); } #line 8592 "mrbgems/mruby-compiler/core/y.tab.c" break; case 460: -#line 3279 "mrbgems/mruby-compiler/core/parse.y" +#line 3277 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_symbols(p, list1((yyvsp[0].nd))); + (yyval.id) = new_strsym(p, (yyvsp[0].nd)); } #line 8600 "mrbgems/mruby-compiler/core/y.tab.c" break; case 461: -#line 3283 "mrbgems/mruby-compiler/core/parse.y" +#line 3281 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_symbols(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); + (yyval.id) = new_strsym(p, (yyvsp[0].nd)); } #line 8608 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 464: -#line 3291 "mrbgems/mruby-compiler/core/parse.y" + case 462: +#line 3287 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = negate_lit(p, (yyvsp[0].nd)); + (yyval.nd) = new_symbols(p, list1((yyvsp[0].nd))); } #line 8616 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 465: -#line 3295 "mrbgems/mruby-compiler/core/parse.y" + case 463: +#line 3291 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = negate_lit(p, (yyvsp[0].nd)); + (yyval.nd) = new_symbols(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); } #line 8624 "mrbgems/mruby-compiler/core/y.tab.c" break; case 466: -#line 3301 "mrbgems/mruby-compiler/core/parse.y" +#line 3299 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_lvar(p, (yyvsp[0].id)); + (yyval.nd) = negate_lit(p, (yyvsp[0].nd)); } #line 8632 "mrbgems/mruby-compiler/core/y.tab.c" break; case 467: -#line 3305 "mrbgems/mruby-compiler/core/parse.y" +#line 3303 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_ivar(p, (yyvsp[0].id)); + (yyval.nd) = negate_lit(p, (yyvsp[0].nd)); } #line 8640 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8642,7 +8642,7 @@ yyreduce: case 468: #line 3309 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_gvar(p, (yyvsp[0].id)); + (yyval.nd) = new_lvar(p, (yyvsp[0].id)); } #line 8648 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8650,7 +8650,7 @@ yyreduce: case 469: #line 3313 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_cvar(p, (yyvsp[0].id)); + (yyval.nd) = new_ivar(p, (yyvsp[0].id)); } #line 8656 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8658,39 +8658,39 @@ yyreduce: case 470: #line 3317 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_const(p, (yyvsp[0].id)); + (yyval.nd) = new_gvar(p, (yyvsp[0].id)); } #line 8664 "mrbgems/mruby-compiler/core/y.tab.c" break; case 471: -#line 3323 "mrbgems/mruby-compiler/core/parse.y" +#line 3321 "mrbgems/mruby-compiler/core/parse.y" { - assignable(p, (yyvsp[0].nd)); + (yyval.nd) = new_cvar(p, (yyvsp[0].id)); } #line 8672 "mrbgems/mruby-compiler/core/y.tab.c" break; case 472: -#line 3327 "mrbgems/mruby-compiler/core/parse.y" +#line 3325 "mrbgems/mruby-compiler/core/parse.y" { - yyerror(p, "can't assign to numbered parameter"); + (yyval.nd) = new_const(p, (yyvsp[0].id)); } #line 8680 "mrbgems/mruby-compiler/core/y.tab.c" break; case 473: -#line 3333 "mrbgems/mruby-compiler/core/parse.y" +#line 3331 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = var_reference(p, (yyvsp[0].nd)); + assignable(p, (yyvsp[0].nd)); } #line 8688 "mrbgems/mruby-compiler/core/y.tab.c" break; case 474: -#line 3337 "mrbgems/mruby-compiler/core/parse.y" +#line 3335 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_nil(p); + yyerror(p, "can't assign to numbered parameter"); } #line 8696 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8698,7 +8698,7 @@ yyreduce: case 475: #line 3341 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_self(p); + (yyval.nd) = var_reference(p, (yyvsp[0].nd)); } #line 8704 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8706,7 +8706,7 @@ yyreduce: case 476: #line 3345 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_true(p); + (yyval.nd) = new_nil(p); } #line 8712 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8714,7 +8714,7 @@ yyreduce: case 477: #line 3349 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_false(p); + (yyval.nd) = new_self(p); } #line 8720 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8722,28 +8722,44 @@ yyreduce: case 478: #line 3353 "mrbgems/mruby-compiler/core/parse.y" { + (yyval.nd) = new_true(p); + } +#line 8728 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 479: +#line 3357 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_false(p); + } +#line 8736 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 480: +#line 3361 "mrbgems/mruby-compiler/core/parse.y" + { const char *fn = mrb_sym_name_len(p->mrb, p->filename_sym, NULL); if (!fn) { fn = "(null)"; } (yyval.nd) = new_str(p, fn, strlen(fn)); } -#line 8732 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8748 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 479: -#line 3361 "mrbgems/mruby-compiler/core/parse.y" + case 481: +#line 3369 "mrbgems/mruby-compiler/core/parse.y" { char buf[16]; dump_int(p->lineno, buf); (yyval.nd) = new_int(p, buf, 10, 0); } -#line 8743 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8759 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 480: -#line 3368 "mrbgems/mruby-compiler/core/parse.y" + case 482: +#line 3376 "mrbgems/mruby-compiler/core/parse.y" { #ifdef MRB_UTF8_STRING const char *enc = "UTF-8"; @@ -8752,46 +8768,46 @@ yyreduce: #endif (yyval.nd) = new_str(p, enc, strlen(enc)); } -#line 8756 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8772 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 483: -#line 3383 "mrbgems/mruby-compiler/core/parse.y" + case 485: +#line 3391 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8764 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8780 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 484: -#line 3387 "mrbgems/mruby-compiler/core/parse.y" + case 486: +#line 3395 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_BEG; p->cmd_start = TRUE; } -#line 8773 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8789 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 485: -#line 3392 "mrbgems/mruby-compiler/core/parse.y" + case 487: +#line 3400 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8781 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8797 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 486: -#line 3403 "mrbgems/mruby-compiler/core/parse.y" + case 488: +#line 3411 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); p->lstate = EXPR_BEG; p->cmd_start = TRUE; } -#line 8791 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8807 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 487: -#line 3409 "mrbgems/mruby-compiler/core/parse.y" + case 489: +#line 3417 "mrbgems/mruby-compiler/core/parse.y" { #if 1 /* til real keyword args implemented */ @@ -8809,80 +8825,64 @@ yyreduce: new_args_tail(p, 0, new_kw_rest_args(p, nsym(k)), b)); #endif } -#line 8813 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 488: -#line 3427 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 8821 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 489: -#line 3433 "mrbgems/mruby-compiler/core/parse.y" - { - local_nest(p); - } #line 8829 "mrbgems/mruby-compiler/core/y.tab.c" break; case 490: -#line 3439 "mrbgems/mruby-compiler/core/parse.y" +#line 3435 "mrbgems/mruby-compiler/core/parse.y" { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); - local_unnest(p); + (yyval.nd) = (yyvsp[-1].nd); } -#line 8839 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8837 "mrbgems/mruby-compiler/core/y.tab.c" break; case 491: -#line 3445 "mrbgems/mruby-compiler/core/parse.y" +#line 3441 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); - local_unnest(p); + local_nest(p); } -#line 8848 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8845 "mrbgems/mruby-compiler/core/y.tab.c" break; case 492: -#line 3452 "mrbgems/mruby-compiler/core/parse.y" +#line 3447 "mrbgems/mruby-compiler/core/parse.y" { + void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 8857 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8855 "mrbgems/mruby-compiler/core/y.tab.c" break; case 493: -#line 3457 "mrbgems/mruby-compiler/core/parse.y" +#line 3453 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); local_unnest(p); } -#line 8866 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8864 "mrbgems/mruby-compiler/core/y.tab.c" break; case 494: -#line 3464 "mrbgems/mruby-compiler/core/parse.y" +#line 3460 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = list1((yyvsp[0].nd)); + (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); + local_unnest(p); } -#line 8874 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8873 "mrbgems/mruby-compiler/core/y.tab.c" break; case 495: -#line 3468 "mrbgems/mruby-compiler/core/parse.y" +#line 3465 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); + (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); + local_unnest(p); } #line 8882 "mrbgems/mruby-compiler/core/y.tab.c" break; case 496: -#line 3474 "mrbgems/mruby-compiler/core/parse.y" +#line 3472 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } @@ -8890,41 +8890,41 @@ yyreduce: break; case 497: -#line 3478 "mrbgems/mruby-compiler/core/parse.y" +#line 3476 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } #line 8898 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 500: -#line 3488 "mrbgems/mruby-compiler/core/parse.y" + case 498: +#line 3482 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_kw_rest_args(p, nsym((yyvsp[0].id))); + (yyval.nd) = list1((yyvsp[0].nd)); } #line 8906 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 501: -#line 3492 "mrbgems/mruby-compiler/core/parse.y" + case 499: +#line 3486 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_kw_rest_args(p, 0); + (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } #line 8914 "mrbgems/mruby-compiler/core/y.tab.c" break; case 502: -#line 3498 "mrbgems/mruby-compiler/core/parse.y" +#line 3496 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); + (yyval.nd) = new_kw_rest_args(p, nsym((yyvsp[0].id))); } #line 8922 "mrbgems/mruby-compiler/core/y.tab.c" break; case 503: -#line 3502 "mrbgems/mruby-compiler/core/parse.y" +#line 3500 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); + (yyval.nd) = new_kw_rest_args(p, 0); } #line 8930 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8932,7 +8932,7 @@ yyreduce: case 504: #line 3506 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); + (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); } #line 8938 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8940,39 +8940,39 @@ yyreduce: case 505: #line 3510 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); + (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); } #line 8946 "mrbgems/mruby-compiler/core/y.tab.c" break; case 506: -#line 3516 "mrbgems/mruby-compiler/core/parse.y" +#line 3514 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = (yyvsp[0].nd); + (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); } #line 8954 "mrbgems/mruby-compiler/core/y.tab.c" break; case 507: -#line 3520 "mrbgems/mruby-compiler/core/parse.y" +#line 3518 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args_tail(p, 0, 0, 0); + (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); } #line 8962 "mrbgems/mruby-compiler/core/y.tab.c" break; case 508: -#line 3526 "mrbgems/mruby-compiler/core/parse.y" +#line 3524 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = (yyvsp[0].nd); } #line 8970 "mrbgems/mruby-compiler/core/y.tab.c" break; case 509: -#line 3530 "mrbgems/mruby-compiler/core/parse.y" +#line 3528 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args_tail(p, 0, 0, 0); } #line 8978 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8980,7 +8980,7 @@ yyreduce: case 510: #line 3534 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } #line 8986 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8988,7 +8988,7 @@ yyreduce: case 511: #line 3538 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } #line 8994 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -8996,7 +8996,7 @@ yyreduce: case 512: #line 3542 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } #line 9002 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -9004,7 +9004,7 @@ yyreduce: case 513: #line 3546 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } #line 9010 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -9012,7 +9012,7 @@ yyreduce: case 514: #line 3550 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } #line 9018 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -9020,7 +9020,7 @@ yyreduce: case 515: #line 3554 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } #line 9026 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -9028,7 +9028,7 @@ yyreduce: case 516: #line 3558 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); } #line 9034 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -9036,7 +9036,7 @@ yyreduce: case 517: #line 3562 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } #line 9042 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -9044,7 +9044,7 @@ yyreduce: case 518: #line 3566 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } #line 9050 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -9052,7 +9052,7 @@ yyreduce: case 519: #line 3570 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } #line 9058 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -9060,7 +9060,7 @@ yyreduce: case 520: #line 3574 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } #line 9066 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -9068,7 +9068,7 @@ yyreduce: case 521: #line 3578 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); + (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } #line 9074 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -9076,237 +9076,253 @@ yyreduce: case 522: #line 3582 "mrbgems/mruby-compiler/core/parse.y" { + (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); + } +#line 9082 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 523: +#line 3586 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); + } +#line 9090 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 524: +#line 3590 "mrbgems/mruby-compiler/core/parse.y" + { local_add_f(p, mrb_intern_lit(p->mrb, "&")); (yyval.nd) = new_args(p, 0, 0, 0, 0, 0); } -#line 9083 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9099 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 523: -#line 3589 "mrbgems/mruby-compiler/core/parse.y" + case 525: +#line 3597 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a constant"); (yyval.nd) = 0; } -#line 9092 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9108 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 524: -#line 3594 "mrbgems/mruby-compiler/core/parse.y" + case 526: +#line 3602 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be an instance variable"); (yyval.nd) = 0; } -#line 9101 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9117 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 525: -#line 3599 "mrbgems/mruby-compiler/core/parse.y" + case 527: +#line 3607 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a global variable"); (yyval.nd) = 0; } -#line 9110 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9126 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 526: -#line 3604 "mrbgems/mruby-compiler/core/parse.y" + case 528: +#line 3612 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a class variable"); (yyval.nd) = 0; } -#line 9119 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9135 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 527: -#line 3609 "mrbgems/mruby-compiler/core/parse.y" + case 529: +#line 3617 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a numbered parameter"); (yyval.nd) = 0; } -#line 9128 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9144 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 528: -#line 3616 "mrbgems/mruby-compiler/core/parse.y" + case 530: +#line 3624 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = 0; } -#line 9136 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9152 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 529: -#line 3620 "mrbgems/mruby-compiler/core/parse.y" + case 531: +#line 3628 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); (yyval.id) = (yyvsp[0].id); } -#line 9145 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9161 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 530: -#line 3627 "mrbgems/mruby-compiler/core/parse.y" + case 532: +#line 3635 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_arg(p, (yyvsp[0].id)); } -#line 9153 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9169 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 531: -#line 3631 "mrbgems/mruby-compiler/core/parse.y" + case 533: +#line 3639 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = local_switch(p); } -#line 9161 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9177 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 532: -#line 3635 "mrbgems/mruby-compiler/core/parse.y" + case 534: +#line 3643 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_masgn_param(p, (yyvsp[-1].nd), p->locals->car); local_resume(p, (yyvsp[-2].nd)); local_add_f(p, 0); } -#line 9171 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9187 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 533: -#line 3643 "mrbgems/mruby-compiler/core/parse.y" + case 535: +#line 3651 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9179 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9195 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 534: -#line 3647 "mrbgems/mruby-compiler/core/parse.y" + case 536: +#line 3655 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9187 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9203 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 535: -#line 3653 "mrbgems/mruby-compiler/core/parse.y" + case 537: +#line 3661 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[-1].id)); local_nest(p); (yyval.id) = (yyvsp[-1].id); } -#line 9197 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9213 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 536: -#line 3661 "mrbgems/mruby-compiler/core/parse.y" + case 538: +#line 3669 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9207 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9223 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 537: -#line 3669 "mrbgems/mruby-compiler/core/parse.y" + case 539: +#line 3677 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9217 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9233 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 538: -#line 3677 "mrbgems/mruby-compiler/core/parse.y" + case 540: +#line 3685 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9225 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9241 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 539: -#line 3681 "mrbgems/mruby-compiler/core/parse.y" + case 541: +#line 3689 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9233 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9249 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 540: -#line 3687 "mrbgems/mruby-compiler/core/parse.y" + case 542: +#line 3695 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9241 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9257 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 541: -#line 3691 "mrbgems/mruby-compiler/core/parse.y" + case 543: +#line 3699 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9249 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9265 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 544: -#line 3701 "mrbgems/mruby-compiler/core/parse.y" + case 546: +#line 3709 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); (yyval.id) = (yyvsp[0].id); } -#line 9258 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9274 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 545: -#line 3706 "mrbgems/mruby-compiler/core/parse.y" + case 547: +#line 3714 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, mrb_intern_lit(p->mrb, "*")); (yyval.id) = -1; } -#line 9267 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9283 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 548: -#line 3717 "mrbgems/mruby-compiler/core/parse.y" + case 550: +#line 3725 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 9275 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9291 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 549: -#line 3723 "mrbgems/mruby-compiler/core/parse.y" + case 551: +#line 3731 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 9283 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9299 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 550: -#line 3727 "mrbgems/mruby-compiler/core/parse.y" + case 552: +#line 3735 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = 0; } -#line 9291 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9307 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 551: -#line 3733 "mrbgems/mruby-compiler/core/parse.y" + case 553: +#line 3741 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); if (!(yyval.nd)) (yyval.nd) = new_nil(p); } -#line 9300 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9316 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 552: -#line 3737 "mrbgems/mruby-compiler/core/parse.y" + case 554: +#line 3745 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_BEG;} -#line 9306 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9322 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 553: -#line 3738 "mrbgems/mruby-compiler/core/parse.y" + case 555: +#line 3746 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[-1].nd) == 0) { yyerror(p, "can't define singleton method for ()."); @@ -9329,55 +9345,55 @@ yyreduce: } (yyval.nd) = (yyvsp[-1].nd); } -#line 9333 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9349 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 555: -#line 3764 "mrbgems/mruby-compiler/core/parse.y" + case 557: +#line 3772 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 9341 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9357 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 556: -#line 3770 "mrbgems/mruby-compiler/core/parse.y" + case 558: +#line 3778 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 9350 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9366 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 557: -#line 3775 "mrbgems/mruby-compiler/core/parse.y" + case 559: +#line 3783 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9358 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9374 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 560: -#line 3785 "mrbgems/mruby-compiler/core/parse.y" + case 562: +#line 3793 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[-2].nd)); void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9368 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9384 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 561: -#line 3791 "mrbgems/mruby-compiler/core/parse.y" + case 563: +#line 3799 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_sym(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 9377 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9393 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 562: -#line 3796 "mrbgems/mruby-compiler/core/parse.y" + case 564: +#line 3804 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); if ((yyvsp[-2].nd)->car == (node*)NODE_DSTR) { @@ -9387,67 +9403,67 @@ yyreduce: (yyval.nd) = cons(new_sym(p, new_strsym(p, (yyvsp[-2].nd))), (yyvsp[0].nd)); } } -#line 9391 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9407 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 563: -#line 3806 "mrbgems/mruby-compiler/core/parse.y" + case 565: +#line 3814 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_kw_rest_args(p, 0), (yyvsp[0].nd)); } -#line 9400 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9416 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 576: -#line 3833 "mrbgems/mruby-compiler/core/parse.y" + case 578: +#line 3841 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = '.'; } -#line 9408 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9424 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 577: -#line 3837 "mrbgems/mruby-compiler/core/parse.y" + case 579: +#line 3845 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = 0; } -#line 9416 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9432 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 579: -#line 3844 "mrbgems/mruby-compiler/core/parse.y" + case 581: +#line 3852 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = tCOLON2; } -#line 9424 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9440 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 588: -#line 3865 "mrbgems/mruby-compiler/core/parse.y" + case 590: +#line 3873 "mrbgems/mruby-compiler/core/parse.y" {yyerrok;} -#line 9430 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9446 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 591: -#line 3871 "mrbgems/mruby-compiler/core/parse.y" + case 593: +#line 3879 "mrbgems/mruby-compiler/core/parse.y" { p->lineno += (yyvsp[0].num); p->column = 0; } -#line 9439 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9455 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 594: -#line 3882 "mrbgems/mruby-compiler/core/parse.y" + case 596: +#line 3890 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 9447 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9463 "mrbgems/mruby-compiler/core/y.tab.c" break; -#line 9451 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9467 "mrbgems/mruby-compiler/core/y.tab.c" default: break; } @@ -9679,7 +9695,7 @@ yyreturn: #endif return yyresult; } -#line 3886 "mrbgems/mruby-compiler/core/parse.y" +#line 3894 "mrbgems/mruby-compiler/core/parse.y" #define pylval (*((YYSTYPE*)(p->ylval))) diff --git a/mrbgems/mruby-range-ext/mrblib/range.rb b/mrbgems/mruby-range-ext/mrblib/range.rb index a213beb57..8b0969003 100644 --- a/mrbgems/mruby-range-ext/mrblib/range.rb +++ b/mrbgems/mruby-range-ext/mrblib/range.rb @@ -27,10 +27,12 @@ class Range end def max(&block) - val = self.first - last = self.last + val = self.begin + last = self.end return super if block + raise RangeError, "cannot get the maximum of endless range" if last.nil? + # fast path for numerics if val.kind_of?(Numeric) && last.kind_of?(Numeric) raise TypeError if exclude_end? && !last.kind_of?(Fixnum) @@ -47,9 +49,13 @@ class Range end def min(&block) - val = self.first - last = self.last - return super if block + val = self.begin + last = self.end + if block + raise RangeError, "cannot get the minimum of endless range with custom comparison method" if last.nil? + return super + end + return val if last.nil? # fast path for numerics if val.kind_of?(Numeric) && last.kind_of?(Numeric) diff --git a/mrbgems/mruby-range-ext/src/range.c b/mrbgems/mruby-range-ext/src/range.c index 2a0b4e97d..c263b484b 100644 --- a/mrbgems/mruby-range-ext/src/range.c +++ b/mrbgems/mruby-range-ext/src/range.c @@ -42,6 +42,9 @@ range_cover(mrb_state *mrb, mrb_value range) end = RANGE_END(r); if (r_le(mrb, beg, val)) { + if (mrb_nil_p(end)) { + return mrb_true_value(); + } if (RANGE_EXCL(r)) { if (r_lt(mrb, val, end)) return mrb_true_value(); @@ -76,6 +79,11 @@ range_last(mrb_state *mrb, mrb_value range) { mrb_value num; mrb_value array; + struct RRange *r = mrb_range_ptr(mrb, range); + + if (mrb_nil_p(RANGE_END(r))) { + mrb_raise(mrb, E_RANGE_ERROR, "cannot get the last element of endless range"); + } if (mrb_get_args(mrb, "|o", &num) == 0) { return mrb_range_end(mrb, range); @@ -108,6 +116,10 @@ range_size(mrb_state *mrb, mrb_value range) beg = RANGE_BEG(r); end = RANGE_END(r); + if ((mrb_fixnum_p(beg) || mrb_float_p(beg)) && mrb_nil_p(end)) { + return mrb_float_value(mrb, INFINITY); + } + excl = RANGE_EXCL(r); if (mrb_fixnum_p(beg)) { beg_f = (mrb_float)mrb_fixnum(beg); @@ -159,6 +171,10 @@ range_size(mrb_state *mrb, mrb_value range) beg = RANGE_BEG(r); end = RANGE_END(r); + if (mrb_fixnum_p(beg) && mrb_nil_p(end)) { + return mrb_nil_value(); + } + excl = RANGE_EXCL(r) ? 0 : 1; if (mrb_fixnum_p(beg) && mrb_fixnum_p(end)) { diff --git a/mrbgems/mruby-range-ext/test/range.rb b/mrbgems/mruby-range-ext/test/range.rb index 865e46d02..169ba7169 100644 --- a/mrbgems/mruby-range-ext/test/range.rb +++ b/mrbgems/mruby-range-ext/test/range.rb @@ -5,11 +5,16 @@ assert('Range#cover?') do assert_true ("a".."z").cover?("c") assert_true !("a".."z").cover?("5") assert_true ("a".."z").cover?("cc") + assert_true ("a"..).cover?("c") + assert_false ("a"..).cover?("5") + assert_true ("a"..).cover?("cc") end assert('Range#first') do assert_equal 10, (10..20).first assert_equal [10, 11, 12], (10..20).first(3) + assert_equal 10, (10..).first + assert_equal [10, 11, 12], (10..).first(3) skip unless Object.const_defined?(:Float) assert_equal [0, 1, 2], (0..Float::INFINITY).first(3) @@ -18,6 +23,8 @@ end assert('Range#last') do assert_equal 20, (10..20).last assert_equal 20, (10...20).last + assert_raise(RangeError) { (10..).last } + assert_raise(RangeError) { (10...).last } assert_equal [18, 19, 20], (10..20).last(3) assert_equal [17, 18, 19], (10...20).last(3) end @@ -26,6 +33,9 @@ assert('Range#size') do assert_equal 42, (1..42).size assert_equal 41, (1...42).size assert_nil ('a'..'z').size + assert_nil ('a'..).size + + assert_nil (1..).size unless Object.const_defined?(:Float) skip unless Object.const_defined?(:Float) assert_equal 6, (1...6.3).size @@ -33,6 +43,10 @@ assert('Range#size') do assert_equal 5, (1.1...6).size assert_equal 15, (1.0..15.9).size assert_equal Float::INFINITY, (0..Float::INFINITY).size + + assert_equal Float::INFINITY, (1..).size + assert_equal Float::INFINITY, (1...).size + assert_equal Float::INFINITY, (1.0..).size end assert('Range#max') do @@ -50,6 +64,10 @@ assert('Range#max') do # returns the endpoint when the endpoint equals the start point and the range is inclusive assert_equal 5, (5..5).max + # raises RangeError when called on an endless range + assert_raise(RangeError) { (10..).max } + assert_raise(RangeError) { (10...).max } + skip unless Object.const_defined?(:Float) # returns the maximum value in the Float range when called with no arguments @@ -94,26 +112,31 @@ assert('Range#min') do # returns the minimum value in the range when called with no arguments assert_equal 1, (1..10).min assert_equal 1, (1...10).min + assert_equal 1, (1..).min # returns nil when the start point is greater than the endpoint assert_equal nil, (100..10).min # returns nil when the endpoint equals the start point and the range is exclusive - assert_equal nil, (5...5).max + assert_equal nil, (5...5).min # returns the endpoint when the endpoint equals the start point and the range is inclusive - assert_equal 5, (5..5).max + assert_equal 5, (5..5).min skip unless Object.const_defined?(:Float) # returns the minimum value in the Float range when called with no arguments assert_equal 303.20, (303.20..908.1111).min + assert_equal 1, (1.0..).min # returns nil when the start point is greater than the endpoint in a Float range - assert_equal nil, (3003.20..908.1111).max + assert_equal nil, (3003.20..908.1111).min end assert('Range#min given a block') do + # raise when called with a block in endless range + assert_raise(RangeError) { (1..).min{} } + # passes each pair of values in the range to the block acc = [] (1..10).min do |a, b| diff --git a/mrbgems/mruby-string-ext/mrblib/string.rb b/mrbgems/mruby-string-ext/mrblib/string.rb index e57d75355..32914d074 100644 --- a/mrbgems/mruby-string-ext/mrblib/string.rb +++ b/mrbgems/mruby-string-ext/mrblib/string.rb @@ -444,4 +444,27 @@ class String end self end + + def __upto_endless(&block) + return to_enum(:__upto_endless) unless block + + len = self.length + # both edges are all digits + bi = self.to_i(10) + if bi > 0 or bi == "0"*len + while true + s = bi.to_s + s = s.rjust(len, "0") if s.length < len + yield s + bi += 1 + end + return self + end + bs = self + while true + yield bs + bs = bs.succ + end + self + end end diff --git a/mrblib/range.rb b/mrblib/range.rb index 392cc2274..704826459 100644 --- a/mrblib/range.rb +++ b/mrblib/range.rb @@ -12,8 +12,25 @@ class Range def each(&block) return to_enum :each unless block - val = self.first - last = self.last + val = self.begin + last = self.end + + if val.kind_of?(Fixnum) && last.nil? + i = val + while true + block.call(i) + i += 1 + end + return self + end + + if val.kind_of?(String) && last.nil? + if val.respond_to? :__upto_endless + return val.__upto_endless(&block) + else + str_each = true + end + end if val.kind_of?(Fixnum) && last.kind_of?(Fixnum) # fixnums are special lim = last @@ -56,6 +73,11 @@ class Range h += 1 if self.exclude_end? h end + + def to_a + raise RangeError, "cannot convert endless range to an array" if self.last.nil? + super + end end ## diff --git a/src/range.c b/src/range.c index 0b4e6dbca..3f3382c4a 100644 --- a/src/range.c +++ b/src/range.c @@ -32,6 +32,8 @@ r_check(mrb_state *mrb, mrb_value a, mrb_value b) return; } + if (mrb_nil_p(b)) return; + n = mrb_cmp(mrb, a, b); if (n == -2) { /* can not be compared */ mrb_raise(mrb, E_ARGUMENT_ERROR, "bad value for range"); @@ -212,15 +214,19 @@ range_include(mrb_state *mrb, mrb_value range) mrb_value val = mrb_get_arg1(mrb); struct RRange *r = mrb_range_ptr(mrb, range); mrb_value beg, end; - mrb_bool include_p; beg = RANGE_BEG(r); end = RANGE_END(r); - include_p = r_le(mrb, beg, val) && /* beg <= val */ - (RANGE_EXCL(r) ? r_gt(mrb, end, val) /* end > val */ - : r_ge(mrb, end, val)); /* end >= val */ - - return mrb_bool_value(include_p); + if (r_le(mrb, beg, val)) { /* beg <= val */ + if (mrb_nil_p(end)) { + return mrb_true_value(); + } + if (RANGE_EXCL(r) ? r_gt(mrb, end, val) /* end > val */ + : r_ge(mrb, end, val)) { /* end >= val */ + return mrb_true_value(); + } + } + return mrb_false_value(); } /* 15.2.14.4.12(x) */ @@ -261,10 +267,10 @@ range_inspect(mrb_state *mrb, mrb_value range) struct RRange *r = mrb_range_ptr(mrb, range); str = mrb_inspect(mrb, RANGE_BEG(r)); - str2 = mrb_inspect(mrb, RANGE_END(r)); + if (!mrb_nil_p(RANGE_END(r))) str2 = mrb_inspect(mrb, RANGE_END(r)); str = mrb_str_dup(mrb, str); mrb_str_cat(mrb, str, "...", RANGE_EXCL(r) ? 3 : 2); - mrb_str_cat_str(mrb, str, str2); + if (!mrb_nil_p(RANGE_END(r))) mrb_str_cat_str(mrb, str, str2); return str; } @@ -381,13 +387,15 @@ MRB_API enum mrb_range_beg_len mrb_range_beg_len(mrb_state *mrb, mrb_value range, mrb_int *begp, mrb_int *lenp, mrb_int len, mrb_bool trunc) { mrb_int beg, end; + mrb_bool excl; struct RRange *r; if (!mrb_range_p(range)) return MRB_RANGE_TYPE_MISMATCH; r = mrb_range_ptr(mrb, range); beg = mrb_int(mrb, RANGE_BEG(r)); - end = mrb_int(mrb, RANGE_END(r)); + end = mrb_nil_p(RANGE_END(r)) ? -1 : mrb_int(mrb, RANGE_END(r)); + excl = mrb_nil_p(RANGE_END(r)) ? 0 : RANGE_EXCL(r); if (beg < 0) { beg += len; @@ -400,7 +408,7 @@ mrb_range_beg_len(mrb_state *mrb, mrb_value range, mrb_int *begp, mrb_int *lenp, } if (end < 0) end += len; - if (!RANGE_EXCL(r) && (!trunc || end < len)) end++; /* include end point */ + if (!excl && (!trunc || end < len)) end++; /* include end point */ len = end - beg; if (len < 0) len = 0; diff --git a/test/t/array.rb b/test/t/array.rb index eec31d751..8cc59720a 100644 --- a/test/t/array.rb +++ b/test/t/array.rb @@ -57,6 +57,7 @@ assert('Array#[]', '15.2.12.5.4') do a = [ "a", "b", "c", "d", "e" ] assert_equal(["b", "c"], a[1,2]) assert_equal(["b", "c", "d"], a[1..-2]) + assert_equal(["b", "c", "d", "e"], a[1..]) skip unless Object.const_defined?(:Float) assert_equal("b", a[1.1]) end @@ -92,6 +93,10 @@ assert('Array#[]=', '15.2.12.5.5') do a[2...4] = 6 assert_equal([1,2,6,5], a) + a = [1,2,3,4,5] + a[2...] = 6 + assert_equal([1,2,6], a) + # passing self (#3274) a = [1,2,3] a[1,0] = a diff --git a/test/t/range.rb b/test/t/range.rb index 106c2866e..13843ff08 100644 --- a/test/t/range.rb +++ b/test/t/range.rb @@ -8,19 +8,30 @@ end assert('Range#==', '15.2.14.4.1') do assert_true (1..10) == (1..10) assert_false (1..10) == (1..100) + assert_false (1..10) == (1..) + + assert_true (1..) == (1..nil) + assert_true (1..) == (1..) + assert_false (1..) == (1...) + skip unless Object.const_defined?(:Float) assert_true (1..10) == Range.new(1.0, 10.0) + end assert('Range#===', '15.2.14.4.2') do a = (1..10) + b = (1..) assert_true a === 5 assert_false a === 20 + assert_true b === 20 + assert_false b === 0 end assert('Range#begin', '15.2.14.4.3') do assert_equal 1, (1..10).begin + assert_equal 1, (1..).begin end assert('Range#each', '15.2.14.4.4') do @@ -28,27 +39,38 @@ assert('Range#each', '15.2.14.4.4') do b = 0 a.each {|i| b += i} assert_equal 6, b + c = [] + (1..).each { |i| c << i; break if c.size == 10 } + assert_equal [1, 2, 3, 4, 5, 6, 7, 8 ,9, 10], c end assert('Range#end', '15.2.14.4.5') do assert_equal 10, (1..10).end + assert_nil (1..).end end assert('Range#exclude_end?', '15.2.14.4.6') do assert_true (1...10).exclude_end? assert_false (1..10).exclude_end? + assert_true (1...).exclude_end? + assert_false (1..).exclude_end? end assert('Range#first', '15.2.14.4.7') do assert_equal 1, (1..10).first + assert_equal 1, (1..).first end assert('Range#include?', '15.2.14.4.8') do assert_true (1..10).include?(10) assert_false (1..10).include?(11) + assert_true (1..).include?(10) + assert_false (1..).include?(0) assert_true (1...10).include?(9) assert_false (1...10).include?(10) + assert_true (1...).include?(10) + assert_false (1...).include?(0) end assert('Range#initialize', '15.2.14.4.9') do @@ -61,17 +83,29 @@ assert('Range#initialize', '15.2.14.4.9') do assert_false b.exclude_end? assert_raise(NameError) { (0..1).__send__(:initialize, 1, 3) } + + c = Range.new(1, nil, true) + d = Range.new(1, nil, false) + + assert_equal (1...nil), c + assert_true c.exclude_end? + assert_equal (1..nil), d + assert_false d.exclude_end? end assert('Range#last', '15.2.14.4.10') do assert_equal 10, (1..10).last + assert_nil (1..).last end assert('Range#member?', '15.2.14.4.11') do a = (1..10) + b = (1..) assert_true a.member?(5) assert_false a.member?(20) + assert_true b.member?(20) + assert_false b.member?(0) end assert('Range#to_s', '15.2.14.4.12') do @@ -79,6 +113,10 @@ assert('Range#to_s', '15.2.14.4.12') do assert_equal "0...1", (0...1).to_s assert_equal "a..b", ("a".."b").to_s assert_equal "a...b", ("a"..."b").to_s + assert_equal "0..", (0..).to_s + assert_equal "0...", (0...).to_s + assert_equal "a..", ("a"..).to_s + assert_equal "a...", ("a"...).to_s end assert('Range#inspect', '15.2.14.4.13') do @@ -86,19 +124,36 @@ assert('Range#inspect', '15.2.14.4.13') do assert_equal "0...1", (0...1).inspect assert_equal "\"a\"..\"b\"", ("a".."b").inspect assert_equal "\"a\"...\"b\"", ("a"..."b").inspect + assert_equal "0..", (0..).inspect + assert_equal "0...", (0...).inspect + assert_equal "\"a\"..", ("a"..).inspect + assert_equal "\"a\"...", ("a"...).inspect end assert('Range#eql?', '15.2.14.4.14') do assert_true (1..10).eql? (1..10) assert_false (1..10).eql? (1..100) - assert_false (1..10).eql? (Range.new(1.0, 10.0)) assert_false (1..10).eql? "1..10" + assert_true (1..).eql? (1..) + assert_false (1..).eql? (2..) + assert_false (1..).eql? "1.." + skip unless Object.const_defined?(:Float) + assert_false (1..10).eql? (Range.new(1.0, 10.0)) + assert_false (1..).eql? (Range.new(1.0, nil)) end assert('Range#initialize_copy', '15.2.14.4.15') do assert_raise(NameError) { (0..1).__send__(:initialize_copy, 1..3) } end +assert('Range#hash', '15.3.1.3.15') do + assert_kind_of(Integer, (1..10).hash) + assert_equal (1..10).hash, (1..10).hash + assert_not_equal (1..10).hash, (1...10).hash + assert_equal (1..).hash, (1..).hash + assert_not_equal (1..).hash, (1...).hash +end + assert('Range#dup') do r = (1..3).dup assert_equal 1, r.begin @@ -109,4 +164,15 @@ assert('Range#dup') do assert_equal "a", r.begin assert_equal "z", r.end assert_true r.exclude_end? + + r = (1..).dup + assert_equal 1, r.begin + assert_nil r.end + assert_false r.exclude_end? +end + +assert('Range#to_a') do + assert_equal([1, 2, 3, 4, 5], (1..5).to_a) + assert_equal([1, 2, 3, 4], (1...5).to_a) + assert_raise(RangeError) { (1..).to_a } end diff --git a/test/t/string.rb b/test/t/string.rb index 2bb988810..c1511de63 100644 --- a/test/t/string.rb +++ b/test/t/string.rb @@ -90,6 +90,7 @@ assert('String#[] with Range') do h1 = 'abc'[3..4] i1 = 'abc'[4..5] j1 = 'abcdefghijklmnopqrstuvwxyz'[1..3] + k1 = 'abcdefghijklmnopqrstuvwxyz'[-3..] a2 = 'abc'[1...0] b2 = 'abc'[1...1] c2 = 'abc'[1...2] @@ -100,6 +101,7 @@ assert('String#[] with Range') do h2 = 'abc'[3...4] i2 = 'abc'[4...5] j2 = 'abcdefghijklmnopqrstuvwxyz'[1...3] + k2 = 'abcdefghijklmnopqrstuvwxyz'[-3...] assert_equal '', a1 assert_equal 'b', b1 @@ -111,6 +113,7 @@ assert('String#[] with Range') do assert_equal '', h1 assert_nil i2 assert_equal 'bcd', j1 + assert_equal 'xyz', k1 assert_equal '', a2 assert_equal '', b2 assert_equal 'b', c2 @@ -121,6 +124,7 @@ assert('String#[] with Range') do assert_equal '', h2 assert_nil i2 assert_equal 'bc', j2 + assert_equal 'xyz', k2 end assert('String#[]=') do |
