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:
;