From bdd7e2bc8caf737143c18270abf7325c3540b7b6 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sat, 13 Aug 2016 13:56:14 +0900 Subject: parse.y: fix chained assignments fix syntax errors with chained assignment with op assign. reported [Bug:12669] in bugs.ruby-lang.org fixed in CRuby 2.4. --- mrbgems/mruby-compiler/core/parse.y | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index ec3d10682..c8fc79297 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -1318,6 +1318,25 @@ stmt : keyword_alias fsym {p->lstate = EXPR_FNAME;} fsym { $$ = new_masgn(p, $1, $3); } + | lhs '=' mrhs + { + $$ = new_asgn(p, $1, new_array(p, $3)); + } + | mlhs '=' arg_value + { + $$ = new_masgn(p, $1, $3); + } + | mlhs '=' mrhs + { + $$ = new_masgn(p, $1, new_array(p, $3)); + } + | expr + ; + +command_asgn : lhs '=' command_rhs + { + $$ = new_asgn(p, $1, $3); + } | var_lhs tOP_ASGN command_rhs { $$ = new_op_asgn(p, $1, $2, $3); @@ -1348,25 +1367,6 @@ stmt : keyword_alias fsym {p->lstate = EXPR_FNAME;} fsym backref_error(p, $1); $$ = new_begin(p, 0); } - | lhs '=' mrhs - { - $$ = new_asgn(p, $1, new_array(p, $3)); - } - | mlhs '=' arg_value - { - $$ = new_masgn(p, $1, $3); - } - | mlhs '=' mrhs - { - $$ = new_masgn(p, $1, new_array(p, $3)); - } - | expr - ; - -command_asgn : lhs '=' command_rhs - { - $$ = new_asgn(p, $1, $3); - } ; command_rhs : command_call %prec tOP_ASGN -- cgit v1.2.3