diff options
Diffstat (limited to 'mrbgems/mruby-compiler/core/parse.y')
| -rw-r--r-- | mrbgems/mruby-compiler/core/parse.y | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 299675091..31f983149 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -1442,7 +1442,7 @@ heredoc_end(parser_state *p) %type <nd> singleton string string_fragment string_rep string_interp xstring regexp %type <nd> literal numeric cpath symbol defn_head defs_head -%type <nd> top_compstmt top_stmts top_stmt rassign +%type <nd> top_compstmt top_stmts top_stmt %type <nd> bodystmt compstmt stmts stmt expr arg primary command command_call method_call %type <nd> expr_value arg_rhs primary_value %type <nd> if_tail opt_else case_body cases opt_rescue exc_list exc_var opt_ensure @@ -1685,28 +1685,14 @@ stmt : keyword_alias fsym {p->lstate = EXPR_FNAME;} fsym { $$ = new_masgn(p, $1, new_array(p, $3)); } - | rassign - | expr - ; - -rassign : arg tASSOC lhs - { - void_expr_error(p, $1); - $$ = new_asgn(p, $3, $1); - } - | arg tASSOC mlhs + | arg tASSOC tIDENTIFIER { + node *lhs = new_lvar(p, $3); void_expr_error(p, $1); - $$ = new_masgn(p, $3, $1); - } - | rassign tASSOC lhs - { - $$ = new_asgn(p, $3, $1); - } - | rassign tASSOC mlhs - { - $$ = new_masgn(p, $3, $1); + assignable(p, lhs); + $$ = new_asgn(p, lhs, $1); } + | expr ; command_asgn : lhs '=' command_rhs |
