number

 convert a counted string at addr to a number, throw exception -13 on error

Stackeffects

( addr -- n )
R( -- )

Definition

: number
(literal) 1 ; ( -- addr 1)   0    rot    count    0    (do)
PFA_NUMBER1: ; ( -- sign n addr )
   dup    i    +    c@    dup (literal) $2d ; '-'   =
(?branch) PFA_NUMBER2
   drop    rot    drop (literal) -1   rot    rot
(branch) PFA_NUMBER4

PFA_NUMBER2:
   digit?    0=
(?branch) PFA_NUMBER3
(literal) -13   throw
PFA_NUMBER3:
   rot    base    @    *    +    swap
PFA_NUMBER4:

(loop) PFA_NUMBER1

PFA_NUMBER6:
   drop    swap    0<
(?branch) PFA_NUMBER5
   negate
PFA_NUMBER5:

;

Used by

interpret