diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-09-25 10:14:36 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-09-25 10:39:49 +0900 |
commit | e663299a5f7a980aae39f3e87cec064ae19a870c (patch) | |
tree | 8270dea6479350522af362d7c34a114023766315 | |
parent | c99fb0f41e7bb88a4d5891e86bd54def2fca1de4 (diff) |
Simplified duplicate code
-rw-r--r-- | parse.y | 22 |
1 files changed, 11 insertions, 11 deletions
@@ -9311,15 +9311,9 @@ parser_yylex(struct parser_params *p) case '{': ++p->lex.brace_nest; - if (lambda_beginning_p()) { - SET_LEX_STATE(EXPR_BEG); - COND_PUSH(0); - CMDARG_PUSH(0); - p->lex.paren_nest++; - return tLAMBEG; - } - p->lex.paren_nest++; - if (IS_lex_state(EXPR_LABELED)) + if (lambda_beginning_p()) + c = tLAMBEG; + else if (IS_lex_state(EXPR_LABELED)) c = tLBRACE; /* hash */ else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN)) c = '{'; /* block (primary) */ @@ -9327,10 +9321,16 @@ parser_yylex(struct parser_params *p) c = tLBRACE_ARG; /* block (expr) */ else c = tLBRACE; /* hash */ + if (c != tLBRACE) { + p->command_start = TRUE; + SET_LEX_STATE(EXPR_BEG); + } + else { + SET_LEX_STATE(EXPR_BEG|EXPR_LABEL); + } + ++p->lex.paren_nest; /* after lambda_beginning_p() */ COND_PUSH(0); CMDARG_PUSH(0); - SET_LEX_STATE(c != tLBRACE ? EXPR_BEG : EXPR_BEG|EXPR_LABEL); - if (c != tLBRACE) p->command_start = TRUE; return c; case '\\': |