From e98823f1896d875b11d0e165d0e8cf9e478a8709 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 25 Sep 2017 20:44:04 +0900 Subject: The `lex_state` after literals should be `EXPR_ENDARG`. --- mrbgems/mruby-compiler/core/parse.y | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 5daae941c..86b38f0c4 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -2853,6 +2853,7 @@ words : tWORDS_BEG tSTRING symbol : basic_symbol { + p->lstate = EXPR_ENDARG; $$ = new_sym(p, $1); } | tSYMBEG tSTRING_BEG string_rep tSTRING @@ -2864,7 +2865,6 @@ symbol : basic_symbol basic_symbol : tSYMBEG sym { - p->lstate = EXPR_END; $$ = $2; } ; @@ -4125,7 +4125,7 @@ parse_string(parser_state *p) } tokfix(p); - p->lstate = EXPR_END; + p->lstate = EXPR_ENDARG; end_strterm(p); if (type & STR_FUNC_XQUOTE) { @@ -4612,7 +4612,7 @@ parser_yylex(parser_state *p) } tokfix(p); pylval.nd = new_str(p, tok(p), toklen(p)); - p->lstate = EXPR_END; + p->lstate = EXPR_ENDARG; return tCHAR; case '&': @@ -4761,7 +4761,7 @@ parser_yylex(parser_state *p) int is_float, seen_point, seen_e, nondigit; is_float = seen_point = seen_e = nondigit = 0; - p->lstate = EXPR_END; + p->lstate = EXPR_ENDARG; newtok(p); if (c == '-' || c == '+') { tokadd(p, c); -- cgit v1.2.3