@@ -15,7 +15,7 @@ token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS
15
15
tLCURLY tRCURLY tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG
16
16
tWORDS_BEG tAWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END tSTRING
17
17
tSYMBOL tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG
18
- tLBRACK2 tLBRACK
18
+ tLBRACK2 tLBRACK tDSTAR
19
19
20
20
prechigh
21
21
right tBANG tTILDE tUPLUS
@@ -1458,35 +1458,97 @@ xstring_contents: none
1458
1458
result = val[0 ]
1459
1459
}
1460
1460
1461
- f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_f_block_arg
1461
+ kwrest_mark: tPOW
1462
+ | tDSTAR
1463
+
1464
+ f_kwrest: kwrest_mark tIDENTIFIER
1465
+ {
1466
+ result = new_kwrestarg (val[1 ])
1467
+ }
1468
+ | kwrest_mark
1469
+ {
1470
+ result = new_kwrestarg ()
1471
+ }
1472
+
1473
+ f_label: tLABEL
1474
+ {
1475
+ result = new_sym (val[0 ])
1476
+ }
1477
+
1478
+ f_kw: f_label arg_value
1479
+ {
1480
+ result = new_kwarg (val[0 ], val[1 ])
1481
+ }
1482
+ | f_label
1483
+ {
1484
+ result = new_kwoptarg (val[0 ])
1485
+ }
1486
+
1487
+ f_kwarg: f_kw
1488
+ {
1489
+ result = [val[0 ]]
1490
+ }
1491
+ | f_kwarg tCOMMA f_kw
1492
+ {
1493
+ result = val[0 ]
1494
+ result << val[2 ]
1495
+ }
1496
+
1497
+ args_tail: f_kwarg tCOMMA f_kwrest opt_f_block_arg
1498
+ {
1499
+ result = new_args_tail (val[0 ], val[2 ], val[3 ])
1500
+ }
1501
+ | f_kwarg opt_f_block_arg
1502
+ {
1503
+ result = new_args_tail (val[0 ], nil, val[1 ])
1504
+ }
1505
+ | f_kwrest opt_f_block_arg
1506
+ {
1507
+ result = new_args_tail (nil, val[0 ], val[1 ])
1508
+ }
1509
+ | f_block_arg
1510
+ {
1511
+ result = new_args_tail (nil, nil, val[0 ])
1512
+ }
1513
+
1514
+ opt_args_tail: tCOMMA args_tail
1515
+ {
1516
+ result = val[1 ]
1517
+ }
1518
+ | # none
1519
+ {
1520
+ result = new_args_tail (nil, nil, nil)
1521
+ }
1522
+
1523
+ f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_args_tail
1462
1524
{
1463
1525
result = new_args (val[0 ], val[2 ], val[4 ], val[5 ])
1464
1526
}
1465
- | f_arg tCOMMA f_optarg opt_f_block_arg
1527
+ | f_arg tCOMMA f_optarg opt_args_tail
1466
1528
{
1467
1529
result = new_args (val[0 ], val[2 ], nil, val[3 ])
1468
1530
}
1469
- | f_arg tCOMMA f_rest_arg opt_f_block_arg
1531
+ | f_arg tCOMMA f_rest_arg opt_args_tail
1470
1532
{
1471
1533
result = new_args (val[0 ], nil, val[2 ], val[3 ])
1472
1534
}
1473
- | f_arg opt_f_block_arg
1535
+ | f_arg opt_args_tail
1474
1536
{
1475
1537
result = new_args (val[0 ], nil, nil, val[1 ])
1476
1538
}
1477
- | f_optarg tCOMMA f_rest_arg opt_f_block_arg
1539
+ | f_optarg tCOMMA f_rest_arg opt_args_tail
1478
1540
{
1479
1541
result = new_args (nil, val[0 ], val[2 ], val[3 ])
1480
1542
}
1481
- | f_optarg opt_f_block_arg
1543
+ | f_optarg opt_args_tail
1482
1544
{
1483
1545
result = new_args (nil, val[0 ], nil, val[1 ])
1484
1546
}
1485
- | f_rest_arg opt_f_block_arg
1547
+ | f_rest_arg opt_args_tail
1486
1548
{
1487
1549
result = new_args (nil, nil, val[0 ], val[1 ])
1488
1550
}
1489
- | f_block_arg
1551
+ | args_tail
1490
1552
{
1491
1553
result = new_args (nil, nil, nil, val[0 ])
1492
1554
}
0 commit comments