From 4fa68953fbf1e2cec9b8650a5a25b4b6bfe0e331 Mon Sep 17 00:00:00 2001 From: ydah Date: Thu, 2 Jan 2025 01:11:23 +0900 Subject: [PATCH] Use user defined parameterizing rules `asgn(lhs, rhs)` --- parse.y | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/parse.y b/parse.y index 3054313062..ff9a1ed2d6 100644 --- a/parse.y +++ b/parse.y @@ -2919,6 +2919,14 @@ rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary) /* * parameterizing rules */ +%rule asgn(lhs, rhs) + : lhs '=' lex_ctxt rhs + { + $$ = node_assign(p, (NODE *)$lhs, $rhs, $lex_ctxt, &@$); + /*% ripper: assign!($:1, $:4) %*/ + } + ; + %rule backref_with(value) : backref tOP_ASGN lex_ctxt value { @@ -3252,11 +3260,7 @@ stmt : keyword_alias fitem {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);} fitem $$ = node_assign(p, (NODE *)$1, $4, $3, &@$); /*% ripper: massign!($:1, $:4) %*/ } - | lhs '=' lex_ctxt mrhs - { - $$ = node_assign(p, $1, $4, $3, &@$); - /*% ripper: assign!($:1, $:4) %*/ - } + | asgn(lhs, mrhs) | mlhs '=' lex_ctxt mrhs_arg modifier_rescue after_rescue stmt[resbody] { @@ -3281,11 +3285,7 @@ stmt : keyword_alias fitem {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);} fitem } ; -command_asgn : lhs '=' lex_ctxt command_rhs - { - $$ = node_assign(p, $1, $4, $3, &@$); - /*% ripper: assign!($:1, $:4) %*/ - } +command_asgn : asgn(lhs, command_rhs) | var_lhs tOP_ASGN lex_ctxt command_rhs { $$ = new_op_assign(p, $1, $2, $4, $3, &@$); @@ -3852,11 +3852,7 @@ reswords : keyword__LINE__ | keyword__FILE__ | keyword__ENCODING__ | keyword_while | keyword_until ; -arg : lhs '=' lex_ctxt arg_rhs - { - $$ = node_assign(p, $1, $4, $3, &@$); - /*% ripper: assign!($:1, $:4) %*/ - } +arg : asgn(lhs, arg_rhs) | var_lhs tOP_ASGN lex_ctxt arg_rhs { $$ = new_op_assign(p, $1, $2, $4, $3, &@$);