]> gitweb.factorcode.org Git - factor.git/commitdiff
math.parser: allow 0B, 0O, and 0X number prefixes.
authorJohn Benediktsson <mrjbq7@gmail.com>
Thu, 15 Jun 2017 22:53:01 +0000 (15:53 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 15 Jun 2017 22:53:01 +0000 (15:53 -0700)
core/math/parser/parser-tests.factor
core/math/parser/parser.factor

index 24ccd1aab81efb3e54f545d9bcc45eb494b3eb1f..017f208d79e35adde5228261e406eb0d59dd862d 100644 (file)
@@ -318,6 +318,14 @@ unit-test
 {  -8 } [ "-0o10" string>number ] unit-test
 {  -2 } [ "-0b10" string>number ] unit-test
 
+{ 16 } [ "0X10" string>number ] unit-test
+{  8 } [ "0O10" string>number ] unit-test
+{  2 } [ "0B10" string>number ] unit-test
+
+{ -16 } [ "-0X10" string>number ] unit-test
+{  -8 } [ "-0O10" string>number ] unit-test
+{  -2 } [ "-0B10" string>number ] unit-test
+
 { f } [ "01a" string>number ] unit-test
 { f } [ "0x1g" string>number ] unit-test
 { f } [ "0o18" string>number ] unit-test
index 5a683d921db6922d647f0d58ee6940901c0265b7..db8b42c2e4028a3bbf29e3300115414879fea9fc 100644 (file)
@@ -306,11 +306,11 @@ DEFER: @neg-digit
 : with-radix-char ( i number-parse n radix-quot nonradix-quot -- n/f )
     [
         rot {
-            { CHAR: b [ drop  2 ->radix require-next-digit ] }
-            { CHAR: o [ drop  8 ->radix require-next-digit ] }
-            { CHAR: x [ drop 16 ->radix require-next-digit ] }
+            { [ dup "bB" member-eq? ] [ 2drop  2 ->radix require-next-digit ] }
+            { [ dup "oO" member-eq? ] [ 2drop  8 ->radix require-next-digit ] }
+            { [ dup "xX" member-eq? ] [ 2drop 16 ->radix require-next-digit ] }
             [ [ drop ] 2dip swap call ]
-        } case
+        } cond
     ] 2curry next-digit ; inline
 
 : @pos-first-digit ( i number-parse n char -- n/f )