dc: fix '?'
No binary (build failed)
—
(log yok)
| @@ -5054,6 +5054,9 @@ static BC_STATUS zdc_parse_expr(void) | |
| BcParse *p = &G.prs; | |
| int i; | |
| + | if (p->lex == XC_LEX_NLINE) |
| + | RETURN_STATUS(zxc_lex_next()); |
| + | |
| i = (int)p->lex - (int)XC_LEX_OP_POWER; | |
| if (i >= 0) { | |
| BcInst inst = dc_LEX_to_INST[i]; | |
| @@ -6766,14 +6769,6 @@ static BC_STATUS zxc_vm_process(const char *text) | |
| #endif | |
| } else { | |
| #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(); | |
| #endif | |
| } | |
| @@ -6836,7 +6831,7 @@ static BC_STATUS zxc_vm_process(const char *text) | |
| bc_vec_pop_all(&f->code); | |
| ip->inst_idx = 0; | |
| } | |
| - | IF_DC(done:) |
| + | |
| dbg_lex_done("%s:%d done", __func__, __LINE__); | |
| RETURN_STATUS(s); | |
| } | |
| @@ -41,6 +41,11 @@ testing "dc complex without spaces (multiple args)" \ | |
| "16\n" \ | |
| "" "" | |
| + | testing "dc read" \ |
| + | "dc -finput" \ |
| + | "2\n9\n1\n" \ |
| + | "1?2\nf" "9\n" |
| + | |
| optional FEATURE_DC_BIG | |
| # All tests below depend on FEATURE_DC_BIG | |