diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-22 16:40:38 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-22 16:41:23 +0100 |
commit | 5daa1a0adfe08bae588e5293686a84ab3649a2aa (patch) | |
tree | e00f18273daf1216bef62f2ea440b8f877f97f46 /miscutils | |
parent | 7c1c9dc86bf7d7bc91e906473c0f81a666113402 (diff) | |
download | busybox-w32-5daa1a0adfe08bae588e5293686a84ab3649a2aa.tar.gz busybox-w32-5daa1a0adfe08bae588e5293686a84ab3649a2aa.tar.bz2 busybox-w32-5daa1a0adfe08bae588e5293686a84ab3649a2aa.zip |
bc: move zbc_lex_next() out of zdc_parse_string() and zdc_parse_mem()
function old new delta
zdc_parse_mem 99 93 -6
zdc_parse_expr 586 569 -17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-23) Total: -23 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'miscutils')
-rw-r--r-- | miscutils/bc.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c index bb83e0a14..5d5449efa 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c | |||
@@ -4809,7 +4809,7 @@ static BC_STATUS zdc_parse_register(BcParse *p) | |||
4809 | } | 4809 | } |
4810 | #define zdc_parse_register(...) (zdc_parse_register(__VA_ARGS__) COMMA_SUCCESS) | 4810 | #define zdc_parse_register(...) (zdc_parse_register(__VA_ARGS__) COMMA_SUCCESS) |
4811 | 4811 | ||
4812 | static BC_STATUS zdc_parse_string(BcParse *p) | 4812 | static void dc_parse_string(BcParse *p) |
4813 | { | 4813 | { |
4814 | char *str; | 4814 | char *str; |
4815 | size_t len = G.prog.strs.len; | 4815 | size_t len = G.prog.strs.len; |
@@ -4826,10 +4826,7 @@ static BC_STATUS zdc_parse_string(BcParse *p) | |||
4826 | p->func = bc_program_func(p->fidx); | 4826 | p->func = bc_program_func(p->fidx); |
4827 | 4827 | ||
4828 | dbg_lex_done("%s:%d done", __func__, __LINE__); | 4828 | dbg_lex_done("%s:%d done", __func__, __LINE__); |
4829 | |||
4830 | RETURN_STATUS(zbc_lex_next(&p->l)); | ||
4831 | } | 4829 | } |
4832 | #define zdc_parse_string(...) (zdc_parse_string(__VA_ARGS__) COMMA_SUCCESS) | ||
4833 | 4830 | ||
4834 | static BC_STATUS zdc_parse_mem(BcParse *p, uint8_t inst, bool name, bool store) | 4831 | static BC_STATUS zdc_parse_mem(BcParse *p, uint8_t inst, bool name, bool store) |
4835 | { | 4832 | { |
@@ -4847,7 +4844,7 @@ static BC_STATUS zdc_parse_mem(BcParse *p, uint8_t inst, bool name, bool store) | |||
4847 | bc_parse_push(p, BC_INST_POP); | 4844 | bc_parse_push(p, BC_INST_POP); |
4848 | } | 4845 | } |
4849 | 4846 | ||
4850 | RETURN_STATUS(zbc_lex_next(&p->l)); | 4847 | RETURN_STATUS(BC_STATUS_SUCCESS); |
4851 | } | 4848 | } |
4852 | #define zdc_parse_mem(...) (zdc_parse_mem(__VA_ARGS__) COMMA_SUCCESS) | 4849 | #define zdc_parse_mem(...) (zdc_parse_mem(__VA_ARGS__) COMMA_SUCCESS) |
4853 | 4850 | ||
@@ -4877,11 +4874,13 @@ static BC_STATUS zdc_parse_cond(BcParse *p, uint8_t inst) | |||
4877 | 4874 | ||
4878 | static BC_STATUS zdc_parse_token(BcParse *p, BcLexType t) | 4875 | static BC_STATUS zdc_parse_token(BcParse *p, BcLexType t) |
4879 | { | 4876 | { |
4880 | BcStatus s = BC_STATUS_SUCCESS; | 4877 | BcStatus s; |
4881 | uint8_t inst; | 4878 | uint8_t inst; |
4882 | bool assign, get_token = false; | 4879 | bool assign, get_token; |
4883 | 4880 | ||
4884 | dbg_lex_enter("%s:%d entered", __func__, __LINE__); | 4881 | dbg_lex_enter("%s:%d entered", __func__, __LINE__); |
4882 | s = BC_STATUS_SUCCESS; | ||
4883 | get_token = true; | ||
4885 | switch (t) { | 4884 | switch (t) { |
4886 | case BC_LEX_OP_REL_EQ: | 4885 | case BC_LEX_OP_REL_EQ: |
4887 | case BC_LEX_OP_REL_LE: | 4886 | case BC_LEX_OP_REL_LE: |
@@ -4890,6 +4889,7 @@ static BC_STATUS zdc_parse_token(BcParse *p, BcLexType t) | |||
4890 | case BC_LEX_OP_REL_LT: | 4889 | case BC_LEX_OP_REL_LT: |
4891 | case BC_LEX_OP_REL_GT: | 4890 | case BC_LEX_OP_REL_GT: |
4892 | s = zdc_parse_cond(p, t - BC_LEX_OP_REL_EQ + BC_INST_REL_EQ); | 4891 | s = zdc_parse_cond(p, t - BC_LEX_OP_REL_EQ + BC_INST_REL_EQ); |
4892 | get_token = false; | ||
4893 | break; | 4893 | break; |
4894 | case BC_LEX_SCOLON: | 4894 | case BC_LEX_SCOLON: |
4895 | case BC_LEX_COLON: | 4895 | case BC_LEX_COLON: |
@@ -4897,7 +4897,7 @@ static BC_STATUS zdc_parse_token(BcParse *p, BcLexType t) | |||
4897 | break; | 4897 | break; |
4898 | case BC_LEX_STR: | 4898 | case BC_LEX_STR: |
4899 | dbg_lex("%s:%d LEX_STR", __func__, __LINE__); | 4899 | dbg_lex("%s:%d LEX_STR", __func__, __LINE__); |
4900 | s = zdc_parse_string(p); | 4900 | dc_parse_string(p); |
4901 | break; | 4901 | break; |
4902 | case BC_LEX_NEG: | 4902 | case BC_LEX_NEG: |
4903 | case BC_LEX_NUMBER: | 4903 | case BC_LEX_NUMBER: |
@@ -4910,11 +4910,9 @@ static BC_STATUS zdc_parse_token(BcParse *p, BcLexType t) | |||
4910 | } | 4910 | } |
4911 | bc_parse_pushNUM(p); | 4911 | bc_parse_pushNUM(p); |
4912 | if (t == BC_LEX_NEG) bc_parse_push(p, BC_INST_NEG); | 4912 | if (t == BC_LEX_NEG) bc_parse_push(p, BC_INST_NEG); |
4913 | get_token = true; | ||
4914 | break; | 4913 | break; |
4915 | case BC_LEX_KEY_READ: | 4914 | case BC_LEX_KEY_READ: |
4916 | bc_parse_push(p, BC_INST_READ); | 4915 | bc_parse_push(p, BC_INST_READ); |
4917 | get_token = true; | ||
4918 | break; | 4916 | break; |
4919 | case BC_LEX_OP_ASSIGN: | 4917 | case BC_LEX_OP_ASSIGN: |
4920 | case BC_LEX_STORE_PUSH: | 4918 | case BC_LEX_STORE_PUSH: |
@@ -4934,9 +4932,8 @@ static BC_STATUS zdc_parse_token(BcParse *p, BcLexType t) | |||
4934 | s = zdc_parse_mem(p, inst, false, true); | 4932 | s = zdc_parse_mem(p, inst, false, true); |
4935 | break; | 4933 | break; |
4936 | default: | 4934 | default: |
4937 | s = bc_error_bad_token(); | 4935 | dbg_lex_done("%s:%d done (bad token)", __func__, __LINE__); |
4938 | get_token = true; | 4936 | RETURN_STATUS(bc_error_bad_token()); |
4939 | break; | ||
4940 | } | 4937 | } |
4941 | 4938 | ||
4942 | if (!s && get_token) s = zbc_lex_next(&p->l); | 4939 | if (!s && get_token) s = zbc_lex_next(&p->l); |