     number-parse boa
     0 ; inline
 
-: (next-digit) ( i number-parse n digit-quot end-quot -- number/f )
+: (next-digit) ( i number-parse n digit-quot end-quot -- n/f )
     [ 2over length>> < ] 2dip
     [ [ 2over str>> nth-unsafe >fixnum [ 1 + >fixnum ] 3dip ] prepose ] dip if ; inline
 
-: require-next-digit ( i number-parse n quot -- number/f )
+: require-next-digit ( i number-parse n quot -- n/f )
     [ 3drop f ] (next-digit) ; inline
 
-: next-digit ( i number-parse n quot -- number/f )
+: next-digit ( i number-parse n quot -- n/f )
     [ 2nip ] (next-digit) ; inline
 
-: add-digit ( i number-parse n digit quot -- number/f )
+: add-digit ( i number-parse n digit quot -- n/f )
     [ [ dup radix>> ] [ * ] [ + ] tri* ] dip next-digit ; inline
 
 : digit-in-radix ( number-parse n char -- number-parse n digit ? )

: >hex ( n -- str ) 16 >base ; inline

: # ( n -- ) number>string % ; inline


DEFER: @pos-digit
DEFER: @neg-digit

: @exponent-digit-or-punc ( float-parse i number-parse n char -- float-parse n/f )
    {
        { CHAR: , [ [ @exponent-digit ] require-next-digit ] }
        [ @exponent-digit ]
    } case ; inline

: @exponent-digit ( float-parse i number-parse n char -- float-parse n/f )
    { float-parse fixnum number-parse integer fixnum } declare
    digit-in-radix [ [ @exponent-digit-or-punc ] add-digit ] [ @abort ] if ;

: @exponent-first-char ( float-parse i number-parse n char -- float-parse n/f )
    {
        { CHAR: - [ [ @exponent-digit ] require-next-digit ?neg ] }
        [ @exponent-digit ]
    } case ; inline

: ->exponent ( float-parse i number-parse n -- float-parse' n/f )
    @split-exponent [ @exponent-first-char ] require-next-digit ?store-exponent ; inline

: exponent-char? ( number-parse n char -- number-parse n char ? )
