File tree Expand file tree Collapse file tree 5 files changed +47
-0
lines changed Expand file tree Collapse file tree 5 files changed +47
-0
lines changed Original file line number Diff line number Diff line change @@ -2576,6 +2576,10 @@ function! s:ExprTokenizer.get2()
2576
2576
let s = r .getn (3 )
2577
2577
let s .= r .read_xdigit ()
2578
2578
return self .token (s: TOKEN_NUMBER , s , pos)
2579
+ elseif c == # ' 0' && (r .p (1 ) == # ' B' || r .p (1 ) == # ' b' ) && (r .p (2 ) == ' 0' || r .p (2 ) == ' 1' )
2580
+ let s = r .getn (3 )
2581
+ let s .= r .read_bdigit ()
2582
+ return self .token (s: TOKEN_NUMBER , s , pos)
2579
2583
elseif s: isdigit (c )
2580
2584
let s = r .read_digit ()
2581
2585
if r .p (0 ) == # ' .' && s: isdigit (r .p (1 ))
@@ -3945,6 +3949,14 @@ function! s:StringReader.read_xdigit()
3945
3949
return r
3946
3950
endfunction
3947
3951
3952
+ function ! s: StringReader .read_bdigit ()
3953
+ let r = ' '
3954
+ while self .peekn (1 ) == ' 0' || self .peekn (1 ) == ' 1'
3955
+ let r .= self .getn (1 )
3956
+ endwhile
3957
+ return r
3958
+ endfunction
3959
+
3948
3960
function ! s: StringReader .read_integer ()
3949
3961
let r = ' '
3950
3962
let c = self .peekn (1 )
Original file line number Diff line number Diff line change @@ -2324,6 +2324,11 @@ ExprTokenizer.prototype.get2 = function() {
2324
2324
s += r . read_xdigit ( ) ;
2325
2325
return this . token ( TOKEN_NUMBER , s , pos ) ;
2326
2326
}
2327
+ else if ( c == "0" && ( r . p ( 1 ) == "B" || r . p ( 1 ) == "b" ) && ( r . p ( 2 ) == "0" || r . p ( 2 ) == "1" ) ) {
2328
+ var s = r . getn ( 3 ) ;
2329
+ s += r . read_bdigit ( ) ;
2330
+ return this . token ( TOKEN_NUMBER , s , pos ) ;
2331
+ }
2327
2332
else if ( isdigit ( c ) ) {
2328
2333
var s = r . read_digit ( ) ;
2329
2334
if ( r . p ( 0 ) == "." && isdigit ( r . p ( 1 ) ) ) {
@@ -3849,6 +3854,14 @@ StringReader.prototype.read_xdigit = function() {
3849
3854
return r ;
3850
3855
}
3851
3856
3857
+ StringReader . prototype . read_bdigit = function ( ) {
3858
+ var r = "" ;
3859
+ while ( this . peekn ( 1 ) == "0" || this . peekn ( 1 ) == "1" ) {
3860
+ r += this . getn ( 1 ) ;
3861
+ }
3862
+ return r ;
3863
+ }
3864
+
3852
3865
StringReader . prototype . read_integer = function ( ) {
3853
3866
var r = "" ;
3854
3867
var c = this . peekn ( 1 ) ;
Original file line number Diff line number Diff line change @@ -1856,6 +1856,10 @@ def get2(self):
1856
1856
s = r .getn (3 )
1857
1857
s += r .read_xdigit ()
1858
1858
return self .token (TOKEN_NUMBER , s , pos )
1859
+ elif c == "0" and (r .p (1 ) == "B" or r .p (1 ) == "b" ) and (r .p (2 ) == "0" or r .p (2 ) == "1" ):
1860
+ s = r .getn (3 )
1861
+ s += r .read_bdigit ()
1862
+ return self .token (TOKEN_NUMBER , s , pos )
1859
1863
elif isdigit (c ):
1860
1864
s = r .read_digit ()
1861
1865
if r .p (0 ) == "." and isdigit (r .p (1 )):
@@ -3059,6 +3063,12 @@ def read_xdigit(self):
3059
3063
r += self .getn (1 )
3060
3064
return r
3061
3065
3066
+ def read_bdigit (self ):
3067
+ r = ""
3068
+ while self .peekn (1 ) == "0" or self .peekn (1 ) == "1" :
3069
+ r += self .getn (1 )
3070
+ return r
3071
+
3062
3072
def read_integer (self ):
3063
3073
r = ""
3064
3074
c = self .peekn (1 )
Original file line number Diff line number Diff line change 2
2
(echo 1.0)
3
3
(echo 1.23)
4
4
(echo 0xdeadbeef)
5
+ (echo 0Xdeadbeef)
5
6
(echo 033)
6
7
(echo 1.2e-3)
7
8
(echo 4.5E+67)
8
9
(echo 4.5e8)
10
+ (echo 0b1011)
11
+ (echo 0b0)
12
+ (echo 0B1011)
13
+ (echo 0B0)
14
+ (echo 0b01 23)
Original file line number Diff line number Diff line change 2
2
echo 1.0
3
3
echo 1.23
4
4
echo 0xdeadbeef
5
+ echo 0Xdeadbeef
5
6
echo 033
6
7
echo 1.2e-3
7
8
echo 4.5E+67
8
9
echo 4.5e8
10
+ echo 0 b1011
11
+ echo 0 b0
12
+ echo 0 B1011
13
+ echo 0 B0
14
+ echo 0 b0123
You can’t perform that action at this time.
0 commit comments