aboutsummaryrefslogtreecommitdiff
path: root/miscutils/bc.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* bc: more fixes for unusual input basesDenys Vlasenko2018-12-291-6/+13
| | | | | | | | | | 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>
* bc: fix handling of "digits" above 9Denys Vlasenko2018-12-291-19/+63
| | | | | | | | | | | | 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>
* bc: bc enables FEATURE_DC_BIG, for correct dc testsuite operationDenys Vlasenko2018-12-281-1/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: rename config optionsDenys Vlasenko2018-12-281-37/+26
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* config: update size informationDenys Vlasenko2018-12-281-2/+2
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: rename functions common to bc and dc as xc_FOO()Denys Vlasenko2018-12-271-408/+397
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: G.prog.zero does not need initializing num[] vectorDenys Vlasenko2018-12-271-2/+2
| | | | | | | function old new delta bc_vm_init 676 665 -11 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: use ALIGN1 where appropriateDenys Vlasenko2018-12-261-4/+4
| | | | | | | | 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>
* bc: undo debugging change, add a small optimizationDenys Vlasenko2018-12-261-2/+2
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: simple speedupsDenys Vlasenko2018-12-261-1/+28
| | | | | | | | | | | 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>
* bc: use '\0' insteads of 0xff (BC_PARSE_STREND) as name terminatorDenys Vlasenko2018-12-261-24/+10
| | | | | | | | | | | | | | 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>
* bc: reduce indentation, no code changesDenys Vlasenko2018-12-261-824/+823
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: fix "bc only" buildDenys Vlasenko2018-12-261-1/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: fix "dc only" buildDenys Vlasenko2018-12-261-1/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: comment out code which appears to be never reachedDenys Vlasenko2018-12-261-2/+3
| | | | | | | function old new delta zbc_lex_next 1587 1568 -19 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: remove all logic for multi-line bufferingDenys Vlasenko2018-12-261-125/+19
| | | | | | | | | | | | 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>
* bc: prepare for char-by-char input handlingDenys Vlasenko2018-12-261-233/+210
| | | | | | | | | | | | | | | | | | | 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>
* bc: fix handling of comment/string interactions while buffering inputDenys Vlasenko2018-12-261-38/+74
| | | | | | | | | | | 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>
* bc: fix interactive handling of comments in strings and quotes in commentsDenys Vlasenko2018-12-251-16/+20
| | | | | | | function old new delta zbc_lex_next 1965 1979 +14 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: simplify input pointer manipulation while lexingDenys Vlasenko2018-12-251-60/+55
| | | | | | | | | | | | | | | | 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>
* bc: fold struct BcLex into BcParseDenys Vlasenko2018-12-251-267/+262
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: move BcLex::lex member to be the first in struct globalsDenys Vlasenko2018-12-251-65/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* bc: rename some members and macros, no code changesDenys Vlasenko2018-12-251-129/+129
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: shorten error messagesDenys Vlasenko2018-12-251-8/+8
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: make it clear that the code is adaptedGavin Howard2018-12-251-2/+4
| | | | | Signed-off-by: Gavin Howard <yzena.tech@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: stop passing a pointer to G.prs down the call chainDenys Vlasenko2018-12-251-327/+374
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* bc: make zbc_program_read() and zdc_program_execStr() use G.prsDenys Vlasenko2018-12-251-46/+41
| | | | | | | | | | | | | | | | | | | | | 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>
* bc: fix interactive read()Denys Vlasenko2018-12-251-25/+26
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: add code to detect errors like "print 1 print 2"Denys Vlasenko2018-12-251-10/+39
| | | | | | | | | | | | | 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>
* bc: allow {break} and {continue} (allow RBRACE to terminate them)Denys Vlasenko2018-12-251-13/+5
| | | | | | | function old new delta zbc_parse_stmt_possibly_auto 1599 1560 -39 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: shrink parsing code a bit more, disallow "auto a b c" (without commas)Denys Vlasenko2018-12-251-24/+22
| | | | | | | | | | 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>
* bc: simplify bc_parse_expr_empty_ok()Denys Vlasenko2018-12-251-20/+32
| | | | | | | function old new delta bc_parse_expr_empty_ok 1810 1791 -19 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: simplify bc_parse_expr_empty_ok()Denys Vlasenko2018-12-251-5/+9
| | | | | | | function old new delta bc_parse_expr_empty_ok 1819 1810 -9 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: simplify bc_parse_expr_empty_ok()Denys Vlasenko2018-12-251-16/+20
| | | | | | | function old new delta bc_parse_expr_empty_ok 1846 1819 -27 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: BC_RESULT_ONE is bc-specificDenys Vlasenko2018-12-241-84/+84
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: partially deinline BC_PARSE_LEAF() macroDenys Vlasenko2018-12-241-17/+27
| | | | | | | | | | 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>
* bc: rename lexer variables, use smallints where appropriateDenys Vlasenko2018-12-241-157/+155
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* bc: fix "bc -s" only warning on "define f()<newline>", not exitingDenys Vlasenko2018-12-241-1/+3
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: POSIX error/warn functions can be 'z' functions tooDenys Vlasenko2018-12-241-36/+42
| | | | | | | | | | | | | In non-interactive config, they either return 'success', or do not return. function old new delta zbc_posix_error_fmt 41 39 -2 bc_parse_expr_empty_ok 1751 1744 -7 zbc_parse_stmt_possibly_auto 1322 1314 -8 ------------------------------------------------------------------------------ (add/remove: 5/5 grow/shrink: 0/2 up/down: 118/-135) Total: -17 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: remove unnecessary NULL initializersDenys Vlasenko2018-12-241-16/+20
| | | | | | | | | | function old new delta zbc_program_assign 442 426 -16 zbc_program_exec 4043 3977 -66 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-82) Total: -82 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: move relational LEXs before math LEXs - shorten dc_LEX_to_INST[]Denys Vlasenko2018-12-241-42/+39
| | | | | | | | | | function old new delta dc_LEX_to_INST 48 42 -6 zdc_parse_expr 523 514 -9 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-15) Total: -15 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: offset dc_LEX_to_INST[] startDenys Vlasenko2018-12-241-37/+42
| | | | | | | | | | function old new delta zdc_parse_expr 516 523 +7 dc_LEX_to_INST 56 48 -8 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/1 up/down: 7/-8) Total: -1 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: rename BC_LEX_NLINE/WHITESPACE/STR/NAME/NUMBER to XC_LEX_Denys Vlasenko2018-12-241-45/+45
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: separate many bc and dc LEX constantsDenys Vlasenko2018-12-241-49/+69
| | | | | | | | | | | function old new delta zdc_parse_expr 510 516 +6 bc_parse_expr_empty_ok 1963 1966 +3 dc_LEX_to_INST 83 56 -27 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/1 up/down: 9/-27) Total: -18 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: rename several BC_LEX_OPs to XC_LEX_OPs.Denys Vlasenko2018-12-241-71/+72
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: move BC_LEX_OP_INC/DEC to the end of operation LEX constantsDenys Vlasenko2018-12-241-93/+95
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: rename BC_LEXs to XC_LEXs for common constants, and to DC_LEXs for ↵Denys Vlasenko2018-12-241-84/+84
| | | | | | dc-specific Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: move functions/macros around, no code changesDenys Vlasenko2018-12-241-384/+392
| | | | | | | | | | | | Order now is: enums/structures/defines, utility/common functions, parsing, execution, main loop, main() Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* bc: rename common INST constants to XC_, dc-specific ones to DC_Denys Vlasenko2018-12-241-243/+242
| | | | | | This will assist in disentangling dc and bc LEX constants Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* dc: without -x, do not parse extended regs: 's p' means: store to ' ' reg, printDenys Vlasenko2018-12-241-11/+10
| | | | | | | | | | | | function old new delta zbc_lex_next 2240 2233 -7 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-7) Total: -7 bytes text data bss dec hex filename 981437 485 7296 989218 f1822 busybox_old 981412 485 7296 989193 f1809 busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>