diff options
Diffstat (limited to 'miscutils')
| -rw-r--r-- | miscutils/bc.c | 168 |
1 files changed, 84 insertions, 84 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c index 7a69a0816..b4e9e6cb1 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c | |||
| @@ -391,8 +391,8 @@ typedef struct BcInstPtr { | |||
| 391 | 391 | ||
| 392 | // BC_LEX_NEG is not used in lexing; it is only for parsing. | 392 | // BC_LEX_NEG is not used in lexing; it is only for parsing. |
| 393 | typedef enum BcLexType { | 393 | typedef enum BcLexType { |
| 394 | BC_LEX_EOF, | 394 | XC_LEX_EOF, |
| 395 | BC_LEX_INVALID, | 395 | XC_LEX_INVALID, |
| 396 | 396 | ||
| 397 | BC_LEX_OP_INC, | 397 | BC_LEX_OP_INC, |
| 398 | BC_LEX_OP_DEC, | 398 | BC_LEX_OP_DEC, |
| @@ -467,33 +467,33 @@ typedef enum BcLexType { | |||
| 467 | BC_LEX_KEY_WHILE, | 467 | BC_LEX_KEY_WHILE, |
| 468 | 468 | ||
| 469 | #if ENABLE_DC | 469 | #if ENABLE_DC |
| 470 | BC_LEX_EQ_NO_REG, | 470 | DC_LEX_EQ_NO_REG, |
| 471 | BC_LEX_OP_MODEXP, | 471 | DC_LEX_OP_MODEXP, |
| 472 | BC_LEX_OP_DIVMOD, | 472 | DC_LEX_OP_DIVMOD, |
| 473 | 473 | ||
| 474 | BC_LEX_COLON, | 474 | DC_LEX_COLON, |
| 475 | BC_LEX_ELSE, | 475 | DC_LEX_ELSE, |
| 476 | BC_LEX_EXECUTE, | 476 | DC_LEX_EXECUTE, |
| 477 | BC_LEX_PRINT_STACK, | 477 | DC_LEX_PRINT_STACK, |
| 478 | BC_LEX_CLEAR_STACK, | 478 | DC_LEX_CLEAR_STACK, |
| 479 | BC_LEX_STACK_LEVEL, | 479 | DC_LEX_STACK_LEVEL, |
| 480 | BC_LEX_DUPLICATE, | 480 | DC_LEX_DUPLICATE, |
| 481 | BC_LEX_SWAP, | 481 | DC_LEX_SWAP, |
| 482 | BC_LEX_POP, | 482 | DC_LEX_POP, |
| 483 | 483 | ||
| 484 | BC_LEX_ASCIIFY, | 484 | DC_LEX_ASCIIFY, |
| 485 | BC_LEX_PRINT_STREAM, | 485 | DC_LEX_PRINT_STREAM, |
| 486 | 486 | ||
| 487 | // code uses "t - BC_LEX_STORE_IBASE + XC_INST_IBASE" construct, | 487 | // code uses "t - DC_LEX_STORE_IBASE + XC_INST_IBASE" construct, |
| 488 | BC_LEX_STORE_IBASE, // relative order should match for: XC_INST_IBASE | 488 | DC_LEX_STORE_IBASE, // relative order should match for: XC_INST_IBASE |
| 489 | BC_LEX_STORE_OBASE, // relative order should match for: XC_INST_OBASE | 489 | DC_LEX_STORE_OBASE, // relative order should match for: XC_INST_OBASE |
| 490 | BC_LEX_STORE_SCALE, // relative order should match for: XC_INST_SCALE | 490 | DC_LEX_STORE_SCALE, // relative order should match for: XC_INST_SCALE |
| 491 | BC_LEX_LOAD, | 491 | DC_LEX_LOAD, |
| 492 | BC_LEX_LOAD_POP, | 492 | DC_LEX_LOAD_POP, |
| 493 | BC_LEX_STORE_PUSH, | 493 | DC_LEX_STORE_PUSH, |
| 494 | BC_LEX_PRINT_POP, | 494 | DC_LEX_PRINT_POP, |
| 495 | BC_LEX_NQUIT, | 495 | DC_LEX_NQUIT, |
| 496 | BC_LEX_SCALE_FACTOR, | 496 | DC_LEX_SCALE_FACTOR, |
| 497 | #endif | 497 | #endif |
| 498 | } BcLexType; | 498 | } BcLexType; |
| 499 | // must match order of BC_LEX_KEY_foo etc above | 499 | // must match order of BC_LEX_KEY_foo etc above |
| @@ -616,44 +616,44 @@ static const //BcLexType - should be this type | |||
| 616 | uint8_t | 616 | uint8_t |
| 617 | dc_char_to_LEX[] = { | 617 | dc_char_to_LEX[] = { |
| 618 | /* %&'( */ | 618 | /* %&'( */ |
| 619 | BC_LEX_OP_MODULUS, BC_LEX_INVALID, BC_LEX_INVALID, BC_LEX_LPAREN, | 619 | BC_LEX_OP_MODULUS, XC_LEX_INVALID, XC_LEX_INVALID, BC_LEX_LPAREN, |
| 620 | /* )*+, */ | 620 | /* )*+, */ |
| 621 | BC_LEX_INVALID, BC_LEX_OP_MULTIPLY, BC_LEX_OP_PLUS, BC_LEX_INVALID, | 621 | XC_LEX_INVALID, BC_LEX_OP_MULTIPLY, BC_LEX_OP_PLUS, XC_LEX_INVALID, |
| 622 | /* -./ */ | 622 | /* -./ */ |
| 623 | BC_LEX_OP_MINUS, BC_LEX_INVALID, BC_LEX_OP_DIVIDE, | 623 | BC_LEX_OP_MINUS, XC_LEX_INVALID, BC_LEX_OP_DIVIDE, |
| 624 | /* 0123456789 */ | 624 | /* 0123456789 */ |
| 625 | BC_LEX_INVALID, BC_LEX_INVALID, BC_LEX_INVALID, BC_LEX_INVALID, | 625 | XC_LEX_INVALID, XC_LEX_INVALID, XC_LEX_INVALID, XC_LEX_INVALID, |
| 626 | BC_LEX_INVALID, BC_LEX_INVALID, BC_LEX_INVALID, BC_LEX_INVALID, | 626 | XC_LEX_INVALID, XC_LEX_INVALID, XC_LEX_INVALID, XC_LEX_INVALID, |
| 627 | BC_LEX_INVALID, BC_LEX_INVALID, | 627 | XC_LEX_INVALID, XC_LEX_INVALID, |
| 628 | /* :;<=>?@ */ | 628 | /* :;<=>?@ */ |
| 629 | BC_LEX_COLON, BC_LEX_SCOLON, BC_LEX_OP_REL_GT, BC_LEX_OP_REL_EQ, | 629 | DC_LEX_COLON, BC_LEX_SCOLON, BC_LEX_OP_REL_GT, BC_LEX_OP_REL_EQ, |
| 630 | BC_LEX_OP_REL_LT, BC_LEX_KEY_READ, BC_LEX_INVALID, | 630 | BC_LEX_OP_REL_LT, BC_LEX_KEY_READ, XC_LEX_INVALID, |
| 631 | /* ABCDEFGH */ | 631 | /* ABCDEFGH */ |
| 632 | BC_LEX_INVALID, BC_LEX_INVALID, BC_LEX_INVALID, BC_LEX_INVALID, | 632 | XC_LEX_INVALID, XC_LEX_INVALID, XC_LEX_INVALID, XC_LEX_INVALID, |
| 633 | BC_LEX_INVALID, BC_LEX_INVALID, BC_LEX_EQ_NO_REG, BC_LEX_INVALID, | 633 | XC_LEX_INVALID, XC_LEX_INVALID, DC_LEX_EQ_NO_REG, XC_LEX_INVALID, |
| 634 | /* IJKLMNOP */ | 634 | /* IJKLMNOP */ |
| 635 | BC_LEX_KEY_IBASE, BC_LEX_INVALID, BC_LEX_KEY_SCALE, BC_LEX_LOAD_POP, | 635 | BC_LEX_KEY_IBASE, XC_LEX_INVALID, BC_LEX_KEY_SCALE, DC_LEX_LOAD_POP, |
| 636 | BC_LEX_INVALID, BC_LEX_OP_BOOL_NOT, BC_LEX_KEY_OBASE, BC_LEX_PRINT_STREAM, | 636 | XC_LEX_INVALID, BC_LEX_OP_BOOL_NOT, BC_LEX_KEY_OBASE, DC_LEX_PRINT_STREAM, |
| 637 | /* QRSTUVWXY */ | 637 | /* QRSTUVWXY */ |
| 638 | BC_LEX_NQUIT, BC_LEX_POP, BC_LEX_STORE_PUSH, BC_LEX_INVALID, BC_LEX_INVALID, | 638 | DC_LEX_NQUIT, DC_LEX_POP, DC_LEX_STORE_PUSH, XC_LEX_INVALID, XC_LEX_INVALID, |
| 639 | BC_LEX_INVALID, BC_LEX_INVALID, BC_LEX_SCALE_FACTOR, BC_LEX_INVALID, | 639 | XC_LEX_INVALID, XC_LEX_INVALID, DC_LEX_SCALE_FACTOR, XC_LEX_INVALID, |
| 640 | /* Z[\] */ | 640 | /* Z[\] */ |
| 641 | BC_LEX_KEY_LENGTH, BC_LEX_INVALID, BC_LEX_INVALID, BC_LEX_INVALID, | 641 | BC_LEX_KEY_LENGTH, XC_LEX_INVALID, XC_LEX_INVALID, XC_LEX_INVALID, |
| 642 | /* ^_` */ | 642 | /* ^_` */ |
| 643 | BC_LEX_OP_POWER, BC_LEX_NEG, BC_LEX_INVALID, | 643 | BC_LEX_OP_POWER, BC_LEX_NEG, XC_LEX_INVALID, |
| 644 | /* abcdefgh */ | 644 | /* abcdefgh */ |
| 645 | BC_LEX_ASCIIFY, BC_LEX_INVALID, BC_LEX_CLEAR_STACK, BC_LEX_DUPLICATE, | 645 | DC_LEX_ASCIIFY, XC_LEX_INVALID, DC_LEX_CLEAR_STACK, DC_LEX_DUPLICATE, |
| 646 | BC_LEX_ELSE, BC_LEX_PRINT_STACK, BC_LEX_INVALID, BC_LEX_INVALID, | 646 | DC_LEX_ELSE, DC_LEX_PRINT_STACK, XC_LEX_INVALID, XC_LEX_INVALID, |
| 647 | /* ijklmnop */ | 647 | /* ijklmnop */ |
| 648 | BC_LEX_STORE_IBASE, BC_LEX_INVALID, BC_LEX_STORE_SCALE, BC_LEX_LOAD, | 648 | DC_LEX_STORE_IBASE, XC_LEX_INVALID, DC_LEX_STORE_SCALE, DC_LEX_LOAD, |
| 649 | BC_LEX_INVALID, BC_LEX_PRINT_POP, BC_LEX_STORE_OBASE, BC_LEX_KEY_PRINT, | 649 | XC_LEX_INVALID, DC_LEX_PRINT_POP, DC_LEX_STORE_OBASE, BC_LEX_KEY_PRINT, |
| 650 | /* qrstuvwx */ | 650 | /* qrstuvwx */ |
| 651 | BC_LEX_KEY_QUIT, BC_LEX_SWAP, BC_LEX_OP_ASSIGN, BC_LEX_INVALID, | 651 | BC_LEX_KEY_QUIT, DC_LEX_SWAP, BC_LEX_OP_ASSIGN, XC_LEX_INVALID, |
| 652 | BC_LEX_INVALID, BC_LEX_KEY_SQRT, BC_LEX_INVALID, BC_LEX_EXECUTE, | 652 | XC_LEX_INVALID, BC_LEX_KEY_SQRT, XC_LEX_INVALID, DC_LEX_EXECUTE, |
| 653 | /* yz */ | 653 | /* yz */ |
| 654 | BC_LEX_INVALID, BC_LEX_STACK_LEVEL, | 654 | XC_LEX_INVALID, DC_LEX_STACK_LEVEL, |
| 655 | /* {|}~ */ | 655 | /* {|}~ */ |
| 656 | BC_LEX_LBRACE, BC_LEX_OP_MODEXP, BC_LEX_INVALID, BC_LEX_OP_DIVMOD, | 656 | BC_LEX_LBRACE, DC_LEX_OP_MODEXP, XC_LEX_INVALID, DC_LEX_OP_DIVMOD, |
| 657 | }; | 657 | }; |
| 658 | static const //BcInst - should be this type. Using signed narrow type since DC_INST_INVALID is -1 | 658 | static const //BcInst - should be this type. Using signed narrow type since DC_INST_INVALID is -1 |
| 659 | int8_t | 659 | int8_t |
| @@ -2940,7 +2940,7 @@ static BC_STATUS zbc_lex_next(BcLex *l) | |||
| 2940 | BcStatus s; | 2940 | BcStatus s; |
| 2941 | 2941 | ||
| 2942 | l->t.last = l->t.t; | 2942 | l->t.last = l->t.t; |
| 2943 | if (l->t.last == BC_LEX_EOF) RETURN_STATUS(bc_error("end of file")); | 2943 | if (l->t.last == XC_LEX_EOF) RETURN_STATUS(bc_error("end of file")); |
| 2944 | 2944 | ||
| 2945 | l->line += l->newline; | 2945 | l->line += l->newline; |
| 2946 | G.err_line = l->line; | 2946 | G.err_line = l->line; |
| @@ -2952,7 +2952,7 @@ static BC_STATUS zbc_lex_next(BcLex *l) | |||
| 2952 | s = BC_STATUS_SUCCESS; | 2952 | s = BC_STATUS_SUCCESS; |
| 2953 | do { | 2953 | do { |
| 2954 | if (l->i == l->len) { | 2954 | if (l->i == l->len) { |
| 2955 | l->t.t = BC_LEX_EOF; | 2955 | l->t.t = XC_LEX_EOF; |
| 2956 | if (!G.input_fp) | 2956 | if (!G.input_fp) |
| 2957 | RETURN_STATUS(BC_STATUS_SUCCESS); | 2957 | RETURN_STATUS(BC_STATUS_SUCCESS); |
| 2958 | if (!bc_lex_more_input(l)) { | 2958 | if (!bc_lex_more_input(l)) { |
| @@ -3002,7 +3002,7 @@ static BC_STATUS zbc_lex_text_init(BcLex *l, const char *text) | |||
| 3002 | l->buf = text; | 3002 | l->buf = text; |
| 3003 | l->i = 0; | 3003 | l->i = 0; |
| 3004 | l->len = strlen(text); | 3004 | l->len = strlen(text); |
| 3005 | l->t.t = l->t.last = BC_LEX_INVALID; | 3005 | l->t.t = l->t.last = XC_LEX_INVALID; |
| 3006 | RETURN_STATUS(zbc_lex_next(l)); | 3006 | RETURN_STATUS(zbc_lex_next(l)); |
| 3007 | } | 3007 | } |
| 3008 | #define zbc_lex_text_init(...) (zbc_lex_text_init(__VA_ARGS__) COMMA_SUCCESS) | 3008 | #define zbc_lex_text_init(...) (zbc_lex_text_init(__VA_ARGS__) COMMA_SUCCESS) |
| @@ -3142,7 +3142,7 @@ static BC_STATUS zbc_lex_token(BcLex *l) | |||
| 3142 | switch (c) { | 3142 | switch (c) { |
| 3143 | // case '\0': // probably never reached | 3143 | // case '\0': // probably never reached |
| 3144 | // l->i--; | 3144 | // l->i--; |
| 3145 | // l->t.t = BC_LEX_EOF; | 3145 | // l->t.t = XC_LEX_EOF; |
| 3146 | // l->newline = true; | 3146 | // l->newline = true; |
| 3147 | // break; | 3147 | // break; |
| 3148 | case '\n': | 3148 | case '\n': |
| @@ -3182,7 +3182,7 @@ static BC_STATUS zbc_lex_token(BcLex *l) | |||
| 3182 | ++l->i; | 3182 | ++l->i; |
| 3183 | l->t.t = BC_LEX_OP_BOOL_AND; | 3183 | l->t.t = BC_LEX_OP_BOOL_AND; |
| 3184 | } else { | 3184 | } else { |
| 3185 | l->t.t = BC_LEX_INVALID; | 3185 | l->t.t = XC_LEX_INVALID; |
| 3186 | s = bc_error_bad_character('&'); | 3186 | s = bc_error_bad_character('&'); |
| 3187 | } | 3187 | } |
| 3188 | break; | 3188 | break; |
| @@ -3311,12 +3311,12 @@ static BC_STATUS zbc_lex_token(BcLex *l) | |||
| 3311 | ++l->i; | 3311 | ++l->i; |
| 3312 | l->t.t = BC_LEX_OP_BOOL_OR; | 3312 | l->t.t = BC_LEX_OP_BOOL_OR; |
| 3313 | } else { | 3313 | } else { |
| 3314 | l->t.t = BC_LEX_INVALID; | 3314 | l->t.t = XC_LEX_INVALID; |
| 3315 | s = bc_error_bad_character(c); | 3315 | s = bc_error_bad_character(c); |
| 3316 | } | 3316 | } |
| 3317 | break; | 3317 | break; |
| 3318 | default: | 3318 | default: |
| 3319 | l->t.t = BC_LEX_INVALID; | 3319 | l->t.t = XC_LEX_INVALID; |
| 3320 | s = bc_error_bad_character(c); | 3320 | s = bc_error_bad_character(c); |
| 3321 | break; | 3321 | break; |
| 3322 | } | 3322 | } |
| @@ -3394,9 +3394,9 @@ static BC_STATUS zdc_lex_token(BcLex *l) | |||
| 3394 | uint8_t | 3394 | uint8_t |
| 3395 | dc_lex_regs[] = { | 3395 | dc_lex_regs[] = { |
| 3396 | BC_LEX_OP_REL_EQ, BC_LEX_OP_REL_LE, BC_LEX_OP_REL_GE, BC_LEX_OP_REL_NE, | 3396 | BC_LEX_OP_REL_EQ, BC_LEX_OP_REL_LE, BC_LEX_OP_REL_GE, BC_LEX_OP_REL_NE, |
| 3397 | BC_LEX_OP_REL_LT, BC_LEX_OP_REL_GT, BC_LEX_SCOLON, BC_LEX_COLON, | 3397 | BC_LEX_OP_REL_LT, BC_LEX_OP_REL_GT, BC_LEX_SCOLON, DC_LEX_COLON, |
| 3398 | BC_LEX_ELSE, BC_LEX_LOAD, BC_LEX_LOAD_POP, BC_LEX_OP_ASSIGN, | 3398 | DC_LEX_ELSE, DC_LEX_LOAD, DC_LEX_LOAD_POP, BC_LEX_OP_ASSIGN, |
| 3399 | BC_LEX_STORE_PUSH, | 3399 | DC_LEX_STORE_PUSH, |
| 3400 | }; | 3400 | }; |
| 3401 | 3401 | ||
| 3402 | BcStatus s; | 3402 | BcStatus s; |
| @@ -3411,7 +3411,7 @@ static BC_STATUS zdc_lex_token(BcLex *l) | |||
| 3411 | s = BC_STATUS_SUCCESS; | 3411 | s = BC_STATUS_SUCCESS; |
| 3412 | c = l->buf[l->i++]; | 3412 | c = l->buf[l->i++]; |
| 3413 | if (c >= '%' && c <= '~' | 3413 | if (c >= '%' && c <= '~' |
| 3414 | && (l->t.t = dc_char_to_LEX[c - '%']) != BC_LEX_INVALID | 3414 | && (l->t.t = dc_char_to_LEX[c - '%']) != XC_LEX_INVALID |
| 3415 | ) { | 3415 | ) { |
| 3416 | RETURN_STATUS(s); | 3416 | RETURN_STATUS(s); |
| 3417 | } | 3417 | } |
| @@ -3419,7 +3419,7 @@ static BC_STATUS zdc_lex_token(BcLex *l) | |||
| 3419 | // This is the workhorse of the lexer. | 3419 | // This is the workhorse of the lexer. |
| 3420 | switch (c) { | 3420 | switch (c) { |
| 3421 | // case '\0': // probably never reached | 3421 | // case '\0': // probably never reached |
| 3422 | // l->t.t = BC_LEX_EOF; | 3422 | // l->t.t = XC_LEX_EOF; |
| 3423 | // break; | 3423 | // break; |
| 3424 | case '\n': | 3424 | case '\n': |
| 3425 | // '\n' is BC_LEX_NLINE, not BC_LEX_WHITESPACE | 3425 | // '\n' is BC_LEX_NLINE, not BC_LEX_WHITESPACE |
| @@ -3484,7 +3484,7 @@ static BC_STATUS zdc_lex_token(BcLex *l) | |||
| 3484 | s = zdc_lex_string(l); | 3484 | s = zdc_lex_string(l); |
| 3485 | break; | 3485 | break; |
| 3486 | default: | 3486 | default: |
| 3487 | l->t.t = BC_LEX_INVALID; | 3487 | l->t.t = XC_LEX_INVALID; |
| 3488 | s = bc_error_bad_character(c); | 3488 | s = bc_error_bad_character(c); |
| 3489 | break; | 3489 | break; |
| 3490 | } | 3490 | } |
| @@ -3605,7 +3605,7 @@ static void bc_parse_reset(BcParse *p) | |||
| 3605 | } | 3605 | } |
| 3606 | 3606 | ||
| 3607 | p->l.i = p->l.len; | 3607 | p->l.i = p->l.len; |
| 3608 | p->l.t.t = BC_LEX_EOF; | 3608 | p->l.t.t = XC_LEX_EOF; |
| 3609 | 3609 | ||
| 3610 | IF_BC(bc_vec_pop_all(&p->exits);) | 3610 | IF_BC(bc_vec_pop_all(&p->exits);) |
| 3611 | IF_BC(bc_vec_pop_all(&p->conds);) | 3611 | IF_BC(bc_vec_pop_all(&p->conds);) |
| @@ -4601,7 +4601,7 @@ static BC_STATUS zbc_parse_stmt_or_funcdef(BcParse *p) | |||
| 4601 | BcStatus s; | 4601 | BcStatus s; |
| 4602 | 4602 | ||
| 4603 | dbg_lex_enter("%s:%d entered", __func__, __LINE__); | 4603 | dbg_lex_enter("%s:%d entered", __func__, __LINE__); |
| 4604 | if (p->l.t.t == BC_LEX_EOF) | 4604 | if (p->l.t.t == XC_LEX_EOF) |
| 4605 | s = bc_error("end of file"); | 4605 | s = bc_error("end of file"); |
| 4606 | else if (p->l.t.t == BC_LEX_KEY_DEFINE) { | 4606 | else if (p->l.t.t == BC_LEX_KEY_DEFINE) { |
| 4607 | dbg_lex("%s:%d p->l.t.t:BC_LEX_KEY_DEFINE", __func__, __LINE__); | 4607 | dbg_lex("%s:%d p->l.t.t:BC_LEX_KEY_DEFINE", __func__, __LINE__); |
| @@ -4888,7 +4888,7 @@ static BC_STATUS zdc_parse_cond(BcParse *p, uint8_t inst) | |||
| 4888 | // Note that 'else' part can not be on the next line: | 4888 | // Note that 'else' part can not be on the next line: |
| 4889 | // echo -e '[1p]sa [2p]sb 2 1>a eb' | dc - OK, prints "2" | 4889 | // echo -e '[1p]sa [2p]sb 2 1>a eb' | dc - OK, prints "2" |
| 4890 | // echo -e '[1p]sa [2p]sb 2 1>a\neb' | dc - parse error | 4890 | // echo -e '[1p]sa [2p]sb 2 1>a\neb' | dc - parse error |
| 4891 | if (p->l.t.t == BC_LEX_ELSE) { | 4891 | if (p->l.t.t == DC_LEX_ELSE) { |
| 4892 | s = zdc_parse_register(p); | 4892 | s = zdc_parse_register(p); |
| 4893 | if (s) RETURN_STATUS(s); | 4893 | if (s) RETURN_STATUS(s); |
| 4894 | s = zbc_lex_next(&p->l); | 4894 | s = zbc_lex_next(&p->l); |
| @@ -4921,9 +4921,9 @@ static BC_STATUS zdc_parse_token(BcParse *p, BcLexType t) | |||
| 4921 | get_token = false; | 4921 | get_token = false; |
| 4922 | break; | 4922 | break; |
| 4923 | case BC_LEX_SCOLON: | 4923 | case BC_LEX_SCOLON: |
| 4924 | case BC_LEX_COLON: | 4924 | case DC_LEX_COLON: |
| 4925 | dbg_lex("%s:%d LEX_[S]COLON", __func__, __LINE__); | 4925 | dbg_lex("%s:%d LEX_[S]COLON", __func__, __LINE__); |
| 4926 | s = zdc_parse_mem(p, XC_INST_ARRAY_ELEM, true, t == BC_LEX_COLON); | 4926 | s = zdc_parse_mem(p, XC_INST_ARRAY_ELEM, true, t == DC_LEX_COLON); |
| 4927 | break; | 4927 | break; |
| 4928 | case BC_LEX_STR: | 4928 | case BC_LEX_STR: |
| 4929 | dbg_lex("%s:%d LEX_STR", __func__, __LINE__); | 4929 | dbg_lex("%s:%d LEX_STR", __func__, __LINE__); |
| @@ -4947,23 +4947,23 @@ static BC_STATUS zdc_parse_token(BcParse *p, BcLexType t) | |||
| 4947 | bc_parse_push(p, XC_INST_READ); | 4947 | bc_parse_push(p, XC_INST_READ); |
| 4948 | break; | 4948 | break; |
| 4949 | case BC_LEX_OP_ASSIGN: | 4949 | case BC_LEX_OP_ASSIGN: |
| 4950 | case BC_LEX_STORE_PUSH: | 4950 | case DC_LEX_STORE_PUSH: |
| 4951 | dbg_lex("%s:%d LEX_OP_ASSIGN/STORE_PUSH", __func__, __LINE__); | 4951 | dbg_lex("%s:%d LEX_OP_ASSIGN/STORE_PUSH", __func__, __LINE__); |
| 4952 | assign = t == BC_LEX_OP_ASSIGN; | 4952 | assign = t == BC_LEX_OP_ASSIGN; |
| 4953 | inst = assign ? XC_INST_VAR : DC_INST_PUSH_TO_VAR; | 4953 | inst = assign ? XC_INST_VAR : DC_INST_PUSH_TO_VAR; |
| 4954 | s = zdc_parse_mem(p, inst, true, assign); | 4954 | s = zdc_parse_mem(p, inst, true, assign); |
| 4955 | break; | 4955 | break; |
| 4956 | case BC_LEX_LOAD: | 4956 | case DC_LEX_LOAD: |
| 4957 | case BC_LEX_LOAD_POP: | 4957 | case DC_LEX_LOAD_POP: |
| 4958 | dbg_lex("%s:%d LEX_OP_LOAD[_POP]", __func__, __LINE__); | 4958 | dbg_lex("%s:%d LEX_OP_LOAD[_POP]", __func__, __LINE__); |
| 4959 | inst = t == BC_LEX_LOAD_POP ? DC_INST_PUSH_VAR : DC_INST_LOAD; | 4959 | inst = t == DC_LEX_LOAD_POP ? DC_INST_PUSH_VAR : DC_INST_LOAD; |
| 4960 | s = zdc_parse_mem(p, inst, true, false); | 4960 | s = zdc_parse_mem(p, inst, true, false); |
| 4961 | break; | 4961 | break; |
| 4962 | case BC_LEX_STORE_IBASE: | 4962 | case DC_LEX_STORE_IBASE: |
| 4963 | case BC_LEX_STORE_SCALE: | 4963 | case DC_LEX_STORE_SCALE: |
| 4964 | case BC_LEX_STORE_OBASE: | 4964 | case DC_LEX_STORE_OBASE: |
| 4965 | dbg_lex("%s:%d LEX_OP_STORE_I/OBASE/SCALE", __func__, __LINE__); | 4965 | dbg_lex("%s:%d LEX_OP_STORE_I/OBASE/SCALE", __func__, __LINE__); |
| 4966 | inst = t - BC_LEX_STORE_IBASE + XC_INST_IBASE; | 4966 | inst = t - DC_LEX_STORE_IBASE + XC_INST_IBASE; |
| 4967 | s = zdc_parse_mem(p, inst, false, true); | 4967 | s = zdc_parse_mem(p, inst, false, true); |
| 4968 | break; | 4968 | break; |
| 4969 | default: | 4969 | default: |
| @@ -4997,7 +4997,7 @@ static BC_STATUS zdc_parse_expr(BcParse *p) | |||
| 4997 | static BC_STATUS zdc_parse_exprs_until_eof(BcParse *p) | 4997 | static BC_STATUS zdc_parse_exprs_until_eof(BcParse *p) |
| 4998 | { | 4998 | { |
| 4999 | dbg_lex_enter("%s:%d entered, p->l.t.t:%d", __func__, __LINE__, p->l.t.t); | 4999 | dbg_lex_enter("%s:%d entered, p->l.t.t:%d", __func__, __LINE__, p->l.t.t); |
| 5000 | while (p->l.t.t != BC_LEX_EOF) { | 5000 | while (p->l.t.t != XC_LEX_EOF) { |
| 5001 | BcStatus s = zdc_parse_expr(p); | 5001 | BcStatus s = zdc_parse_expr(p); |
| 5002 | if (s) RETURN_STATUS(s); | 5002 | if (s) RETURN_STATUS(s); |
| 5003 | } | 5003 | } |
| @@ -5229,7 +5229,7 @@ static BC_STATUS zbc_program_read(void) | |||
| 5229 | } | 5229 | } |
| 5230 | if (s) goto exec_err; | 5230 | if (s) goto exec_err; |
| 5231 | 5231 | ||
| 5232 | if (parse.l.t.t != BC_LEX_NLINE && parse.l.t.t != BC_LEX_EOF) { | 5232 | if (parse.l.t.t != BC_LEX_NLINE && parse.l.t.t != XC_LEX_EOF) { |
| 5233 | s = bc_error("bad read() expression"); | 5233 | s = bc_error("bad read() expression"); |
| 5234 | goto exec_err; | 5234 | goto exec_err; |
| 5235 | } | 5235 | } |
| @@ -6361,7 +6361,7 @@ static BC_STATUS zdc_program_execStr(char *code, size_t *bgn, bool cond) | |||
| 6361 | G.input_fp = sv_input_fp; | 6361 | G.input_fp = sv_input_fp; |
| 6362 | 6362 | ||
| 6363 | if (s) goto err; | 6363 | if (s) goto err; |
| 6364 | if (prs.l.t.t != BC_LEX_EOF) { | 6364 | if (prs.l.t.t != XC_LEX_EOF) { |
| 6365 | s = bc_error_bad_expression(); | 6365 | s = bc_error_bad_expression(); |
| 6366 | err: | 6366 | err: |
| 6367 | bc_parse_free(&prs); | 6367 | bc_parse_free(&prs); |
| @@ -6695,7 +6695,7 @@ static BC_STATUS zbc_vm_process(const char *text) | |||
| 6695 | s = zbc_parse_text_init(&G.prs, text); // does the first zbc_lex_next() | 6695 | s = zbc_parse_text_init(&G.prs, text); // does the first zbc_lex_next() |
| 6696 | if (s) RETURN_STATUS(s); | 6696 | if (s) RETURN_STATUS(s); |
| 6697 | 6697 | ||
| 6698 | while (G.prs.l.t.t != BC_LEX_EOF) { | 6698 | while (G.prs.l.t.t != XC_LEX_EOF) { |
| 6699 | BcInstPtr *ip; | 6699 | BcInstPtr *ip; |
| 6700 | BcFunc *f; | 6700 | BcFunc *f; |
| 6701 | 6701 | ||
| @@ -6713,7 +6713,7 @@ static BC_STATUS zbc_vm_process(const char *text) | |||
| 6713 | while (G.prs.l.t.t == BC_LEX_NLINE) { | 6713 | while (G.prs.l.t.t == BC_LEX_NLINE) { |
| 6714 | s = zbc_lex_next(&G.prs.l); | 6714 | s = zbc_lex_next(&G.prs.l); |
| 6715 | if (s) goto err; | 6715 | if (s) goto err; |
| 6716 | if (G.prs.l.t.t == BC_LEX_EOF) | 6716 | if (G.prs.l.t.t == XC_LEX_EOF) |
| 6717 | goto done; | 6717 | goto done; |
| 6718 | } | 6718 | } |
| 6719 | IF_DC(s = zdc_parse_expr(&G.prs)); | 6719 | IF_DC(s = zdc_parse_expr(&G.prs)); |
