File tree Expand file tree Collapse file tree 2 files changed +22
-1
lines changed
Expand file tree Collapse file tree 2 files changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -74,6 +74,23 @@ static size_t peek_hex_literal(struct mrsh_parser *parser) {
7474 return i ;
7575}
7676
77+ static size_t peek_binary_literal (struct mrsh_parser * parser ) {
78+ size_t i = 2 ; // We already know '0b' prefix is there
79+
80+ while (true) {
81+ parser_peek (parser , NULL , i + 1 );
82+
83+ char c = parser -> buf .data [i ];
84+ if (c != '0' && c != '1' ) {
85+ break ;
86+ }
87+
88+ ++ i ;
89+ }
90+
91+ return i ;
92+ }
93+
7794static size_t peek_literal (struct mrsh_parser * parser ) {
7895 size_t i = 0 ;
7996
@@ -85,9 +102,10 @@ static size_t peek_literal(struct mrsh_parser *parser) {
85102 parser_peek (parser , NULL , 2 );
86103
87104 c = parser -> buf .data [1 ];
88- // TODO: 0b prefix
89105 if (c == 'x' || c == 'X' ) {
90106 return peek_hex_literal (parser );
107+ } else if (c == 'b' || c == 'B' ) {
108+ return peek_binary_literal (parser );
91109 }
92110 }
93111
Original file line number Diff line number Diff line change @@ -4,6 +4,9 @@ echo "1 =" $((1))
44echo " 0x0 = " $(( 0x0 ))
55echo " 0x100 = " $(( 0x100 ))
66echo " 0xabcd = " $(( 0xabcd ))
7+ echo " 0b0 = " $(( 0 b0 ))
8+ echo " 0b1010 = " $(( 0 b1010 ))
9+ echo " 0B1111 = " $(( 0 B1111 ))
710echo " 2*5 =" $(( 2 * 5 ))
811echo " 2/5 =" $(( 2 / 5 ))
912echo " 2%5 =" $(( 2 % 5 ))
You can’t perform that action at this time.
0 commit comments