Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision a16764a6fbfe44300fc8834400a31c89befda091)
+++ src/Parser/ExpressionNode.cc	(revision deb52a099a531df5b0f8d93d94f08c9597703efb)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Sep 27 22:51:55 2017
-// Update Count     : 781
+// Last Modified On : Sat Mar  3 18:22:33 2018
+// Update Count     : 796
 //
 
@@ -58,4 +58,5 @@
 static inline bool checkD( char c ) { return c == 'd' || c == 'D'; }
 static inline bool checkI( char c ) { return c == 'i' || c == 'I'; }
+static inline bool checkB( char c ) { return c == 'b' || c == 'B'; }
 static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
 
@@ -116,5 +117,5 @@
 
 	unsigned long long int v;							// converted integral value
-	size_t last = str.length() - 1;						// last character of constant
+	size_t last = str.length() - 1;						// last subscript of constant
 	Expression * ret;
 
@@ -129,8 +130,18 @@
 	} // if
 
-	if ( str[0] == '0' ) {								// octal/hex constant ?
+	// Cannot be "0"
+
+	if ( str[0] == '0' ) {								// radix character ?
 		dec = false;
-		if ( last != 0 && checkX( str[1] ) ) {			// hex constant ?
+		if ( checkX( str[1] ) ) {						// hex constant ?
 			sscanf( (char *)str.c_str(), "%llx", &v );
+			//printf( "%llx %llu\n", v, v );
+		} else if ( checkB( str[1] ) ) {				// binary constant ?
+			v = 0;
+			for ( unsigned int i = 2;; i += 1 ) {		// compute value
+				if ( str[i] == '1' ) v |= 1;
+			  if ( i == last ) break;
+				v <<= 1;
+			} // for
 			//printf( "%llx %llu\n", v, v );
 		} else {										// octal constant
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision a16764a6fbfe44300fc8834400a31c89befda091)
+++ src/Parser/lex.ll	(revision deb52a099a531df5b0f8d93d94f08c9597703efb)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Thu Feb 22 18:11:27 2018
- * Update Count     : 637
+ * Last Modified On : Sat Mar  3 18:38:16 2018
+ * Update Count     : 640
  */
 
@@ -77,4 +77,5 @@
 %}
 
+binary [0-1]
 octal [0-7]
 nonzero [1-9]
@@ -103,4 +104,8 @@
 nonzero_digits ({nonzero})|({nonzero}({decimal}|"_")*{decimal})
 decimal_constant {nonzero_digits}{integer_suffix_opt}
+
+binary_digits ({binary})|({binary}({binary}|"_")*{binary})
+binary_prefix "0"[bB]"_"?
+binary_constant {binary_prefix}{binary_digits}{integer_suffix_opt}
 
 hex_digits ({hex})|({hex}({hex}|"_")*{hex})
@@ -315,6 +320,7 @@
 
 				/* numeric constants */
+{binary_constant} { NUMERIC_RETURN(INTEGERconstant); }
+{octal_constant} { NUMERIC_RETURN(INTEGERconstant); }
 {decimal_constant} { NUMERIC_RETURN(INTEGERconstant); }
-{octal_constant} { NUMERIC_RETURN(INTEGERconstant); }
 {hex_constant}	{ NUMERIC_RETURN(INTEGERconstant); }
 {floating_decimal}	{ NUMERIC_RETURN(FLOATING_DECIMALconstant); } // must appear before floating_constant
