From 69c8feb253d7cd2f7fd6ec02763a35747f194bc4 Mon Sep 17 00:00:00 2001 From: mame Date: Thu, 11 Jan 2018 13:42:18 +0000 Subject: parse.y: disentangle the lexer handling of ')', ']', and '}' git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61769 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- parse.y | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/parse.y b/parse.y index 6bd46b1108..8ffb217fa0 100644 --- a/parse.y +++ b/parse.y @@ -8488,18 +8488,25 @@ parser_yylex(struct parser_params *parser) return parse_numeric(parser, c); case ')': + COND_LEXPOP(); + CMDARG_LEXPOP(); + SET_LEX_STATE(EXPR_ENDFN); + paren_nest--; + return c; + case ']': + COND_LEXPOP(); + CMDARG_LEXPOP(); + SET_LEX_STATE(EXPR_END); + paren_nest--; + return c; + case '}': COND_LEXPOP(); CMDARG_LEXPOP(); - if (c == ')') - SET_LEX_STATE(EXPR_ENDFN); - else - SET_LEX_STATE(EXPR_END); - if (c == '}') { - if (!brace_nest--) c = tSTRING_DEND; - } - if (c != tSTRING_DEND) paren_nest--; + SET_LEX_STATE(EXPR_END); + if (!brace_nest--) return tSTRING_DEND; + paren_nest--; return c; case ':': -- cgit v1.2.3