allow commas in numeric literals
parent
06a5c78a34
commit
0376cf0f9d
|
@ -25,6 +25,14 @@ unit-test
|
||||||
[ "e" string>number ]
|
[ "e" string>number ]
|
||||||
unit-test
|
unit-test
|
||||||
|
|
||||||
|
[ 100000 ]
|
||||||
|
[ "100,000" string>number ]
|
||||||
|
unit-test
|
||||||
|
|
||||||
|
[ 100000.0 ]
|
||||||
|
[ "100,000.0" string>number ]
|
||||||
|
unit-test
|
||||||
|
|
||||||
[ "100.0" ]
|
[ "100.0" ]
|
||||||
[ "1.0e2" string>number number>string ]
|
[ "1.0e2" string>number number>string ]
|
||||||
unit-test
|
unit-test
|
||||||
|
|
|
@ -28,13 +28,16 @@ IN: math.parser
|
||||||
{ CHAR: d 13 }
|
{ CHAR: d 13 }
|
||||||
{ CHAR: e 14 }
|
{ CHAR: e 14 }
|
||||||
{ CHAR: f 15 }
|
{ CHAR: f 15 }
|
||||||
} at 255 or ; inline
|
{ CHAR: , f }
|
||||||
|
} at* [ drop 255 ] unless ; inline
|
||||||
|
|
||||||
: string>digits ( str -- digits )
|
: string>digits ( str -- digits )
|
||||||
[ digit> ] B{ } map-as ; inline
|
[ digit> ] B{ } map-as ; inline
|
||||||
|
|
||||||
: (digits>integer) ( valid? accum digit radix -- valid? accum )
|
: (digits>integer) ( valid? accum digit radix -- valid? accum )
|
||||||
2dup < [ swapd * + ] [ 2drop 2drop f 0 ] if ; inline
|
over [
|
||||||
|
2dup < [ swapd * + ] [ 2drop 2drop f 0 ] if
|
||||||
|
] [ 2drop ] if ; inline
|
||||||
|
|
||||||
: each-digit ( seq radix quot -- n/f )
|
: each-digit ( seq radix quot -- n/f )
|
||||||
[ t 0 ] 3dip curry each swap [ drop f ] unless ; inline
|
[ t 0 ] 3dip curry each swap [ drop f ] unless ; inline
|
||||||
|
@ -80,6 +83,7 @@ SYMBOL: negative?
|
||||||
] if ; inline
|
] if ; inline
|
||||||
|
|
||||||
: string>float ( str -- n/f )
|
: string>float ( str -- n/f )
|
||||||
|
[ CHAR: , eq? not ] filter
|
||||||
>byte-array 0 suffix (string>float) ;
|
>byte-array 0 suffix (string>float) ;
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
Loading…
Reference in New Issue