bc: shrink zdc_parse_expr()
function old new delta zdc_parse_expr 656 653 -3 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
07597cd35d
commit
a199cc95b7
@ -4947,24 +4947,29 @@ static BC_STATUS zdc_parse_token(BcParse *p, BcLexType t, uint8_t flags)
|
|||||||
|
|
||||||
static BC_STATUS zdc_parse_expr(BcParse *p, uint8_t flags)
|
static BC_STATUS zdc_parse_expr(BcParse *p, uint8_t flags)
|
||||||
{
|
{
|
||||||
BcStatus s = BC_STATUS_SUCCESS;
|
|
||||||
BcInst inst;
|
|
||||||
BcLexType t;
|
BcLexType t;
|
||||||
|
|
||||||
for (t = p->l.t.t; !s && t != BC_LEX_EOF; t = p->l.t.t) {
|
for (;;) {
|
||||||
inst = dc_parse_insts[t];
|
BcInst inst;
|
||||||
|
BcStatus s;
|
||||||
|
|
||||||
|
t = p->l.t.t;
|
||||||
|
if (t == BC_LEX_EOF) break;
|
||||||
|
|
||||||
|
inst = dc_parse_insts[t];
|
||||||
if (inst != BC_INST_INVALID) {
|
if (inst != BC_INST_INVALID) {
|
||||||
bc_parse_push(p, inst);
|
bc_parse_push(p, inst);
|
||||||
s = zbc_lex_next(&p->l);
|
s = zbc_lex_next(&p->l);
|
||||||
} else
|
} else {
|
||||||
s = zdc_parse_token(p, t, flags);
|
s = zdc_parse_token(p, t, flags);
|
||||||
|
}
|
||||||
|
if (s) RETURN_STATUS(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!s && p->l.t.t == BC_LEX_EOF && (flags & BC_PARSE_NOCALL))
|
if (flags & BC_PARSE_NOCALL)
|
||||||
bc_parse_push(p, BC_INST_POP_EXEC);
|
bc_parse_push(p, BC_INST_POP_EXEC);
|
||||||
|
|
||||||
RETURN_STATUS(s);
|
RETURN_STATUS(BC_STATUS_SUCCESS);
|
||||||
}
|
}
|
||||||
#define zdc_parse_expr(...) (zdc_parse_expr(__VA_ARGS__) COMMA_SUCCESS)
|
#define zdc_parse_expr(...) (zdc_parse_expr(__VA_ARGS__) COMMA_SUCCESS)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user