From dd7deef338d843c8d866ddc279854068b39bfeb9 Mon Sep 17 00:00:00 2001 From: ydah Date: Fri, 14 Mar 2025 14:32:22 +0900 Subject: [PATCH] Organize block_param_def by defining opt_block_param for non-terminal symbols --- parse.y | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/parse.y b/parse.y index f519eb6e2d..8f49d1a9c5 100644 --- a/parse.y +++ b/parse.y @@ -2782,7 +2782,7 @@ rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary) %type f_marg f_rest_marg %type f_margs %type assoc_list assocs assoc undef_list backref string_dvar for_var -%type block_param opt_block_param block_param_def +%type block_param opt_block_param_def block_param_def opt_block_param %type do bv_decls opt_bv_decl bvar %type lambda brace_body do_body %type lambda_body @@ -5038,21 +5038,14 @@ block_param : f_arg ',' f_optarg(primary_value) ',' f_rest_arg opt_args_tail(blo } ; -opt_block_param : none - | block_param_def - { - p->command_start = TRUE; - } - ; +opt_block_param_def : none + | block_param_def + { + p->command_start = TRUE; + } + ; -block_param_def : '|' opt_bv_decl '|' - { - p->max_numparam = ORDINAL_PARAM; - p->ctxt.in_argdef = 0; - $$ = 0; - /*% ripper: block_var!(params!(Qnil,Qnil,Qnil,Qnil,Qnil,Qnil,Qnil), $:2) %*/ - } - | '|' block_param opt_bv_decl '|' +block_param_def : '|' opt_block_param opt_bv_decl '|' { p->max_numparam = ORDINAL_PARAM; p->ctxt.in_argdef = 0; @@ -5061,6 +5054,13 @@ block_param_def : '|' opt_bv_decl '|' } ; +opt_block_param : /* none */ + { + $$ = 0; + /*% ripper: params!(Qnil,Qnil,Qnil,Qnil,Qnil,Qnil,Qnil) %*/ + } + | block_param + ; opt_bv_decl : '\n'? { @@ -5298,7 +5298,7 @@ brace_block : '{' brace_body '}' brace_body : {$$ = dyna_push(p);}[dyna] max_numparam numparam it_id allow_exits - opt_block_param[args] compstmt(stmts) + opt_block_param_def[args] compstmt(stmts) { int max_numparam = p->max_numparam; ID it_id = p->it_id; @@ -5318,7 +5318,7 @@ do_body : { CMDARG_PUSH(0); }[dyna] max_numparam numparam it_id allow_exits - opt_block_param[args] bodystmt + opt_block_param_def[args] bodystmt { int max_numparam = p->max_numparam; ID it_id = p->it_id;