]> gitweb.factorcode.org Git - factor.git/commitdiff
allow commas in numeric literals
authorJoe Groff <joe@victoria.(none)>
Mon, 10 Aug 2009 23:33:27 +0000 (19:33 -0400)
committerJoe Groff <joe@victoria.(none)>
Mon, 10 Aug 2009 23:33:27 +0000 (19:33 -0400)
core/math/parser/parser-tests.factor
core/math/parser/parser.factor

index c655965e353f817e10e9e190c4a33728f870eabd..2b440b24d43972f23021c6cc5206bbdc5015b201 100644 (file)
@@ -25,6 +25,14 @@ unit-test
 [ "e" string>number ]
 unit-test
 
+[ 100000 ]
+[ "100,000" string>number ]
+unit-test
+
+[ 100000.0 ]
+[ "100,000.0" string>number ]
+unit-test
+
 [ "100.0" ]
 [ "1.0e2" string>number number>string ]
 unit-test
index 437308d53f8f316f5c4c3e2b372630fc283db028..cc01699bd4d2790ae1de5fb99660fd55de3915ed 100644 (file)
@@ -28,13 +28,16 @@ IN: math.parser
         { CHAR: d 13 }
         { CHAR: e 14 }
         { CHAR: f 15 }
-    } at 255 or ; inline
+        { CHAR: , f }
+    } at* [ drop 255 ] unless ; inline
 
 : string>digits ( str -- digits )
     [ digit> ] B{ } map-as ; inline
 
 : (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 )
     [ t 0 ] 3dip curry each swap [ drop f ] unless ; inline
@@ -80,6 +83,7 @@ SYMBOL: negative?
     ] if ; inline
 
 : string>float ( str -- n/f )
+    [ CHAR: , eq? not ] filter
     >byte-array 0 suffix (string>float) ;
 
 PRIVATE>