aboutsummaryrefslogtreecommitdiff
path: root/miscutils/bc.c
AgeCommit message (Collapse)Author
2019-01-04bc: add a palceholder comment for "void" returnDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-01-04bc: remove extra div/0 test, remove test for string function parameterDenys Vlasenko
function old new delta zbc_program_call 354 332 -22 zxc_program_assign 426 385 -41 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-63) Total: -63 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-01-03bc: fix "...; return}" to work, disallow "return ()"Denys Vlasenko
function old new delta zbc_parse_expr 24 1865 +1841 zbc_parse_stmt_possibly_auto 1425 1413 -12 bc_parse_expr_empty_ok 1843 - -1843 ------------------------------------------------------------------------------ (add/remove: 0/1 grow/shrink: 1/1 up/down: 1841/-1855) Total: -14 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-01-02bc: make error line number also size_t, like everything elseDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-01-02bc: speed up string printing, fix print ""Denys Vlasenko
function old new delta static.esc - 9 +9 zxc_program_print 681 683 +2 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/0 up/down: 11/0) Total: 11 bytes text data bss dec hex filename 979144 485 7296 986925 f0f2d busybox_old 979062 485 7296 986843 f0edb busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-01-01bc: upstream fixesDenys Vlasenko
function old new delta bc_parse_expr_empty_ok 1764 1843 +79 bc_error_at - 62 +62 bc_parse_inst_isLeaf - 30 +30 zbc_func_insert 100 120 +20 bc_error_bad_function_definition - 10 +10 bc_error_bad_assignment - 10 +10 zxc_lex_next 1608 1614 +6 ok_in_expr 30 - -30 zxc_vm_process 874 839 -35 ------------------------------------------------------------------------------ (add/remove: 4/1 grow/shrink: 3/1 up/down: 217/-65) Total: 152 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-01-01bc: in xc_read_line(), check ^C on NUL input bytes tooDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-31bc: remove superfluous assigmentDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-31bc: support ibase up to 36 (GNU compat)Denys Vlasenko
function old new delta zxc_program_num 995 1018 +23 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-31bc: fold xc_lex_more_input() into peek_inbuf()Denys Vlasenko
function old new delta peek_inbuf 69 56 -13 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-30bc: tidying up, no logic changesDenys Vlasenko
function old new delta bc_ops_prec_and_assoc - 25 +25 xc_vm_init 665 663 -2 bc_parse_ops 25 - -25 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 0/1 up/down: 25/-27) Total: -2 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-29bc: simplify representation of 0.5 in sqrt()Denys Vlasenko
function old new delta zxc_program_exec 4012 4149 +137 zdc_program_printStream 144 - -144 ------------------------------------------------------------------------------ (add/remove: 0/1 grow/shrink: 1/0 up/down: 137/-144) Total: -7 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-29bc: remove special-cased assignment to ibase, it works correctly with ↵Denys Vlasenko
general rules function old new delta zxc_program_print 683 681 -2 zxc_program_prep 91 89 -2 zxc_program_copyToVar 300 298 -2 zdc_program_printStream 146 144 -2 zdc_program_execStr 520 518 -2 zdc_program_asciify 370 368 -2 zxc_program_exec 4016 4012 -4 zdc_program_modexp 694 688 -6 zxc_program_num 1020 995 -25 zxc_program_binOpPrep 306 243 -63 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/10 up/down: 0/-110) Total: -110 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-29bc: more fixes for unusual input basesDenys Vlasenko
function old new delta zxc_program_num 990 1020 +30 zxc_lex_number 172 202 +30 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 60/0) Total: 60 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-29bc: fix handling of "digits" above 9Denys Vlasenko
function old new delta zxc_lex_next 1573 1608 +35 xc_parse_pushIndex 58 56 -2 xc_program_index 71 63 -8 zxc_program_num 1022 990 -32 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/3 up/down: 35/-42) Total: -7 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-28bc: bc enables FEATURE_DC_BIG, for correct dc testsuite operationDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-28bc: rename config optionsDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-28config: update size informationDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-27bc: rename functions common to bc and dc as xc_FOO()Denys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-27bc: G.prog.zero does not need initializing num[] vectorDenys Vlasenko
function old new delta bc_vm_init 676 665 -11 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-26bc: use ALIGN1 where appropriateDenys Vlasenko
text data bss dec hex filename 980138 485 7296 987919 f130f busybox_old 980128 485 7296 987909 f1305 busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-26bc: undo debugging change, add a small optimizationDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-26bc: simple speedupsDenys Vlasenko
function old new delta bc_parse_pushName 20 56 +36 bc_program_index 47 71 +24 bc_parse_pushIndex 52 58 +6 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 66/0) Total: 66 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-26bc: use '\0' insteads of 0xff (BC_PARSE_STREND) as name terminatorDenys Vlasenko
function old new delta zdc_program_printStream - 146 +146 zbc_program_exec 4003 4016 +13 zdc_parse_expr 473 470 -3 bc_parse_pushName 31 20 -11 bc_program_name 63 34 -29 zbc_program_pushArray 147 - -147 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 1/3 up/down: 159/-190) Total: -31 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-26bc: reduce indentation, no code changesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-26bc: fix "bc only" buildDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-26bc: fix "dc only" buildDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-26bc: comment out code which appears to be never reachedDenys Vlasenko
function old new delta zbc_lex_next 1587 1568 -19 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-26bc: remove all logic for multi-line bufferingDenys Vlasenko
function old new delta zbc_vm_process 865 874 +9 zbc_parse_text_init 51 38 -13 bc_read_line 394 345 -49 peek_inbuf 292 69 -223 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/3 up/down: 9/-285) Total: -276 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-26bc: prepare for char-by-char input handlingDenys Vlasenko
function old new delta peek_inbuf - 292 +292 parse_lex_by_checking_eq_sign - 26 +26 eat_inbuf - 22 +22 zbc_vm_execute_FILE 52 61 +9 bc_lex_lineComment 29 30 +1 zbc_lex_number 174 172 -2 bc_vm_run 104 99 -5 zbc_num_divmod 156 150 -6 bc_lex_file 24 - -24 bc_lex_assign 26 - -26 zbc_lex_next 1982 1587 -395 ------------------------------------------------------------------------------ (add/remove: 3/2 grow/shrink: 2/4 up/down: 350/-458) Total: -108 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-26bc: fix handling of comment/string interactions while buffering inputDenys Vlasenko
function old new delta zbc_lex_next 1965 1982 +17 zbc_num_divmod 150 156 +6 bc_read_line 411 394 -17 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/1 up/down: 23/-17) Total: 6 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: fix interactive handling of comments in strings and quotes in commentsDenys Vlasenko
function old new delta zbc_lex_next 1965 1979 +14 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: simplify input pointer manipulation while lexingDenys Vlasenko
function old new delta bc_lex_name 70 68 -2 zbc_lex_number 177 174 -3 bc_vm_init 679 676 -3 bc_lex_whitespace 42 39 -3 zbc_parse_text_init 55 51 -4 bc_lex_lineComment 37 29 -8 bc_lex_assign 34 26 -8 zbc_lex_next 2039 1965 -74 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/8 up/down: 0/-105) Total: -105 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: fold struct BcLex into BcParseDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: move BcLex::lex member to be the first in struct globalsDenys Vlasenko
function old new delta zbc_program_exec 3967 4003 +36 zdc_program_execStr 501 520 +19 zbc_posix_error_fmt 58 62 +4 bc_vm_init 675 679 +4 bc_read_line 407 411 +4 bc_error_fmt 36 40 +4 zdc_parse_register 45 44 -1 zdc_parse_exprs_until_eof 28 27 -1 zbc_parse_text_init 56 55 -1 zbc_parse_stmt_allow_NLINE_before 55 54 -1 zbc_lex_skip_if_at_NLINE 19 18 -1 zbc_lex_number 178 177 -1 bc_parse_create 97 96 -1 bc_lex_whitespace 43 42 -1 bc_lex_name 71 70 -1 bc_lex_lineComment 38 37 -1 bc_lex_assign 35 34 -1 zdc_parse_expr 476 473 -3 bc_verror_msg 93 90 -3 bc_lex_file 27 24 -3 zbc_parse_name 453 448 -5 bc_parse_expr_empty_ok 1776 1764 -12 zbc_vm_process 878 865 -13 zbc_parse_stmt_possibly_auto 1451 1425 -26 zbc_lex_next 2075 2039 -36 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 6/19 up/down: 71/-112) Total: -41 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: rename some members and macros, no code changesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: shorten error messagesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: make it clear that the code is adaptedGavin Howard
Signed-off-by: Gavin Howard <yzena.tech@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: stop passing a pointer to G.prs down the call chainDenys Vlasenko
function old new delta rewrite_label_to_current 19 26 +7 bc_lex_assign 28 35 +7 zbc_lex_skip_if_at_NLINE 14 19 +5 bc_parse_push 11 16 +5 bc_parse_operator 147 152 +5 bc_parse_create 92 97 +5 bc_lex_whitespace 38 43 +5 bc_lex_name 66 71 +5 bc_lex_lineComment 33 38 +5 zbc_lex_number 174 178 +4 zbc_parse_text_init 53 56 +3 zdc_parse_register 43 45 +2 zdc_parse_exprs_until_eof 26 28 +2 bc_parse_free 38 40 +2 bc_lex_file 28 27 -1 zbc_parse_pushSTR 65 63 -2 bc_parse_expr_empty_ok 1778 1776 -2 zbc_vm_execute_FILE 55 52 -3 bc_vm_init 678 675 -3 zbc_parse_stmt_allow_NLINE_before 59 55 -4 bc_parse_pushNUM 80 74 -6 bc_parse_pushJUMP_ZERO 27 21 -6 bc_parse_pushJUMP 27 21 -6 bc_vm_run 112 104 -8 bc_parse_pushName 39 31 -8 bc_parse_pushIndex 60 52 -8 zbc_parse_name 468 453 -15 zdc_program_execStr 524 501 -23 zdc_parse_mem 93 70 -23 zbc_program_exec 4003 3967 -36 zdc_parse_expr 518 476 -42 zbc_vm_process 923 878 -45 zbc_lex_next 2158 2070 -88 zbc_parse_stmt_possibly_auto 1560 1451 -109 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 14/20 up/down: 62/-438) Total: -376 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: make zbc_program_read() and zdc_program_execStr() use G.prsDenys Vlasenko
function old new delta zbc_program_print 656 683 +27 zbc_program_exec 3976 4003 +27 zdc_program_execStr 512 524 +12 bc_num_printNewline 45 54 +9 bc_num_printHex 61 67 +6 bc_num_printDigits 131 137 +6 dc_num_printChar 21 24 +3 bc_vm_init 675 678 +3 zbc_program_assign 424 426 +2 bc_read_line 410 407 -3 bc_verror_msg 99 93 -6 zbc_lex_next 2167 2158 -9 zbc_vm_execute_FILE 67 55 -12 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 9/4 up/down: 95/-30) Total: 65 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: fix interactive read()Denys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: add code to detect errors like "print 1 print 2"Denys Vlasenko
function old new delta zbc_vm_process 831 925 +94 zbc_program_exec 3964 3976 +12 zdc_program_execStr 506 512 +6 zbc_lex_next 2161 2167 +6 zbc_program_assign 419 424 +5 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/0 up/down: 123/0) Total: 123 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: allow {break} and {continue} (allow RBRACE to terminate them)Denys Vlasenko
function old new delta zbc_parse_stmt_possibly_auto 1599 1560 -39 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: shrink parsing code a bit more, disallow "auto a b c" (without commas)Denys Vlasenko
function old new delta bc_parse_expr_empty_ok 1791 1785 -6 zbc_parse_stmt_possibly_auto 1675 1599 -76 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-82) Total: -82 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: simplify bc_parse_expr_empty_ok()Denys Vlasenko
function old new delta bc_parse_expr_empty_ok 1810 1791 -19 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: simplify bc_parse_expr_empty_ok()Denys Vlasenko
function old new delta bc_parse_expr_empty_ok 1819 1810 -9 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-25bc: simplify bc_parse_expr_empty_ok()Denys Vlasenko
function old new delta bc_parse_expr_empty_ok 1846 1819 -27 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-24bc: BC_RESULT_ONE is bc-specificDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-24bc: partially deinline BC_PARSE_LEAF() macroDenys Vlasenko
function old new delta ok_in_expr - 30 +30 bc_parse_expr_empty_ok 1972 1846 -126 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/1 up/down: 30/-126) Total: -96 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-24bc: rename lexer variables, use smallints where appropriateDenys Vlasenko
function old new delta bc_parse_expr_empty_ok 1966 1972 +6 zdc_parse_expr 514 518 +4 zbc_lex_number 177 174 -3 dc_num_printChar 24 21 -3 bc_lex_whitespace 41 38 -3 bc_lex_name 69 66 -3 bc_lex_lineComment 36 33 -3 bc_lex_assign 31 28 -3 zbc_parse_name 472 468 -4 zbc_vm_process 836 831 -5 zdc_program_execStr 512 506 -6 zbc_parse_text_init 59 53 -6 bc_num_printNewline 51 45 -6 bc_num_printHex 67 61 -6 bc_num_printDigits 137 131 -6 zbc_program_assign 426 419 -7 zbc_parse_stmt_possibly_auto 1682 1675 -7 zbc_program_exec 3977 3964 -13 zbc_program_print 683 656 -27 zbc_lex_next 2233 2161 -72 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/18 up/down: 10/-183) Total: -173 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>