Skip to content

Commit 84f51eb

Browse files
committed
Use user defined parameterizing rules args_tail_basic
1 parent f2483c7 commit 84f51eb

File tree

1 file changed

+24
-40
lines changed

1 file changed

+24
-40
lines changed

parse.y

Lines changed: 24 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2921,6 +2921,28 @@ rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
29212921
}
29222922
;
29232923

2924+
%rule args_tail_basic(value) <node_args>
2925+
: f_kwarg(value) ',' f_kwrest opt_f_block_arg
2926+
{
2927+
$$ = new_args_tail(p, $1, $3, $4, &@3);
2928+
/*% ripper: [$:1, $:3, $:4] %*/
2929+
}
2930+
| f_kwarg(value) opt_f_block_arg
2931+
{
2932+
$$ = new_args_tail(p, $1, 0, $2, &@1);
2933+
/*% ripper: [$:1, Qnil, $:2] %*/
2934+
}
2935+
| f_any_kwrest opt_f_block_arg
2936+
{
2937+
$$ = new_args_tail(p, 0, $1, $2, &@1);
2938+
/*% ripper: [Qnil, $:1, $:2] %*/
2939+
}
2940+
| f_block_arg
2941+
{
2942+
$$ = new_args_tail(p, 0, 0, $1, &@1);
2943+
/*% ripper: [Qnil, Qnil, $:1] %*/
2944+
}
2945+
29242946
%rule def_endless_method(bodystmt) <node>
29252947
: defn_head[head] f_opt_paren_args[args] '=' bodystmt
29262948
{
@@ -4932,26 +4954,7 @@ f_any_kwrest : f_kwrest
49324954

49334955
f_eq : {p->ctxt.in_argdef = 0;} '=';
49344956

4935-
block_args_tail : f_kwarg(primary_value) ',' f_kwrest opt_f_block_arg
4936-
{
4937-
$$ = new_args_tail(p, $1, $3, $4, &@3);
4938-
/*% ripper: [$:1, $:3, $:4] %*/
4939-
}
4940-
| f_kwarg(primary_value) opt_f_block_arg
4941-
{
4942-
$$ = new_args_tail(p, $1, 0, $2, &@1);
4943-
/*% ripper: [$:1, Qnil, $:2] %*/
4944-
}
4945-
| f_any_kwrest opt_f_block_arg
4946-
{
4947-
$$ = new_args_tail(p, 0, $1, $2, &@1);
4948-
/*% ripper: [Qnil, $:1, $:2] %*/
4949-
}
4950-
| f_block_arg
4951-
{
4952-
$$ = new_args_tail(p, 0, 0, $1, &@1);
4953-
/*% ripper: [Qnil, Qnil, $:1] %*/
4954-
}
4957+
block_args_tail : args_tail_basic(primary_value)
49554958
;
49564959

49574960
excessed_comma : ','
@@ -6295,26 +6298,7 @@ f_arglist : f_paren_args
62956298
}
62966299
;
62976300

6298-
args_tail : f_kwarg(arg_value) ',' f_kwrest opt_f_block_arg
6299-
{
6300-
$$ = new_args_tail(p, $1, $3, $4, &@3);
6301-
/*% ripper: [$:1, $:3, $:4] %*/
6302-
}
6303-
| f_kwarg(arg_value) opt_f_block_arg
6304-
{
6305-
$$ = new_args_tail(p, $1, 0, $2, &@1);
6306-
/*% ripper: [$:1, Qnil, $:2] %*/
6307-
}
6308-
| f_any_kwrest opt_f_block_arg
6309-
{
6310-
$$ = new_args_tail(p, 0, $1, $2, &@1);
6311-
/*% ripper: [Qnil, $:1, $:2] %*/
6312-
}
6313-
| f_block_arg
6314-
{
6315-
$$ = new_args_tail(p, 0, 0, $1, &@1);
6316-
/*% ripper: [Qnil, Qnil, $:1] %*/
6317-
}
6301+
args_tail : args_tail_basic(arg_value)
63186302
| args_forward
63196303
{
63206304
ID fwd = $args_forward;

0 commit comments

Comments
 (0)