Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						ef271da33f 
					 
					
						
						
							
							bc: shrink zdc_lex_string()  
						
						 
						
						... 
						
						
						
						This actually fixes a rather obscure bug. This was failing to find
end of the string:
	$ echo -n '[foo]' | dc
	dc: string end could not be found
function                                             old     new   delta
zbc_lex_next                                        2230    2141     -89
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-89)             Total: -89 bytes
   text	   data	    bss	    dec	    hex	filename
 981461	    485	   7296	 989242	  f183a	busybox_old
 981372	    485	   7296	 989153	  f17e1	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-18 13:48:37 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						d4258dd321 
					 
					
						
						
							
							bc: another for() loop simplified  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_program_print                                    688     686      -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-18 13:22:23 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						5c0c5abba0 
					 
					
						
						
							
							bc: simplify another for() loop  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_num_d                                            563     557      -6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-18 13:15:55 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						6b0fbd14fc 
					 
					
						
						
							
							bc: rewrite more for() loops  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
bc_program_name                                       75      67      -8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-18 12:55:40 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						71c82d1d8c 
					 
					
						
						
							
							bc: rewrite another for() loop  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_num_d                                            570     563      -7
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-18 12:43:21 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						e2e6ffd3c5 
					 
					
						
						
							
							bc: replace signed division / 10 by unsigned  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_num_a                                            443     441      -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-18 12:23:16 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						4113e1f2cd 
					 
					
						
						
							
							bc: rewrite bc_num_compare() to be readable  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
bc_num_compare                                        59      51      -8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-18 03:30:23 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						57734c926b 
					 
					
						
						
							
							bc: fold zbc_num_stream() into its single caller  
						
						 
						
						... 
						
						
						
						Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-18 03:30:23 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						f6e3f8511e 
					 
					
						
						
							
							bc: get rid of BcNum BcProgram::ib,hexb  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_program_num                                      907     943     +36
zbc_program_assign                                   485     474     -11
bc_vm_init                                           757     739     -18
bc_num_ten                                            30       -     -30
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/2 up/down: 36/-59)            Total: -23 bytes
   text	   data	    bss	    dec	    hex	filename
 981532	    485	   7296	 989313	  f1881	busybox_old
 981509	    485	   7296	 989290	  f186a	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-18 03:30:23 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						0f31a5c79e 
					 
					
						
						
							
							bc: fixes to bugs found while testing 64-bit build  
						
						 
						
						... 
						
						
						
						Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-18 03:16:48 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						f4f10720fe 
					 
					
						
						
							
							bc: fixed from 64-bit compile  
						
						 
						
						... 
						
						
						
						Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-18 02:23:53 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						4b72aebe80 
					 
					
						
						
							
							bc: remove "error after expression parsing" check  
						
						 
						
						... 
						
						
						
						It is misplaced: caller knows better what can or cannot follow the expression.
Sometimes even caller's caller: "if (1) return a+b else..." -
parser of "return" does not know that "else" after it is valid,
parser of stmt does not know it either, - only parser of
"if" knows it!
The removed code balked on e.g. "{ print 1 }" statement.
This does not break any valid programs, but starts accepting some
invalid ones, e.g. "print 1 print 2" would work.
function                                             old     new   delta
zcommon_parse_expr                                    40      32      -8
zbc_parse_name                                       509     494     -15
zbc_parse_stmt_possibly_auto                        1678    1638     -40
bc_parse_expr_empty_ok                              2025    1977     -48
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-111)           Total: -111 bytes
   text	   data	    bss	    dec	    hex	filename
 981599	    485	   7296	 989380	  f18c4	busybox_old
 981488	    485	   7296	 989269	  f1855	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-17 17:00:29 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						b44a7f1d66 
					 
					
						
						
							
							bc: tighten up input NUL handling  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
static.dc_lex_tokens                                   -      90     +90
bc_error_bad_character                                17      31     +14
static.dc_lex_regs                                     -      13     +13
bc_read_line                                         406     410      +4
bc_program_index                                      64      66      +2
dc_lex_regs                                           13       -     -13
zdc_parse_expr                                       671     656     -15
zbc_lex_next                                        2318    2230     -88
dc_lex_tokens                                         91       -     -91
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 3/2 up/down: 123/-207)          Total: -84 bytes
   text	   data	    bss	    dec	    hex	filename
 981667	    485	   7296	 989448	  f1908	busybox_old
 981599	    485	   7296	 989380	  f18c4	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-17 11:58:20 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						e42cc19b51 
					 
					
						
						
							
							bc: simplify zdc_parse_string()  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
bc_program_index                                      64      66      +2
zdc_parse_expr                                       671     656     -15
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 2/-15)             Total: -13 bytes
   text	   data	    bss	    dec	    hex	filename
 981667	    485	   7296	 989448	  f1908	busybox_old
 981655	    485	   7296	 989436	  f18fc	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-17 11:02:26 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						59d4ce935e 
					 
					
						
						
							
							bc: use common strings  
						
						 
						
						... 
						
						
						
						Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-17 10:42:31 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						ec60318f15 
					 
					
						
						
							
							bc: tidy up "z-function" macro machinery  
						
						 
						
						... 
						
						
						
						Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-17 10:34:02 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						e4ba4c4371 
					 
					
						
						
							
							bc: parse file arguments piecemeal (do not read entire file)  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
bc_read_line                                         336     406     +70
zbc_vm_execute_FILE                                    -      67     +67
zbc_lex_next                                        2309    2318      +9
zbc_program_exec                                    4002    4008      +6
bc_program_index                                      66      64      -2
bc_vm_run                                            139     124     -15
zbc_vm_file                                          208      32    -176
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/3 up/down: 152/-193)          Total: -41 bytes
   text	   data	    bss	    dec	    hex	filename
 981736	    485	   7296	 989517	  f194d	busybox_old
 981667	    485	   7296	 989448	  f1908	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-17 09:51:43 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						c5774a3458 
					 
					
						
						
							
							bc: move fflush to the _actual_ execution loop  
						
						 
						
						... 
						
						
						
						Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-17 01:22:53 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						51b22b1bce 
					 
					
						
						
							
							bc: fix typo: defone -> define  
						
						 
						
						... 
						
						
						
						Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-17 00:15:35 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						94f72a387c 
					 
					
						
						
							
							bc: factor out common code  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_parse_stmt_allow_NLINE_before                      -      59     +59
bc_parse_pushJUMP_ZERO                                 -      27     +27
bc_parse_pushJUMP                                      -      27     +27
rewrite_label_to_current                               -      19     +19
zbc_vm_process                                       594     599      +5
zbc_lex_next_and_skip_NLINE                           22       -     -22
zbc_parse_stmt_fail_if_bare_NLINE                     28       -     -28
zbc_parse_stmt_possibly_auto                        1909    1678    -231
------------------------------------------------------------------------------
(add/remove: 4/2 grow/shrink: 1/1 up/down: 137/-281)         Total: -144 bytes
   text	   data	    bss	    dec	    hex	filename
 981879	    485	   7296	 989660	  f19dc	busybox_old
 981755	    485	   7296	 989536	  f1960	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-17 00:07:48 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						5ebd2a6128 
					 
					
						
						
							
							bc: remove use of "BcInstPtr ip" object from loop parsing  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_parse_stmt_possibly_auto                        1964    1909     -55
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-55)             Total: -55 bytes
   text	   data	    bss	    dec	    hex	filename
 981934	    485	   7296	 989715	  f1a13	busybox_old
 981879	    485	   7296	 989660	  f19dc	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 23:35:04 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						266aa00012 
					 
					
						
						
							
							bc: store only index in p->exits, it's the only thing used there  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_parse_stmt_possibly_auto                        1967    1964      -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-3)               Total: -3 bytes
   text	   data	    bss	    dec	    hex	filename
 981937	    485	   7296	 989718	  f1a16	busybox_old
 981934	    485	   7296	 989715	  f1a13	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 23:24:25 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						8e7686e457 
					 
					
						
						
							
							bc: p->exits.func is never zero, do not check for that  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_parse_stmt_possibly_auto                        1978    1967     -11
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-11)             Total: -11 bytes
   text	   data	    bss	    dec	    hex	filename
 981948	    485	   7296	 989729	  f1a21	busybox_old
 981937	    485	   7296	 989718	  f1a16	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 23:18:28 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						de24e9d366 
					 
					
						
						
							
							bc: remove redundant JUMP generation when parsing 'while'  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_parse_stmt_possibly_auto                        2065    2025     -40
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-40)             Total: -40 bytes
   text	   data	    bss	    dec	    hex	filename
 982035	    485	   7296	 989816	  f1a78	busybox_old
 981995	    485	   7296	 989776	  f1a50	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 23:02:22 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						06ade77002 
					 
					
						
						
							
							bc: simplify use of "ip" in loop parsing functions  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_parse_stmt_possibly_auto                        2106    2065     -41
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-41)             Total: -41 bytes
   text	   data	    bss	    dec	    hex	filename
 982076	    485	   7296	 989857	  f1aa1	busybox_old
 982035	    485	   7296	 989816	  f1a78	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 22:44:51 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						146a79d19c 
					 
					
						
						
							
							bc: shring bc_lib[]  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
bc_lib                                              1586    1584      -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 21:46:11 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						15850832be 
					 
					
						
						
							
							bc: shrink zbc_parse_if() a bit more  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_parse_stmt_possibly_auto                        2180    2106     -74
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-74)             Total: -74 bytes
   text	   data	    bss	    dec	    hex	filename
 982152	    485	   7296	 989933	  f1aed	busybox_old
 982078	    485	   7296	 989859	  f1aa3	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 21:41:17 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						6b5b46f817 
					 
					
						
						
							
							bc: stop using p->exits when parsing if()  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_parse_stmt_possibly_auto                        2180    2138     -42
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 21:29:08 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						7415633128 
					 
					
						
						
							
							bc: preparation to stop using p->exits when parsing if()  
						
						 
						
						... 
						
						
						
						Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 21:21:27 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						5d18f6be90 
					 
					
						
						
							
							bc: fix "print 1,2,3" parsing  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_parse_stmt_possibly_auto                        2245    2180     -65
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-65)             Total: -65 bytes
   text	   data	    bss	    dec	    hex	filename
 982237	    485	   7296	 990018	  f1b42	busybox_old
 982152	    485	   7296	 989933	  f1aed	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 21:08:30 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						cb18b546f7 
					 
					
						
						
							
							bc: disallow empty statement as function body  
						
						 
						
						... 
						
						
						
						$ bc
	define z() <cr>
	<cr>
	bc: no statement after 'define'
function                                             old     new   delta
zbc_parse_stmt_possibly_auto                        2239    2245      +6
zbc_vm_process                                       589     594      +5
zbc_parse_stmt_fail_if_bare_NLINE                     25      28      +3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 14/0)               Total: 14 bytes
   text	   data	    bss	    dec	    hex	filename
 982216	    485	   7296	 989997	  f1b2d	busybox_old
 982237	    485	   7296	 990018	  f1b42	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 20:46:15 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						2e8be023cb 
					 
					
						
						
							
							bc: allow only one <newline> between if() and stmt  
						
						 
						
						... 
						
						
						
						Attempt to have more than one causes this error message:
	$ bc -q
	if (1)<cr>
	<cr>
	bc: no statement after 'if'
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 20:41:32 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						e6c40c48d9 
					 
					
						
						
							
							bc: simplify bc_parse_pushName(), do not free name in it - avoids one strdup  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_parse_name                                       511     509      -2
zdc_parse_register                                    50      43      -7
bc_parse_pushName                                     61      39     -22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-31)             Total: -31 bytes
   text	   data	    bss	    dec	    hex	filename
 982183	    485	   7296	 989964	  f1b0c	busybox_old
 982152	    485	   7296	 989933	  f1aed	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 20:32:58 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						563d93c9a4 
					 
					
						
						
							
							bc: simplify zbc_parse_break_or_continue(), logic is the same  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_parse_stmt_possibly_auto                        2259    2224     -35
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-35)             Total: -35 bytes
   text	   data	    bss	    dec	    hex	filename
 982218	    485	   7296	 989999	  f1b2f	busybox_old
 982183	    485	   7296	 989964	  f1b0c	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 19:47:40 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						a50576a415 
					 
					
						
						
							
							bc: fold zbc_parse_else() into its only caller  
						
						 
						
						... 
						
						
						
						While at it, allow newline between "else" and its body
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 19:21:57 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						6d29879c67 
					 
					
						
						
							
							bc: fold bc_parse_noElse() into its only caller  
						
						 
						
						... 
						
						
						
						Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 19:10:38 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						9dc5d08baa 
					 
					
						
						
							
							bc: delete unused (write-only) BcParse::nbraces member  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_lex_next                                        2296    2309     +13
bc_parse_expr_empty_ok                              2021    2025      +4
bc_vm_init                                           760     757      -3
bc_num_printNewline                                   54      51      -3
zbc_num_divmod                                       156     150      -6
bc_parse_reset                                       113     106      -7
zbc_lex_number                                       200     192      -8
bc_parse_number                                       83      66     -17
zdc_parse_expr                                       707     671     -36
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/7 up/down: 17/-80)            Total: -63 bytes
   text	   data	    bss	    dec	    hex	filename
 982275	    485	   7296	 990056	  f1b68	busybox_old
 982212	    485	   7296	 989993	  f1b29	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 18:43:51 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						202dd1943c 
					 
					
						
						
							
							bc: fixes for multi-line if/while/for  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_vm_process                                       561     589     +28
zbc_lex_next_and_skip_NLINE                            -      22     +22
zbc_parse_stmt_possibly_auto                        2232    2253     +21
zbc_lex_skip_if_at_NLINE                               -      14     +14
zbc_lex_number                                       192     200      +8
zbc_num_divmod                                       150     156      +6
bc_vm_run                                            134     139      +5
bc_vm_init                                           757     760      +3
bc_num_printNewline                                   51      54      +3
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 7/0 up/down: 110/0)             Total: 110 bytes
   text	   data	    bss	    dec	    hex	filename
 982138	    485	   7296	 989919	  f1adf	busybox_old
 982275	    485	   7296	 990056	  f1b68	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 17:30:35 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						e9519e44a6 
					 
					
						
						
							
							bc: fix handling of 'return' not in functions, and 'define f()<newline>{...}'  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_vm_process                                       561     597     +36
zbc_parse_stmt_possibly_auto                        2232    2253     +21
zbc_lex_number                                       192     200      +8
zbc_num_divmod                                       150     156      +6
bc_vm_run                                            134     139      +5
bc_vm_init                                           757     760      +3
bc_num_printNewline                                   51      54      +3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 7/0 up/down: 82/0)               Total: 82 bytes
   text	   data	    bss	    dec	    hex	filename
 982138	    485	   7296	 989919	  f1adf	busybox_old
 982247	    485	   7296	 990028	  f1b4c	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 17:06:07 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						d1d29b4245 
					 
					
						
						
							
							bc: partially rewrite parser, tests pass, ^C might be broken now  
						
						 
						
						... 
						
						
						
						The entire control construct (if/while/for/funcdef) or {} block is
"eaten" by the corresponding parsing function, instead of maintaining
special "block flag stack" with magic bits in it, and returning to main
input loop after every inner statement (every input line, essentially).
This required moving line input deep into lexer - now zbc_lex_next()
triggers more reading when needed.
"block flag stack" is gone.
Correctness of ^C handling wasn't checked, might need fixing now.
if/else syntax is changed to match GNU bc: "else" can not be on
the next line (the rationale is that "if (1) 2" statement in interactive
mode should execute and print 2 instead of waiting for possible
"else ..." line).
This change fixes the following examples:
if (1) if (1) 1 else 2 else 3
if (0) 1 else if (1) 2
define w() { auto z; return 1; }
function                                             old     new   delta
zbc_parse_stmt_possibly_auto                           -    2232   +2232
zbc_vm_process                                        89     561    +472
zbc_lex_next                                        1982    2296    +314
bc_vm_init                                           749     757      +8
bc_parse_expr_empty_ok                              2016    2021      +5
bc_num_printNewline                                   54      51      -3
zbc_program_read                                     289     280      -9
bc_parse_free                                         47      38      -9
bc_parse_reset                                       126     113     -13
bc_parse_create                                      108      92     -16
bc_parse_push_block_flag                              47       -     -47
bc_parse_noElse                                       48       -     -48
zbc_parse_text_init                                  113      59     -54
zbc_parse_body                                       121       -    -121
zbc_parse_else                                       125       -    -125
zbc_parse_endBody                                    254       -    -254
bc_vm_run                                            421     134    -287
zbc_parse_auto                                       290       -    -290
zcommon_parse                                        476       -    -476
zbc_parse_stmt                                      1682       7   -1675
------------------------------------------------------------------------------
(add/remove: 1/7 grow/shrink: 4/8 up/down: 3031/-3427)       Total: -396 bytes
   text	   data	    bss	    dec	    hex	filename
 982586	    485	   7296	 990367	  f1c9f	busybox_old
 982138	    485	   7296	 989919	  f1adf	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-16 16:10:38 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						99b3762335 
					 
					
						
						
							
							bc: lexer debugging, added some failing test cases  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
bc_parse_push_block_flag                               -      47     +47
zbc_parse_body                                       107     121     +14
zbc_num_divmod                                       156     150      -6
zbc_lex_number                                       200     192      -8
zbc_parse_endBody                                    264     254     -10
bc_parse_startBody                                    47       -     -47
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 1/3 up/down: 61/-71)            Total: -10 bytes
   text	   data	    bss	    dec	    hex	filename
 982596	    485	   7296	 990377	  f1ca9	busybox_old
 982586	    485	   7296	 990367	  f1c9f	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-15 20:06:59 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						fd51e0c4d2 
					 
					
						
						
							
							bc: simplify BC_INST_JUMP[_ZERO] handling  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_program_exec                                    4063    4050     -13
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-15 15:07:14 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						7db384338a 
					 
					
						
						
							
							bc: rewrite "block flag stack" using simple realloc'ed byte array  
						
						 
						
						... 
						
						
						
						Each access to current top flag took a function call + fetch of three data items
+ multiplication and some additions + and then following the resulting pointer.
After the change, it is: fetch pointer value + one byte access via this pointer.
function                                             old     new   delta
bc_parse_startBody                                    45      49      +4
bc_parse_free                                         46      47      +1
zbc_parse_auto                                       188     185      -3
bc_parse_push                                         14      11      -3
bc_vm_run                                            398     394      -4
zbc_vm_process                                        63      58      -5
zdc_parse_expr                                       638     632      -6
zbc_parse_body                                       101      95      -6
bc_parse_addFunc                                      31      25      -6
bc_parse_noElse                                       56      48      -8
zcommon_parse                                        341     331     -10
zbc_parse_else                                       134     123     -11
bc_parse_create                                      124     108     -16
zbc_parse_text_init                                  123     104     -19
zbc_parse_endBody                                    292     252     -40
zbc_parse_stmt                                      1479    1420     -59
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/14 up/down: 5/-196)          Total: -191 bytes
   text	   data	    bss	    dec	    hex	filename
 979880	    485	   7296	 987661	  f120d	busybox_old
 979689	    485	   7296	 987470	  f114e	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-15 00:49:16 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						f10f17f8d3 
					 
					
						
						
							
							bc: drop zbc_parse_endBody() bool parameter, move its code to caller which uses it  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_parse_stmt                                      1456    1479     +23
zbc_parse_body                                       103     101      -2
zbc_parse_endBody                                    326     292     -34
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 23/-36)            Total: -13 bytes
   text	   data	    bss	    dec	    hex	filename
 979893	    485	   7296	 987674	  f121a	busybox_old
 979880	    485	   7296	 987661	  f120d	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-14 23:41:33 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						0154d78738 
					 
					
						
						
							
							bc: shorten one message, make defines more readable  
						
						 
						
						... 
						
						
						
						text	   data	    bss	    dec	    hex	filename
 979916	    485	   7296	 987697	  f1231	busybox_old
 979893	    485	   7296	 987674	  f121a	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-14 23:32:51 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						7b1df3db97 
					 
					
						
						
							
							bc: pull zbc_lex_next() call out of zbc_parse_operator() into one caller that uses it  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
bc_parse_operator                                      -     144    +144
bc_parse_expr_empty_ok                              1788    1792      +4
zbc_parse_operator                                   170       -    -170
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 1/0 up/down: 148/-170)          Total: -22 bytes
   text	   data	    bss	    dec	    hex	filename
 979938	    485	   7296	 987719	  f1247	busybox_old
 979916	    485	   7296	 987697	  f1231	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-14 23:12:48 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						17df882a57 
					 
					
						
						
							
							bx: add more debug scaffolding  
						
						 
						
						... 
						
						
						
						Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-14 23:00:24 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						2ea53a45b7 
					 
					
						
						
							
							bc: convert macro bc_parse_push() to function, add debug infrastructure  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
bc_parse_push                                          -      14     +14
zbc_parse_else                                       132     134      +2
bc_parse_pushName                                     63      61      -2
zbc_parse_operator                                   174     170      -4
bc_parse_number                                       87      83      -4
zbc_parse_string                                      97      89      -8
bc_parse_pushIndex                                    68      60      -8
zbc_parse_endBody                                    339     326     -13
zbc_parse_name                                       401     387     -14
zdc_parse_mem                                        107      91     -16
zdc_parse_expr                                       680     638     -42
zbc_parse_stmt                                      1502    1456     -46
bc_parse_expr_empty_ok                              1838    1788     -50
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/11 up/down: 16/-207)         Total: -191 bytes
   text	   data	    bss	    dec	    hex	filename
 980129	    485	   7296	 987910	  f1306	busybox_old
 979938	    485	   7296	 987719	  f1247	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-14 17:51:17 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						f86e960e7c 
					 
					
						
						
							
							bc: rename zbc_parse_text() to ..._init(), reuse existing code for library parsing  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_parse_text_init                                    -     123    +123
bc_vm_run                                            423     398     -25
zbc_parse_text                                       123       -    -123
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/1 up/down: 123/-148)          Total: -25 bytes
   text	   data	    bss	    dec	    hex	filename
 980154	    485	   7296	 987935	  f131f	busybox_old
 980129	    485	   7296	 987910	  f1306	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-14 17:02:27 +01:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Denys Vlasenko 
							
						 
					 
					
						
						
							
						
						0a23814e98 
					 
					
						
						
							
							bc: compress two constant arguments of bc_lex_assign() to one  
						
						 
						
						... 
						
						
						
						function                                             old     new   delta
zbc_program_num                                      836     835      -1
bc_lex_assign                                         34      31      -3
zbc_lex_next                                        1930    1880     -50
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-54)             Total: -54 bytes
   text	   data	    bss	    dec	    hex	filename
 980208	    485	   7296	 987989	  f1355	busybox_old
 980154	    485	   7296	 987935	  f131f	busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com > 
						
						
					 
					
						2018-12-14 16:48:34 +01:00