dc: fix '?'
function old new delta zdc_parse_expr 470 479 +9 zxc_vm_process 839 814 -25 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/1 up/down: 9/-25) Total: -16 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
377cc97b19
commit
6842c6062a
@ -5054,6 +5054,9 @@ static BC_STATUS zdc_parse_expr(void)
|
|||||||
BcParse *p = &G.prs;
|
BcParse *p = &G.prs;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (p->lex == XC_LEX_NLINE)
|
||||||
|
RETURN_STATUS(zxc_lex_next());
|
||||||
|
|
||||||
i = (int)p->lex - (int)XC_LEX_OP_POWER;
|
i = (int)p->lex - (int)XC_LEX_OP_POWER;
|
||||||
if (i >= 0) {
|
if (i >= 0) {
|
||||||
BcInst inst = dc_LEX_to_INST[i];
|
BcInst inst = dc_LEX_to_INST[i];
|
||||||
@ -6766,14 +6769,6 @@ static BC_STATUS zxc_vm_process(const char *text)
|
|||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
#if ENABLE_DC
|
#if ENABLE_DC
|
||||||
// Most of dc parsing assumes all whitespace,
|
|
||||||
// including '\n', is eaten.
|
|
||||||
while (G.prs.lex == XC_LEX_NLINE) {
|
|
||||||
s = zxc_lex_next();
|
|
||||||
if (s) goto err;
|
|
||||||
if (G.prs.lex == XC_LEX_EOF)
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
s = zdc_parse_expr();
|
s = zdc_parse_expr();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -6836,7 +6831,7 @@ static BC_STATUS zxc_vm_process(const char *text)
|
|||||||
bc_vec_pop_all(&f->code);
|
bc_vec_pop_all(&f->code);
|
||||||
ip->inst_idx = 0;
|
ip->inst_idx = 0;
|
||||||
}
|
}
|
||||||
IF_DC(done:)
|
|
||||||
dbg_lex_done("%s:%d done", __func__, __LINE__);
|
dbg_lex_done("%s:%d done", __func__, __LINE__);
|
||||||
RETURN_STATUS(s);
|
RETURN_STATUS(s);
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,11 @@ testing "dc complex without spaces (multiple args)" \
|
|||||||
"16\n" \
|
"16\n" \
|
||||||
"" ""
|
"" ""
|
||||||
|
|
||||||
|
testing "dc read" \
|
||||||
|
"dc -finput" \
|
||||||
|
"2\n9\n1\n" \
|
||||||
|
"1?2\nf" "9\n"
|
||||||
|
|
||||||
optional FEATURE_DC_BIG
|
optional FEATURE_DC_BIG
|
||||||
# All tests below depend on FEATURE_DC_BIG
|
# All tests below depend on FEATURE_DC_BIG
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user