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.
parent bee34fb9
...@@ -1318,6 +1318,25 @@ stmt : keyword_alias fsym {p->lstate = EXPR_FNAME;} fsym ...@@ -1318,6 +1318,25 @@ stmt : keyword_alias fsym {p->lstate = EXPR_FNAME;} fsym
{ {
$$ = new_masgn(p, $1, $3); $$ = 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 | var_lhs tOP_ASGN command_rhs
{ {
$$ = new_op_asgn(p, $1, $2, $3); $$ = new_op_asgn(p, $1, $2, $3);
...@@ -1348,25 +1367,6 @@ stmt : keyword_alias fsym {p->lstate = EXPR_FNAME;} fsym ...@@ -1348,25 +1367,6 @@ stmt : keyword_alias fsym {p->lstate = EXPR_FNAME;} fsym
backref_error(p, $1); backref_error(p, $1);
$$ = new_begin(p, 0); $$ = 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 command_rhs : command_call %prec tOP_ASGN
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment