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()
25762576 let s = r .getn (3 )
25772577 let s .= r .read_xdigit ()
25782578 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)
25792583 elseif s: isdigit (c )
25802584 let s = r .read_digit ()
25812585 if r .p (0 ) == # ' .' && s: isdigit (r .p (1 ))
@@ -3945,6 +3949,14 @@ function! s:StringReader.read_xdigit()
39453949 return r
39463950endfunction
39473951
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+
39483960function ! s: StringReader .read_integer ()
39493961 let r = ' '
39503962 let c = self .peekn (1 )
Original file line number Diff line number Diff line change @@ -2324,6 +2324,11 @@ ExprTokenizer.prototype.get2 = function() {
23242324 s += r . read_xdigit ( ) ;
23252325 return this . token ( TOKEN_NUMBER , s , pos ) ;
23262326 }
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+ }
23272332 else if ( isdigit ( c ) ) {
23282333 var s = r . read_digit ( ) ;
23292334 if ( r . p ( 0 ) == "." && isdigit ( r . p ( 1 ) ) ) {
@@ -3849,6 +3854,14 @@ StringReader.prototype.read_xdigit = function() {
38493854 return r ;
38503855}
38513856
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+
38523865StringReader . prototype . read_integer = function ( ) {
38533866 var r = "" ;
38543867 var c = this . peekn ( 1 ) ;
Original file line number Diff line number Diff line change @@ -1856,6 +1856,10 @@ def get2(self):
18561856 s = r .getn (3 )
18571857 s += r .read_xdigit ()
18581858 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 )
18591863 elif isdigit (c ):
18601864 s = r .read_digit ()
18611865 if r .p (0 ) == "." and isdigit (r .p (1 )):
@@ -3059,6 +3063,12 @@ def read_xdigit(self):
30593063 r += self .getn (1 )
30603064 return r
30613065
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+
30623072 def read_integer (self ):
30633073 r = ""
30643074 c = self .peekn (1 )
Original file line number Diff line number Diff line change 22(echo 1.0)
33(echo 1.23)
44(echo 0xdeadbeef)
5+ (echo 0Xdeadbeef)
56(echo 033)
67(echo 1.2e-3)
78(echo 4.5E+67)
89(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 22echo 1.0
33echo 1.23
44echo 0xdeadbeef
5+ echo 0Xdeadbeef
56echo 033
67echo 1.2e-3
78echo 4.5E+67
89echo 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