Simplified duplicate code

This commit is contained in:
Nobuyoshi Nakada 2019-09-25 10:14:36 +09:00
parent c99fb0f41e
commit e663299a5f
No known key found for this signature in database
GPG Key ID: 4BC7D6DF58D8DF60

22
parse.y
View File

@ -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 '\\':