summaryrefslogtreecommitdiff
path: root/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c593
1 files changed, 295 insertions, 298 deletions
diff --git a/parse.c b/parse.c
index 4623005327..c93f781faa 100644
--- a/parse.c
+++ b/parse.c
@@ -418,43 +418,43 @@ static const short yyrhs[] = { -1,
#if YYDEBUG != 0
static const short yyrline[] = { 0,
- 238, 247, 265, 271, 272, 276, 280, 285, 286, 287,
- 292, 298, 307, 312, 318, 324, 330, 340, 350, 357,
- 364, 372, 377, 379, 385, 392, 397, 398, 402, 406,
- 411, 416, 418, 423, 429, 435, 443, 444, 449, 450,
- 455, 459, 463, 467, 471, 476, 477, 482, 487, 491,
- 496, 500, 504, 508, 514, 518, 522, 526, 532, 536,
- 538, 539, 540, 541, 546, 552, 556, 557, 561, 562,
- 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
- 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 589, 589, 589, 589, 590,
- 590, 590, 590, 590, 590, 590, 591, 591, 591, 591,
- 591, 591, 591, 592, 592, 592, 592, 592, 592, 592,
- 593, 593, 593, 593, 593, 593, 593, 594, 594, 594,
- 594, 594, 594, 595, 595, 597, 602, 603, 618, 633,
- 644, 655, 660, 664, 668, 672, 676, 680, 684, 688,
- 692, 696, 700, 704, 708, 712, 716, 720, 724, 728,
- 732, 736, 740, 744, 748, 752, 757, 761, 765, 769,
- 773, 777, 778, 782, 788, 793, 801, 802, 804, 809,
- 813, 817, 822, 826, 831, 836, 841, 845, 850, 855,
- 857, 863, 867, 869, 870, 872, 877, 883, 895, 900,
- 906, 920, 921, 923, 927, 932, 936, 940, 941, 945,
- 946, 947, 948, 949, 954, 962, 966, 973, 979, 985,
- 990, 994, 998, 998, 1003, 1007, 1012, 1013, 1022, 1031,
- 1040, 1048, 1056, 1064, 1072, 1092, 1096, 1106, 1114, 1121,
- 1129, 1138, 1146, 1154, 1163, 1164, 1171, 1179, 1183, 1187,
- 1191, 1196, 1197, 1198, 1200, 1201, 1203, 1204, 1213, 1214,
- 1219, 1220, 1222, 1223, 1227, 1231, 1236, 1241, 1249, 1254,
- 1261, 1265, 1269, 1273, 1274, 1276, 1286, 1291, 1297, 1303,
- 1309, 1314, 1321, 1330, 1331, 1333, 1340, 1341, 1346, 1352,
- 1353, 1355, 1362, 1364, 1365, 1370, 1371, 1375, 1377, 1378,
- 1379, 1381, 1382, 1384, 1385, 1386, 1387, 1388, 1389, 1390,
- 1391, 1392, 1393, 1395, 1400, 1401, 1403, 1407, 1411, 1415,
- 1417, 1422, 1427, 1431, 1435, 1439, 1443, 1447, 1451, 1455,
- 1459, 1464, 1471, 1479, 1486, 1491, 1496, 1503, 1508, 1512,
- 1514, 1527, 1545, 1546, 1550, 1558, 1559, 1564, 1569, 1570,
- 1571, 1573, 1574, 1576, 1577, 1579, 1580, 1582, 1583, 1585,
- 1586, 1587, 1589, 1590, 1592, 1593, 1595
+ 238, 247, 266, 272, 273, 277, 281, 286, 287, 288,
+ 293, 299, 308, 313, 319, 325, 331, 341, 351, 358,
+ 365, 373, 378, 380, 386, 393, 398, 399, 403, 407,
+ 412, 417, 419, 424, 430, 436, 444, 445, 450, 451,
+ 456, 460, 464, 468, 472, 477, 478, 483, 488, 492,
+ 497, 501, 505, 509, 515, 519, 523, 527, 533, 537,
+ 539, 540, 541, 542, 547, 553, 557, 558, 562, 563,
+ 564, 565, 566, 567, 568, 569, 570, 571, 572, 573,
+ 574, 575, 576, 577, 578, 579, 580, 581, 582, 583,
+ 584, 585, 586, 587, 588, 590, 590, 590, 590, 591,
+ 591, 591, 591, 591, 591, 591, 592, 592, 592, 592,
+ 592, 592, 592, 593, 593, 593, 593, 593, 593, 593,
+ 594, 594, 594, 594, 594, 594, 594, 595, 595, 595,
+ 595, 595, 595, 596, 596, 598, 603, 604, 619, 634,
+ 645, 656, 661, 665, 669, 673, 677, 681, 685, 689,
+ 693, 697, 701, 705, 709, 713, 717, 721, 725, 729,
+ 733, 737, 741, 745, 749, 753, 758, 762, 766, 770,
+ 774, 778, 779, 783, 789, 794, 802, 803, 805, 810,
+ 814, 818, 823, 827, 832, 837, 842, 846, 851, 856,
+ 858, 864, 868, 870, 871, 873, 878, 884, 896, 901,
+ 907, 921, 922, 924, 928, 933, 937, 941, 942, 946,
+ 947, 948, 949, 950, 955, 963, 967, 974, 980, 986,
+ 991, 995, 999, 999, 1004, 1008, 1013, 1014, 1023, 1032,
+ 1041, 1049, 1057, 1065, 1073, 1093, 1097, 1107, 1115, 1122,
+ 1130, 1139, 1147, 1155, 1164, 1165, 1172, 1180, 1184, 1188,
+ 1192, 1197, 1198, 1199, 1201, 1202, 1204, 1205, 1214, 1215,
+ 1220, 1221, 1223, 1224, 1228, 1232, 1237, 1242, 1250, 1255,
+ 1262, 1266, 1270, 1274, 1275, 1277, 1287, 1292, 1298, 1304,
+ 1310, 1315, 1322, 1331, 1332, 1334, 1341, 1342, 1347, 1353,
+ 1354, 1356, 1363, 1365, 1366, 1371, 1372, 1376, 1378, 1379,
+ 1380, 1382, 1383, 1385, 1386, 1387, 1388, 1389, 1390, 1391,
+ 1392, 1393, 1394, 1396, 1401, 1402, 1404, 1408, 1412, 1416,
+ 1418, 1423, 1428, 1432, 1436, 1440, 1444, 1448, 1452, 1456,
+ 1460, 1465, 1472, 1480, 1487, 1492, 1497, 1504, 1509, 1513,
+ 1515, 1528, 1546, 1547, 1551, 1559, 1560, 1565, 1570, 1571,
+ 1572, 1574, 1575, 1577, 1578, 1580, 1581, 1583, 1584, 1586,
+ 1587, 1588, 1590, 1591, 1593, 1594, 1596
};
#endif
@@ -2632,7 +2632,8 @@ case 1:
case 2:
#line 247 "parse.y"
{
- if (yyvsp[0].node) { /* last expression is void */
+ if (yyvsp[0].node && !compile_for_eval) {
+ /* last expression should not be void */
if (nd_type(yyvsp[0].node) != NODE_BLOCK) void_expr(yyvsp[0].node);
else {
NODE *node = yyvsp[0].node;
@@ -2650,36 +2651,36 @@ case 2:
;
break;}
case 3:
-#line 266 "parse.y"
+#line 267 "parse.y"
{
void_stmts(yyvsp[-1].node);
yyval.node = yyvsp[-1].node;
;
break;}
case 5:
-#line 273 "parse.y"
+#line 274 "parse.y"
{
yyval.node = newline_node(yyvsp[0].node);
;
break;}
case 6:
-#line 277 "parse.y"
+#line 278 "parse.y"
{
yyval.node = block_append(yyvsp[-2].node, newline_node(yyvsp[0].node));
;
break;}
case 7:
-#line 281 "parse.y"
+#line 282 "parse.y"
{
yyval.node = yyvsp[0].node;
;
break;}
case 9:
-#line 286 "parse.y"
+#line 287 "parse.y"
{lex_state = EXPR_FNAME;;
break;}
case 10:
-#line 287 "parse.y"
+#line 288 "parse.y"
{
if (cur_mid || in_single)
yyerror("alias within method");
@@ -2687,7 +2688,7 @@ case 10:
;
break;}
case 11:
-#line 293 "parse.y"
+#line 294 "parse.y"
{
if (cur_mid || in_single)
yyerror("alias within method");
@@ -2695,7 +2696,7 @@ case 11:
;
break;}
case 12:
-#line 299 "parse.y"
+#line 300 "parse.y"
{
char buf[3];
@@ -2706,14 +2707,14 @@ case 12:
;
break;}
case 13:
-#line 308 "parse.y"
+#line 309 "parse.y"
{
yyerror("can't make alias for the number variables");
yyval.node = 0;
;
break;}
case 14:
-#line 313 "parse.y"
+#line 314 "parse.y"
{
if (cur_mid || in_single)
yyerror("undef within method");
@@ -2721,7 +2722,7 @@ case 14:
;
break;}
case 15:
-#line 319 "parse.y"
+#line 320 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = NEW_IF(cond(yyvsp[0].node), yyvsp[-2].node, 0);
@@ -2729,7 +2730,7 @@ case 15:
;
break;}
case 16:
-#line 325 "parse.y"
+#line 326 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = NEW_UNLESS(cond(yyvsp[0].node), yyvsp[-2].node, 0);
@@ -2737,7 +2738,7 @@ case 16:
;
break;}
case 17:
-#line 331 "parse.y"
+#line 332 "parse.y"
{
value_expr(yyvsp[0].node);
if (nd_type(yyvsp[-2].node) == NODE_BEGIN) {
@@ -2749,7 +2750,7 @@ case 17:
;
break;}
case 18:
-#line 341 "parse.y"
+#line 342 "parse.y"
{
value_expr(yyvsp[0].node);
if (nd_type(yyvsp[-2].node) == NODE_BEGIN) {
@@ -2761,7 +2762,7 @@ case 18:
;
break;}
case 19:
-#line 351 "parse.y"
+#line 352 "parse.y"
{
if (cur_mid || in_single) {
yyerror("BEGIN in method");
@@ -2770,7 +2771,7 @@ case 19:
;
break;}
case 20:
-#line 358 "parse.y"
+#line 359 "parse.y"
{
ruby_eval_tree_begin = block_append(ruby_eval_tree_begin,
NEW_PREEXE(yyvsp[-1].node));
@@ -2779,7 +2780,7 @@ case 20:
;
break;}
case 21:
-#line 365 "parse.y"
+#line 366 "parse.y"
{
if (compile_for_eval && (cur_mid || in_single)) {
yyerror("END in method; use at_exit");
@@ -2789,14 +2790,14 @@ case 21:
;
break;}
case 22:
-#line 373 "parse.y"
+#line 374 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = node_assign(yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 24:
-#line 380 "parse.y"
+#line 381 "parse.y"
{
value_expr(yyvsp[0].node);
yyvsp[-2].node->nd_value = yyvsp[0].node;
@@ -2804,7 +2805,7 @@ case 24:
;
break;}
case 25:
-#line 386 "parse.y"
+#line 387 "parse.y"
{
value_expr(yyvsp[0].node);
if (!compile_for_eval && !cur_mid && !in_single)
@@ -2813,47 +2814,47 @@ case 25:
;
break;}
case 26:
-#line 393 "parse.y"
+#line 394 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = NEW_YIELD(yyvsp[0].node);
;
break;}
case 28:
-#line 399 "parse.y"
+#line 400 "parse.y"
{
yyval.node = logop(NODE_AND, yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 29:
-#line 403 "parse.y"
+#line 404 "parse.y"
{
yyval.node = logop(NODE_OR, yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 30:
-#line 407 "parse.y"
+#line 408 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = NEW_NOT(cond(yyvsp[0].node));
;
break;}
case 31:
-#line 412 "parse.y"
+#line 413 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = NEW_NOT(cond(yyvsp[0].node));
;
break;}
case 33:
-#line 419 "parse.y"
+#line 420 "parse.y"
{
yyval.node = new_fcall(yyvsp[-1].id, yyvsp[0].node);
fixpos(yyval.node, yyvsp[0].node);
;
break;}
case 34:
-#line 424 "parse.y"
+#line 425 "parse.y"
{
value_expr(yyvsp[-3].node);
yyval.node = new_call(yyvsp[-3].node, yyvsp[-1].id, yyvsp[0].node);
@@ -2861,7 +2862,7 @@ case 34:
;
break;}
case 35:
-#line 430 "parse.y"
+#line 431 "parse.y"
{
value_expr(yyvsp[-3].node);
yyval.node = new_call(yyvsp[-3].node, yyvsp[-1].id, yyvsp[0].node);
@@ -2869,7 +2870,7 @@ case 35:
;
break;}
case 36:
-#line 436 "parse.y"
+#line 437 "parse.y"
{
if (!compile_for_eval && !cur_mid && !in_single)
yyerror("super called outside of method");
@@ -2878,278 +2879,278 @@ case 36:
;
break;}
case 38:
-#line 445 "parse.y"
+#line 446 "parse.y"
{
yyval.node = yyvsp[-1].node;
;
break;}
case 40:
-#line 451 "parse.y"
+#line 452 "parse.y"
{
yyval.node = NEW_MASGN(NEW_LIST(yyvsp[-1].node), 0);
;
break;}
case 41:
-#line 456 "parse.y"
+#line 457 "parse.y"
{
yyval.node = NEW_MASGN(NEW_LIST(yyvsp[0].node), 0);
;
break;}
case 42:
-#line 460 "parse.y"
+#line 461 "parse.y"
{
yyval.node = NEW_MASGN(NEW_LIST(yyvsp[-2].node), yyvsp[0].node);
;
break;}
case 43:
-#line 464 "parse.y"
+#line 465 "parse.y"
{
yyval.node = NEW_MASGN(list_concat(NEW_LIST(yyvsp[-1].node),yyvsp[0].node), 0);
;
break;}
case 44:
-#line 468 "parse.y"
+#line 469 "parse.y"
{
yyval.node = NEW_MASGN(list_concat(NEW_LIST(yyvsp[-4].node),yyvsp[-3].node),yyvsp[0].node);
;
break;}
case 45:
-#line 472 "parse.y"
+#line 473 "parse.y"
{
yyval.node = NEW_MASGN(0, yyvsp[0].node);
;
break;}
case 47:
-#line 478 "parse.y"
+#line 479 "parse.y"
{
yyval.node = yyvsp[-1].node;
;
break;}
case 48:
-#line 483 "parse.y"
+#line 484 "parse.y"
{
yyval.node = yyvsp[-1].node;
;
break;}
case 49:
-#line 488 "parse.y"
+#line 489 "parse.y"
{
yyval.node = NEW_LIST(yyvsp[0].node);
;
break;}
case 50:
-#line 492 "parse.y"
+#line 493 "parse.y"
{
yyval.node = list_append(yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 51:
-#line 497 "parse.y"
+#line 498 "parse.y"
{
yyval.node = assignable(yyvsp[0].id, 0);
;
break;}
case 52:
-#line 501 "parse.y"
+#line 502 "parse.y"
{
yyval.node = aryset(yyvsp[-3].node, yyvsp[-1].node);
;
break;}
case 53:
-#line 505 "parse.y"
+#line 506 "parse.y"
{
yyval.node = attrset(yyvsp[-2].node, yyvsp[0].id);
;
break;}
case 54:
-#line 509 "parse.y"
+#line 510 "parse.y"
{
rb_backref_error(yyvsp[0].node);
yyval.node = 0;
;
break;}
case 55:
-#line 515 "parse.y"
+#line 516 "parse.y"
{
yyval.node = assignable(yyvsp[0].id, 0);
;
break;}
case 56:
-#line 519 "parse.y"
+#line 520 "parse.y"
{
yyval.node = aryset(yyvsp[-3].node, yyvsp[-1].node);
;
break;}
case 57:
-#line 523 "parse.y"
+#line 524 "parse.y"
{
yyval.node = attrset(yyvsp[-2].node, yyvsp[0].id);
;
break;}
case 58:
-#line 527 "parse.y"
+#line 528 "parse.y"
{
rb_backref_error(yyvsp[0].node);
yyval.node = 0;
;
break;}
case 59:
-#line 533 "parse.y"
+#line 534 "parse.y"
{
yyerror("class/module name must be CONSTANT");
;
break;}
case 64:
-#line 542 "parse.y"
+#line 543 "parse.y"
{
lex_state = EXPR_END;
yyval.id = yyvsp[0].id;
;
break;}
case 65:
-#line 547 "parse.y"
+#line 548 "parse.y"
{
lex_state = EXPR_END;
yyval.id = yyvsp[0].id;
;
break;}
case 66:
-#line 553 "parse.y"
+#line 554 "parse.y"
{
yyval.node = NEW_UNDEF(yyvsp[0].id);
;
break;}
case 67:
-#line 556 "parse.y"
+#line 557 "parse.y"
{lex_state = EXPR_FNAME;;
break;}
case 68:
-#line 557 "parse.y"
+#line 558 "parse.y"
{
yyval.node = block_append(yyvsp[-3].node, NEW_UNDEF(yyvsp[0].id));
;
break;}
case 69:
-#line 561 "parse.y"
+#line 562 "parse.y"
{ yyval.id = tDOT2; ;
break;}
case 70:
-#line 562 "parse.y"
+#line 563 "parse.y"
{ yyval.id = '|'; ;
break;}
case 71:
-#line 563 "parse.y"
+#line 564 "parse.y"
{ yyval.id = '^'; ;
break;}
case 72:
-#line 564 "parse.y"
+#line 565 "parse.y"
{ yyval.id = '&'; ;
break;}
case 73:
-#line 565 "parse.y"
+#line 566 "parse.y"
{ yyval.id = tCMP; ;
break;}
case 74:
-#line 566 "parse.y"
+#line 567 "parse.y"
{ yyval.id = tEQ; ;
break;}
case 75:
-#line 567 "parse.y"
+#line 568 "parse.y"
{ yyval.id = tEQQ; ;
break;}
case 76:
-#line 568 "parse.y"
+#line 569 "parse.y"
{ yyval.id = tMATCH; ;
break;}
case 77:
-#line 569 "parse.y"
+#line 570 "parse.y"
{ yyval.id = '>'; ;
break;}
case 78:
-#line 570 "parse.y"
+#line 571 "parse.y"
{ yyval.id = tGEQ; ;
break;}
case 79:
-#line 571 "parse.y"
+#line 572 "parse.y"
{ yyval.id = '<'; ;
break;}
case 80:
-#line 572 "parse.y"
+#line 573 "parse.y"
{ yyval.id = tLEQ; ;
break;}
case 81:
-#line 573 "parse.y"
+#line 574 "parse.y"
{ yyval.id = tLSHFT; ;
break;}
case 82:
-#line 574 "parse.y"
+#line 575 "parse.y"
{ yyval.id = tRSHFT; ;
break;}
case 83:
-#line 575 "parse.y"
+#line 576 "parse.y"
{ yyval.id = '+'; ;
break;}
case 84:
-#line 576 "parse.y"
+#line 577 "parse.y"
{ yyval.id = '-'; ;
break;}
case 85:
-#line 577 "parse.y"
+#line 578 "parse.y"
{ yyval.id = '*'; ;
break;}
case 86:
-#line 578 "parse.y"
+#line 579 "parse.y"
{ yyval.id = '*'; ;
break;}
case 87:
-#line 579 "parse.y"
+#line 580 "parse.y"
{ yyval.id = '/'; ;
break;}
case 88:
-#line 580 "parse.y"
+#line 581 "parse.y"
{ yyval.id = '%'; ;
break;}
case 89:
-#line 581 "parse.y"
+#line 582 "parse.y"
{ yyval.id = tPOW; ;
break;}
case 90:
-#line 582 "parse.y"
+#line 583 "parse.y"
{ yyval.id = '~'; ;
break;}
case 91:
-#line 583 "parse.y"
+#line 584 "parse.y"
{ yyval.id = tUPLUS; ;
break;}
case 92:
-#line 584 "parse.y"
+#line 585 "parse.y"
{ yyval.id = tUMINUS; ;
break;}
case 93:
-#line 585 "parse.y"
+#line 586 "parse.y"
{ yyval.id = tAREF; ;
break;}
case 94:
-#line 586 "parse.y"
+#line 587 "parse.y"
{ yyval.id = tASET; ;
break;}
case 95:
-#line 587 "parse.y"
+#line 588 "parse.y"
{ yyval.id = '`'; ;
break;}
case 136:
-#line 598 "parse.y"
+#line 599 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = node_assign(yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 137:
-#line 602 "parse.y"
+#line 603 "parse.y"
{yyval.node = assignable(yyvsp[-1].id, 0);;
break;}
case 138:
-#line 603 "parse.y"
+#line 604 "parse.y"
{
if (yyvsp[-2].id == tOROP) {
yyvsp[-1].node->nd_value = yyvsp[0].node;
@@ -3167,7 +3168,7 @@ case 138:
;
break;}
case 139:
-#line 619 "parse.y"
+#line 620 "parse.y"
{
NODE *args = NEW_LIST(yyvsp[0].node);
@@ -3184,7 +3185,7 @@ case 139:
;
break;}
case 140:
-#line 634 "parse.y"
+#line 635 "parse.y"
{
if (yyvsp[-1].id == tOROP) {
yyvsp[-1].id = 0;
@@ -3197,7 +3198,7 @@ case 140:
;
break;}
case 141:
-#line 645 "parse.y"
+#line 646 "parse.y"
{
if (yyvsp[-1].id == tOROP) {
yyvsp[-1].id = 0;
@@ -3210,200 +3211,200 @@ case 141:
;
break;}
case 142:
-#line 656 "parse.y"
+#line 657 "parse.y"
{
rb_backref_error(yyvsp[-2].node);
yyval.node = 0;
;
break;}
case 143:
-#line 661 "parse.y"
+#line 662 "parse.y"
{
yyval.node = NEW_DOT2(yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 144:
-#line 665 "parse.y"
+#line 666 "parse.y"
{
yyval.node = NEW_DOT3(yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 145:
-#line 669 "parse.y"
+#line 670 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, '+', 1, yyvsp[0].node);
;
break;}
case 146:
-#line 673 "parse.y"
+#line 674 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, '-', 1, yyvsp[0].node);
;
break;}
case 147:
-#line 677 "parse.y"
+#line 678 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, '*', 1, yyvsp[0].node);
;
break;}
case 148:
-#line 681 "parse.y"
+#line 682 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, '/', 1, yyvsp[0].node);
;
break;}
case 149:
-#line 685 "parse.y"
+#line 686 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, '%', 1, yyvsp[0].node);
;
break;}
case 150:
-#line 689 "parse.y"
+#line 690 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, tPOW, 1, yyvsp[0].node);
;
break;}
case 151:
-#line 693 "parse.y"
+#line 694 "parse.y"
{
yyval.node = call_op(yyvsp[0].node, tUPLUS, 0);
;
break;}
case 152:
-#line 697 "parse.y"
+#line 698 "parse.y"
{
yyval.node = call_op(yyvsp[0].node, tUMINUS, 0);
;
break;}
case 153:
-#line 701 "parse.y"
+#line 702 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, '|', 1, yyvsp[0].node);
;
break;}
case 154:
-#line 705 "parse.y"
+#line 706 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, '^', 1, yyvsp[0].node);
;
break;}
case 155:
-#line 709 "parse.y"
+#line 710 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, '&', 1, yyvsp[0].node);
;
break;}
case 156:
-#line 713 "parse.y"
+#line 714 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, tCMP, 1, yyvsp[0].node);
;
break;}
case 157:
-#line 717 "parse.y"
+#line 718 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, '>', 1, yyvsp[0].node);
;
break;}
case 158:
-#line 721 "parse.y"
+#line 722 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, tGEQ, 1, yyvsp[0].node);
;
break;}
case 159:
-#line 725 "parse.y"
+#line 726 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, '<', 1, yyvsp[0].node);
;
break;}
case 160:
-#line 729 "parse.y"
+#line 730 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, tLEQ, 1, yyvsp[0].node);
;
break;}
case 161:
-#line 733 "parse.y"
+#line 734 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, tEQ, 1, yyvsp[0].node);
;
break;}
case 162:
-#line 737 "parse.y"
+#line 738 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, tEQQ, 1, yyvsp[0].node);
;
break;}
case 163:
-#line 741 "parse.y"
+#line 742 "parse.y"
{
yyval.node = NEW_NOT(call_op(yyvsp[-2].node, tEQ, 1, yyvsp[0].node));
;
break;}
case 164:
-#line 745 "parse.y"
+#line 746 "parse.y"
{
yyval.node = match_gen(yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 165:
-#line 749 "parse.y"
+#line 750 "parse.y"
{
yyval.node = NEW_NOT(match_gen(yyvsp[-2].node, yyvsp[0].node));
;
break;}
case 166:
-#line 753 "parse.y"
+#line 754 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = NEW_NOT(cond(yyvsp[0].node));
;
break;}
case 167:
-#line 758 "parse.y"
+#line 759 "parse.y"
{
yyval.node = call_op(yyvsp[0].node, '~', 0);
;
break;}
case 168:
-#line 762 "parse.y"
+#line 763 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, tLSHFT, 1, yyvsp[0].node);
;
break;}
case 169:
-#line 766 "parse.y"
+#line 767 "parse.y"
{
yyval.node = call_op(yyvsp[-2].node, tRSHFT, 1, yyvsp[0].node);
;
break;}
case 170:
-#line 770 "parse.y"
+#line 771 "parse.y"
{
yyval.node = logop(NODE_AND, yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 171:
-#line 774 "parse.y"
+#line 775 "parse.y"
{
yyval.node = logop(NODE_OR, yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 172:
-#line 777 "parse.y"
+#line 778 "parse.y"
{in_defined = 1;;
break;}
case 173:
-#line 778 "parse.y"
+#line 779 "parse.y"
{
in_defined = 0;
yyval.node = NEW_DEFINED(yyvsp[0].node);
;
break;}
case 174:
-#line 783 "parse.y"
+#line 784 "parse.y"
{
value_expr(yyvsp[-4].node);
yyval.node = NEW_IF(cond(yyvsp[-4].node), yyvsp[-2].node, yyvsp[0].node);
@@ -3411,13 +3412,13 @@ case 174:
;
break;}
case 175:
-#line 789 "parse.y"
+#line 790 "parse.y"
{
yyval.node = yyvsp[0].node;
;
break;}
case 176:
-#line 794 "parse.y"
+#line 795 "parse.y"
{
if (yyvsp[0].node && nd_type(yyvsp[0].node) == NODE_BLOCK_PASS) {
rb_compile_error("block argument should not be given");
@@ -3426,107 +3427,107 @@ case 176:
;
break;}
case 179:
-#line 805 "parse.y"
+#line 806 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = NEW_LIST(yyvsp[0].node);
;
break;}
case 180:
-#line 810 "parse.y"
+#line 811 "parse.y"
{
yyval.node = yyvsp[-1].node;
;
break;}
case 181:
-#line 814 "parse.y"
+#line 815 "parse.y"
{
yyval.node = arg_blk_pass(yyvsp[-1].node, yyvsp[0].node);
;
break;}
case 182:
-#line 818 "parse.y"
+#line 819 "parse.y"
{
yyval.node = arg_concat(yyvsp[-4].node, yyvsp[-1].node);
yyval.node = arg_blk_pass(yyval.node, yyvsp[0].node);
;
break;}
case 183:
-#line 823 "parse.y"
+#line 824 "parse.y"
{
yyval.node = NEW_LIST(NEW_HASH(yyvsp[-1].node));
;
break;}
case 184:
-#line 827 "parse.y"
+#line 828 "parse.y"
{
yyval.node = NEW_LIST(NEW_HASH(yyvsp[-1].node));
yyval.node = arg_blk_pass(yyval.node, yyvsp[0].node);
;
break;}
case 185:
-#line 832 "parse.y"
+#line 833 "parse.y"
{
yyval.node = arg_concat(NEW_LIST(NEW_HASH(yyvsp[-4].node)), yyvsp[-1].node);
yyval.node = arg_blk_pass(yyval.node, yyvsp[0].node);
;
break;}
case 186:
-#line 837 "parse.y"
+#line 838 "parse.y"
{
yyval.node = list_append(yyvsp[-3].node, NEW_HASH(yyvsp[-1].node));
yyval.node = arg_blk_pass(yyval.node, yyvsp[0].node);
;
break;}
case 187:
-#line 842 "parse.y"
+#line 843 "parse.y"
{
yyval.node = list_append(yyvsp[-3].node, NEW_HASH(yyvsp[-1].node));
;
break;}
case 188:
-#line 846 "parse.y"
+#line 847 "parse.y"
{
yyval.node = arg_concat(list_append(yyvsp[-6].node, NEW_HASH(yyvsp[-4].node)), yyvsp[-1].node);
yyval.node = arg_blk_pass(yyval.node, yyvsp[0].node);
;
break;}
case 189:
-#line 851 "parse.y"
+#line 852 "parse.y"
{
value_expr(yyvsp[-1].node);
yyval.node = arg_blk_pass(NEW_RESTARGS(yyvsp[-1].node), yyvsp[0].node);
;
break;}
case 191:
-#line 858 "parse.y"
+#line 859 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = NEW_BLOCK_PASS(yyvsp[0].node);
;
break;}
case 192:
-#line 864 "parse.y"
+#line 865 "parse.y"
{
yyval.node = yyvsp[0].node;
;
break;}
case 196:
-#line 873 "parse.y"
+#line 874 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = NEW_LIST(yyvsp[0].node);
;
break;}
case 197:
-#line 878 "parse.y"
+#line 879 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = list_append(yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 198:
-#line 884 "parse.y"
+#line 885 "parse.y"
{
if (yyvsp[0].node &&
nd_type(yyvsp[0].node) == NODE_ARRAY &&
@@ -3540,21 +3541,21 @@ case 198:
;
break;}
case 199:
-#line 896 "parse.y"
+#line 897 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = arg_concat(yyvsp[-3].node, yyvsp[0].node);
;
break;}
case 200:
-#line 901 "parse.y"
+#line 902 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = yyvsp[0].node;
;
break;}
case 201:
-#line 907 "parse.y"
+#line 908 "parse.y"
{
yyval.node = yyvsp[0].node;
if (yyvsp[0].node) {
@@ -3569,45 +3570,45 @@ case 201:
;
break;}
case 204:
-#line 924 "parse.y"
+#line 925 "parse.y"
{
yyval.node = NEW_LIT(yyvsp[0].val);
;
break;}
case 205:
-#line 928 "parse.y"
+#line 929 "parse.y"
{
value_expr(yyvsp[-2].node);
yyval.node = NEW_COLON2(yyvsp[-2].node, yyvsp[0].id);
;
break;}
case 206:
-#line 933 "parse.y"
+#line 934 "parse.y"
{
yyval.node = NEW_COLON3(yyvsp[0].id);
;
break;}
case 207:
-#line 937 "parse.y"
+#line 938 "parse.y"
{
yyval.node = NEW_STR(yyvsp[0].val);
;
break;}
case 209:
-#line 942 "parse.y"
+#line 943 "parse.y"
{
yyval.node = NEW_XSTR(yyvsp[0].val);
;
break;}
case 214:
-#line 950 "parse.y"
+#line 951 "parse.y"
{
value_expr(yyvsp[-3].node);
yyval.node = NEW_CALL(yyvsp[-3].node, tAREF, yyvsp[-1].node);
;
break;}
case 215:
-#line 955 "parse.y"
+#line 956 "parse.y"
{
if (yyvsp[-1].node == 0)
yyval.node = NEW_ZARRAY(); /* zero length array*/
@@ -3617,13 +3618,13 @@ case 215:
;
break;}
case 216:
-#line 963 "parse.y"
+#line 964 "parse.y"
{
yyval.node = NEW_HASH(yyvsp[-1].node);
;
break;}
case 217:
-#line 967 "parse.y"
+#line 968 "parse.y"
{
if (!compile_for_eval && !cur_mid && !in_single)
yyerror("return appeared outside of method");
@@ -3632,7 +3633,7 @@ case 217:
;
break;}
case 218:
-#line 974 "parse.y"
+#line 975 "parse.y"
{
if (!compile_for_eval && !cur_mid && !in_single)
yyerror("return appeared outside of method");
@@ -3640,7 +3641,7 @@ case 218:
;
break;}
case 219:
-#line 980 "parse.y"
+#line 981 "parse.y"
{
if (!compile_for_eval && !cur_mid && !in_single)
yyerror("return appeared outside of method");
@@ -3648,50 +3649,50 @@ case 219:
;
break;}
case 220:
-#line 986 "parse.y"
+#line 987 "parse.y"
{
value_expr(yyvsp[-1].node);
yyval.node = NEW_YIELD(yyvsp[-1].node);
;
break;}
case 221:
-#line 991 "parse.y"
+#line 992 "parse.y"
{
yyval.node = NEW_YIELD(0);
;
break;}
case 222:
-#line 995 "parse.y"
+#line 996 "parse.y"
{
yyval.node = NEW_YIELD(0);
;
break;}
case 223:
-#line 998 "parse.y"
+#line 999 "parse.y"
{in_defined = 1;;
break;}
case 224:
-#line 999 "parse.y"
+#line 1000 "parse.y"
{
in_defined = 0;
yyval.node = NEW_DEFINED(yyvsp[-1].node);
;
break;}
case 225:
-#line 1004 "parse.y"
+#line 1005 "parse.y"
{
yyval.node = NEW_VCALL(yyvsp[0].id);
;
break;}
case 226:
-#line 1008 "parse.y"
+#line 1009 "parse.y"
{
yyvsp[0].node->nd_iter = NEW_FCALL(yyvsp[-1].id, 0);
yyval.node = yyvsp[0].node;
;
break;}
case 228:
-#line 1014 "parse.y"
+#line 1015 "parse.y"
{
if (yyvsp[-1].node && nd_type(yyvsp[-1].node) == NODE_BLOCK_PASS) {
rb_compile_error("both block arg and actual block given");
@@ -3702,7 +3703,7 @@ case 228:
;
break;}
case 229:
-#line 1026 "parse.y"
+#line 1027 "parse.y"
{
value_expr(yyvsp[-4].node);
yyval.node = NEW_IF(cond(yyvsp[-4].node), yyvsp[-2].node, yyvsp[-1].node);
@@ -3710,7 +3711,7 @@ case 229:
;
break;}
case 230:
-#line 1035 "parse.y"
+#line 1036 "parse.y"
{
value_expr(yyvsp[-4].node);
yyval.node = NEW_UNLESS(cond(yyvsp[-4].node), yyvsp[-2].node, yyvsp[-1].node);
@@ -3718,7 +3719,7 @@ case 230:
;
break;}
case 231:
-#line 1043 "parse.y"
+#line 1044 "parse.y"
{
value_expr(yyvsp[-3].node);
yyval.node = NEW_WHILE(cond(yyvsp[-3].node), yyvsp[-1].node, 1);
@@ -3726,7 +3727,7 @@ case 231:
;
break;}
case 232:
-#line 1051 "parse.y"
+#line 1052 "parse.y"
{
value_expr(yyvsp[-3].node);
yyval.node = NEW_UNTIL(cond(yyvsp[-3].node), yyvsp[-1].node, 1);
@@ -3734,7 +3735,7 @@ case 232:
;
break;}
case 233:
-#line 1059 "parse.y"
+#line 1060 "parse.y"
{
value_expr(yyvsp[-2].node);
yyval.node = NEW_CASE(yyvsp[-2].node, yyvsp[-1].node);
@@ -3742,7 +3743,7 @@ case 233:
;
break;}
case 234:
-#line 1067 "parse.y"
+#line 1068 "parse.y"
{
value_expr(yyvsp[-5].node);
yyval.node = NEW_FOR(yyvsp[-5].node, yyvsp[-3].node, yyvsp[-1].node);
@@ -3750,7 +3751,7 @@ case 234:
;
break;}
case 235:
-#line 1078 "parse.y"
+#line 1079 "parse.y"
{
if (!yyvsp[-3].node && !yyvsp[-2].node && !yyvsp[-1].node)
yyval.node = NEW_BEGIN(yyvsp[-4].node);
@@ -3767,13 +3768,13 @@ case 235:
;
break;}
case 236:
-#line 1093 "parse.y"
+#line 1094 "parse.y"
{
yyval.node = yyvsp[-1].node;
;
break;}
case 237:
-#line 1097 "parse.y"
+#line 1098 "parse.y"
{
if (cur_mid || in_single)
yyerror("class definition in method body");
@@ -3784,7 +3785,7 @@ case 237:
;
break;}
case 238:
-#line 1107 "parse.y"
+#line 1108 "parse.y"
{
yyval.node = NEW_CLASS(yyvsp[-4].id, yyvsp[-1].node, yyvsp[-3].node);
fixpos(yyval.node, yyvsp[-3].node);
@@ -3794,7 +3795,7 @@ case 238:
;
break;}
case 239:
-#line 1115 "parse.y"
+#line 1116 "parse.y"
{
class_nest++;
cref_push();
@@ -3802,7 +3803,7 @@ case 239:
;
break;}
case 240:
-#line 1122 "parse.y"
+#line 1123 "parse.y"
{
yyval.node = NEW_SCLASS(yyvsp[-4].node, yyvsp[-1].node);
fixpos(yyval.node, yyvsp[-4].node);
@@ -3812,7 +3813,7 @@ case 240:
;
break;}
case 241:
-#line 1130 "parse.y"
+#line 1131 "parse.y"
{
if (cur_mid || in_single)
yyerror("module definition in method body");
@@ -3822,7 +3823,7 @@ case 241:
;
break;}
case 242:
-#line 1139 "parse.y"
+#line 1140 "parse.y"
{
yyval.node = NEW_MODULE(yyvsp[-3].id, yyvsp[-1].node);
fixpos(yyval.node, yyvsp[-1].node);
@@ -3832,7 +3833,7 @@ case 242:
;
break;}
case 243:
-#line 1147 "parse.y"
+#line 1148 "parse.y"
{
if (cur_mid || in_single)
yyerror("nested method definition");
@@ -3841,7 +3842,7 @@ case 243:
;
break;}
case 244:
-#line 1156 "parse.y"
+#line 1157 "parse.y"
{
/* NOEX_PRIVATE for toplevel */
yyval.node = NEW_DEFN(yyvsp[-4].id, yyvsp[-2].node, yyvsp[-1].node, class_nest?0:1);
@@ -3851,11 +3852,11 @@ case 244:
;
break;}
case 245:
-#line 1163 "parse.y"
+#line 1164 "parse.y"
{lex_state = EXPR_FNAME;;
break;}
case 246:
-#line 1164 "parse.y"
+#line 1165 "parse.y"
{
value_expr(yyvsp[-3].node);
in_single++;
@@ -3864,7 +3865,7 @@ case 246:
;
break;}
case 247:
-#line 1173 "parse.y"
+#line 1174 "parse.y"
{
yyval.node = NEW_DEFS(yyvsp[-7].node, yyvsp[-4].id, yyvsp[-2].node, yyvsp[-1].node);
fixpos(yyval.node, yyvsp[-7].node);
@@ -3873,31 +3874,31 @@ case 247:
;
break;}
case 248:
-#line 1180 "parse.y"
+#line 1181 "parse.y"
{
yyval.node = NEW_BREAK();
;
break;}
case 249:
-#line 1184 "parse.y"
+#line 1185 "parse.y"
{
yyval.node = NEW_NEXT();
;
break;}
case 250:
-#line 1188 "parse.y"
+#line 1189 "parse.y"
{
yyval.node = NEW_REDO();
;
break;}
case 251:
-#line 1192 "parse.y"
+#line 1193 "parse.y"
{
yyval.node = NEW_RETRY();
;
break;}
case 258:
-#line 1207 "parse.y"
+#line 1208 "parse.y"
{
value_expr(yyvsp[-3].node);
yyval.node = NEW_IF(cond(yyvsp[-3].node), yyvsp[-1].node, yyvsp[0].node);
@@ -3905,37 +3906,37 @@ case 258:
;
break;}
case 260:
-#line 1215 "parse.y"
+#line 1216 "parse.y"
{
yyval.node = yyvsp[0].node;
;
break;}
case 264:
-#line 1224 "parse.y"
+#line 1225 "parse.y"
{
yyval.node = 0;
;
break;}
case 265:
-#line 1228 "parse.y"
+#line 1229 "parse.y"
{
yyval.node = 0;
;
break;}
case 266:
-#line 1232 "parse.y"
+#line 1233 "parse.y"
{
yyval.node = yyvsp[-1].node;
;
break;}
case 267:
-#line 1237 "parse.y"
+#line 1238 "parse.y"
{
yyval.vars = dyna_push();
;
break;}
case 268:
-#line 1243 "parse.y"
+#line 1244 "parse.y"
{
yyval.node = NEW_ITER(yyvsp[-2].node, 0, yyvsp[-1].node);
fixpos(yyval.node, yyvsp[-2].node?yyvsp[-2].node:yyvsp[-1].node);
@@ -3943,13 +3944,13 @@ case 268:
;
break;}
case 269:
-#line 1250 "parse.y"
+#line 1251 "parse.y"
{
yyval.vars = dyna_push();
;
break;}
case 270:
-#line 1255 "parse.y"
+#line 1256 "parse.y"
{
yyval.node = NEW_ITER(yyvsp[-2].node, 0, yyvsp[-1].node);
fixpos(yyval.node, yyvsp[-2].node?yyvsp[-2].node:yyvsp[-1].node);
@@ -3957,25 +3958,25 @@ case 270:
;
break;}
case 271:
-#line 1262 "parse.y"
+#line 1263 "parse.y"
{
yyval.node = NEW_VCALL(yyvsp[0].id);
;
break;}
case 272:
-#line 1266 "parse.y"
+#line 1267 "parse.y"
{
yyval.node = NEW_VCALL(yyvsp[0].id);
;
break;}
case 273:
-#line 1270 "parse.y"
+#line 1271 "parse.y"
{
yyval.node = NEW_VCALL(yyvsp[0].id);
;
break;}
case 276:
-#line 1277 "parse.y"
+#line 1278 "parse.y"
{
if (yyvsp[-1].node && nd_type(yyvsp[-1].node) == NODE_BLOCK_PASS) {
rb_compile_error("both block arg and actual block given");
@@ -3986,14 +3987,14 @@ case 276:
;
break;}
case 277:
-#line 1287 "parse.y"
+#line 1288 "parse.y"
{
yyval.node = new_fcall(yyvsp[-3].id, yyvsp[-1].node);
fixpos(yyval.node, yyvsp[-1].node);
;
break;}
case 278:
-#line 1292 "parse.y"
+#line 1293 "parse.y"
{
value_expr(yyvsp[-5].node);
yyval.node = new_call(yyvsp[-5].node, yyvsp[-3].id, yyvsp[-1].node);
@@ -4001,7 +4002,7 @@ case 278:
;
break;}
case 279:
-#line 1298 "parse.y"
+#line 1299 "parse.y"
{
value_expr(yyvsp[-2].node);
yyval.node = new_call(yyvsp[-2].node, yyvsp[0].id, 0);
@@ -4009,7 +4010,7 @@ case 279:
;
break;}
case 280:
-#line 1304 "parse.y"
+#line 1305 "parse.y"
{
value_expr(yyvsp[-5].node);
yyval.node = new_call(yyvsp[-5].node, yyvsp[-3].id, yyvsp[-1].node);
@@ -4017,14 +4018,14 @@ case 280:
;
break;}
case 281:
-#line 1310 "parse.y"
+#line 1311 "parse.y"
{
value_expr(yyvsp[-2].node);
yyval.node = new_call(yyvsp[-2].node, yyvsp[0].id, 0);
;
break;}
case 282:
-#line 1315 "parse.y"
+#line 1316 "parse.y"
{
if (!compile_for_eval && !cur_mid &&
!in_single && !in_defined)
@@ -4033,7 +4034,7 @@ case 282:
;
break;}
case 283:
-#line 1322 "parse.y"
+#line 1323 "parse.y"
{
if (!compile_for_eval && !cur_mid &&
!in_single && !in_defined)
@@ -4042,165 +4043,165 @@ case 283:
;
break;}
case 286:
-#line 1336 "parse.y"
+#line 1337 "parse.y"
{
yyval.node = NEW_WHEN(yyvsp[-3].node, yyvsp[-1].node, yyvsp[0].node);
;
break;}
case 288:
-#line 1342 "parse.y"
+#line 1343 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = list_append(yyvsp[-3].node, NEW_WHEN(yyvsp[0].node, 0, 0));
;
break;}
case 289:
-#line 1347 "parse.y"
+#line 1348 "parse.y"
{
value_expr(yyvsp[0].node);
yyval.node = NEW_LIST(NEW_WHEN(yyvsp[0].node, 0, 0));
;
break;}
case 292:
-#line 1358 "parse.y"
+#line 1359 "parse.y"
{
yyval.node = NEW_RESBODY(yyvsp[-3].node, yyvsp[-1].node, yyvsp[0].node);
fixpos(yyval.node, yyvsp[-3].node?yyvsp[-3].node:yyvsp[-1].node);
;
break;}
case 295:
-#line 1366 "parse.y"
+#line 1367 "parse.y"
{
yyval.node = yyvsp[0].node;
;
break;}
case 297:
-#line 1372 "parse.y"
+#line 1373 "parse.y"
{
yyval.val = INT2FIX(yyvsp[0].id);
;
break;}
case 308:
-#line 1388 "parse.y"
+#line 1389 "parse.y"
{yyval.id = kNIL;;
break;}
case 309:
-#line 1389 "parse.y"
+#line 1390 "parse.y"
{yyval.id = kSELF;;
break;}
case 310:
-#line 1390 "parse.y"
+#line 1391 "parse.y"
{yyval.id = kTRUE;;
break;}
case 311:
-#line 1391 "parse.y"
+#line 1392 "parse.y"
{yyval.id = kFALSE;;
break;}
case 312:
-#line 1392 "parse.y"
+#line 1393 "parse.y"
{yyval.id = k__FILE__;;
break;}
case 313:
-#line 1393 "parse.y"
+#line 1394 "parse.y"
{yyval.id = k__LINE__;;
break;}
case 314:
-#line 1396 "parse.y"
+#line 1397 "parse.y"
{
yyval.node = gettable(yyvsp[0].id);
;
break;}
case 317:
-#line 1404 "parse.y"
+#line 1405 "parse.y"
{
yyval.node = 0;
;
break;}
case 318:
-#line 1408 "parse.y"
+#line 1409 "parse.y"
{
lex_state = EXPR_BEG;
;
break;}
case 319:
-#line 1412 "parse.y"
+#line 1413 "parse.y"
{
yyval.node = yyvsp[-1].node;
;
break;}
case 320:
-#line 1415 "parse.y"
+#line 1416 "parse.y"
{yyerrok; yyval.node = 0;;
break;}
case 321:
-#line 1418 "parse.y"
+#line 1419 "parse.y"
{
yyval.node = yyvsp[-2].node;
lex_state = EXPR_BEG;
;
break;}
case 322:
-#line 1423 "parse.y"
+#line 1424 "parse.y"
{
yyval.node = yyvsp[-1].node;
;
break;}
case 323:
-#line 1428 "parse.y"
+#line 1429 "parse.y"
{
yyval.node = block_append(NEW_ARGS(yyvsp[-5].num, yyvsp[-3].node, yyvsp[-1].id), yyvsp[0].node);
;
break;}
case 324:
-#line 1432 "parse.y"
+#line 1433 "parse.y"
{
yyval.node = block_append(NEW_ARGS(yyvsp[-3].num, yyvsp[-1].node, -1), yyvsp[0].node);
;
break;}
case 325:
-#line 1436 "parse.y"
+#line 1437 "parse.y"
{
yyval.node = block_append(NEW_ARGS(yyvsp[-3].num, 0, yyvsp[-1].id), yyvsp[0].node);
;
break;}
case 326:
-#line 1440 "parse.y"
+#line 1441 "parse.y"
{
yyval.node = block_append(NEW_ARGS(yyvsp[-1].num, 0, -1), yyvsp[0].node);
;
break;}
case 327:
-#line 1444 "parse.y"
+#line 1445 "parse.y"
{
yyval.node = block_append(NEW_ARGS(0, yyvsp[-3].node, yyvsp[-1].id), yyvsp[0].node);
;
break;}
case 328:
-#line 1448 "parse.y"
+#line 1449 "parse.y"
{
yyval.node = block_append(NEW_ARGS(0, yyvsp[-1].node, -1), yyvsp[0].node);
;
break;}
case 329:
-#line 1452 "parse.y"
+#line 1453 "parse.y"
{
yyval.node = block_append(NEW_ARGS(0, 0, yyvsp[-1].id), yyvsp[0].node);
;
break;}
case 330:
-#line 1456 "parse.y"
+#line 1457 "parse.y"
{
yyval.node = block_append(NEW_ARGS(0, 0, -1), yyvsp[0].node);
;
break;}
case 331:
-#line 1460 "parse.y"
+#line 1461 "parse.y"
{
yyval.node = NEW_ARGS(0, 0, -1);
;
break;}
case 332:
-#line 1465 "parse.y"
+#line 1466 "parse.y"
{
if (!is_local_id(yyvsp[0].id))
yyerror("formal argument must be local variable");
@@ -4209,7 +4210,7 @@ case 332:
;
break;}
case 333:
-#line 1472 "parse.y"
+#line 1473 "parse.y"
{
if (!is_local_id(yyvsp[0].id))
yyerror("formal argument must be local variable");
@@ -4218,7 +4219,7 @@ case 333:
;
break;}
case 334:
-#line 1480 "parse.y"
+#line 1481 "parse.y"
{
if (!is_local_id(yyvsp[-2].id))
yyerror("formal argument must be local variable");
@@ -4226,20 +4227,20 @@ case 334:
;
break;}
case 335:
-#line 1487 "parse.y"
+#line 1488 "parse.y"
{
yyval.node = NEW_BLOCK(yyvsp[0].node);
yyval.node->nd_end = yyval.node;
;
break;}
case 336:
-#line 1492 "parse.y"
+#line 1493 "parse.y"
{
yyval.node = block_append(yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 337:
-#line 1497 "parse.y"
+#line 1498 "parse.y"
{
if (!is_local_id(yyvsp[0].id))
yyerror("rest argument must be local variable");
@@ -4247,19 +4248,19 @@ case 337:
;
break;}
case 338:
-#line 1504 "parse.y"
+#line 1505 "parse.y"
{
yyval.node = NEW_BLOCK_ARG(yyvsp[0].id);
;
break;}
case 339:
-#line 1509 "parse.y"
+#line 1510 "parse.y"
{
yyval.node = yyvsp[0].node;
;
break;}
case 341:
-#line 1515 "parse.y"
+#line 1516 "parse.y"
{
if (nd_type(yyvsp[0].node) == NODE_SELF) {
yyval.node = NEW_SELF();
@@ -4274,7 +4275,7 @@ case 341:
;
break;}
case 342:
-#line 1528 "parse.y"
+#line 1529 "parse.y"
{
switch (nd_type(yyvsp[-2].node)) {
case NODE_STR:
@@ -4293,13 +4294,13 @@ case 342:
;
break;}
case 344:
-#line 1547 "parse.y"
+#line 1548 "parse.y"
{
yyval.node = yyvsp[-1].node;
;
break;}
case 345:
-#line 1551 "parse.y"
+#line 1552 "parse.y"
{
if (yyvsp[-1].node->nd_alen%2 != 0) {
yyerror("odd number list for Hash");
@@ -4308,27 +4309,27 @@ case 345:
;
break;}
case 347:
-#line 1560 "parse.y"
+#line 1561 "parse.y"
{
yyval.node = list_concat(yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 348:
-#line 1565 "parse.y"
+#line 1566 "parse.y"
{
yyval.node = list_append(NEW_LIST(yyvsp[-2].node), yyvsp[0].node);
;
break;}
case 363:
-#line 1589 "parse.y"
+#line 1590 "parse.y"
{yyerrok;;
break;}
case 366:
-#line 1593 "parse.y"
+#line 1594 "parse.y"
{yyerrok;;
break;}
case 367:
-#line 1596 "parse.y"
+#line 1597 "parse.y"
{
yyval.node = 0;
;
@@ -4555,7 +4556,7 @@ yyerrhandle:
}
return 1;
}
-#line 1599 "parse.y"
+#line 1600 "parse.y"
#include <ctype.h>
#include <sys/types.h>
@@ -4672,28 +4673,27 @@ lex_get_str(s)
}
NODE*
-rb_compile_string(f, s)
+rb_compile_string(f, s, line)
const char *f;
VALUE s;
+ int line;
{
lex_gets = lex_get_str;
lex_gets_ptr = 0;
lex_input = s;
lex_pbeg = lex_p = lex_pend = 0;
- if (!ruby_sourcefile || strcmp(f, ruby_sourcefile)) /* not in eval() */
- ruby_sourceline = 0;
- else /* in eval() */
- compile_for_eval = 1;
+ ruby_sourceline = line;
+ compile_for_eval = 1;
return yycompile(f);
}
NODE*
-rb_compile_cstr(f, s, len)
+rb_compile_cstr(f, s, len, line)
const char *f, *s;
- int len;
+ int len, line;
{
- return rb_compile_string(f, rb_str_new(s, len));
+ return rb_compile_string(f, rb_str_new(s, len), line);
}
NODE*
@@ -6758,10 +6758,7 @@ void_expr(node)
case '<':
case tLEQ:
case tEQ:
- case tEQQ:
case tNEQ:
- case tMATCH:
- case tNMATCH:
case tAREF:
case tRSHFT:
case tCOLON2: