mescc: Support binary constants.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sat, 6 May 2017 16:16:24 +0000 (18:16 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sat, 6 May 2017 16:16:24 +0000 (18:16 +0200)
* module/language/c99/compiler.mes (cstring->number): Support binary 0bxxx values.
* scaffold/t.c (math_test): Test it.

module/language/c99/compiler.mes
scaffold/t.c

index 2b5547811ab6e5cc2f622e26468397fbd5864519..a734c2847f1db2eb9b05855e59d1a88842e8701f 100644 (file)
 
 (define (cstring->number s)
   (cond ((string-prefix? "0x" s) (string->number (string-drop s 2) 16))
+        ((string-prefix? "0b" s) (string->number (string-drop s 2) 2))
         ((string-prefix? "0" s) (string->number s 8))
         (else (string->number s))))
 
index 8ad923696561714a2afdf764c0e8e1a86d796f41..015c934d90310b78f05510338a5ffac510ced5ce 100644 (file)
@@ -347,6 +347,15 @@ math_test ()
   puts ("t: 3 != 3\n");
   if ((3 != 3) !=  0) return 1;
 
+  puts ("t: 011 == 15\n");
+  if (011 != 9) return 1;
+
+  puts ("t: 0b11 == 3\n");
+  if (0b11 != 3) return 1;
+
+  puts ("t: 0x11 == 3\n");
+  if (0x11 != 17) return 1;
+
   return array_test (env);
 }