File tree Expand file tree Collapse file tree 2 files changed +21
-8
lines changed Expand file tree Collapse file tree 2 files changed +21
-8
lines changed Original file line number Diff line number Diff line change @@ -2332,7 +2332,7 @@ ExprTokenizer.prototype.get2 = function() {
2332
2332
return this . token ( TOKEN_NUMBER , s , pos ) ;
2333
2333
}
2334
2334
else if ( c == "0" && ( r . p ( 1 ) == "Z" || r . p ( 1 ) == "z" ) && r . p ( 2 ) != "." ) {
2335
- var s = r . getn ( 3 ) ;
2335
+ var s = r . getn ( 2 ) ;
2336
2336
s += r . read_blob ( ) ;
2337
2337
return this . token ( TOKEN_BLOB , s , pos ) ;
2338
2338
}
@@ -3861,11 +3861,19 @@ StringReader.prototype.read_odigit = function() {
3861
3861
StringReader . prototype . read_blob = function ( ) {
3862
3862
var r = "" ;
3863
3863
while ( 1 ) {
3864
- var c = this . peekn ( 1 ) ;
3865
- if ( ! isxdigit ( c ) && c != ". ") {
3864
+ var s = this . peekn ( 2 ) ;
3865
+ if ( s == " ") {
3866
3866
break ;
3867
3867
}
3868
- r += this . getn ( 1 ) ;
3868
+ else if ( viml_eqregh ( s , "^[0-9A-Fa-f][0-9A-Fa-f]$" ) ) {
3869
+ r += this . getn ( 2 ) ;
3870
+ }
3871
+ else if ( viml_eqregh ( s , "^\\.[0-9A-Fa-f]$" ) ) {
3872
+ r += this . getn ( 1 ) ;
3873
+ }
3874
+ else {
3875
+ throw Err ( "E973: Blob literal should have an even number of hex characters:" + s , this . getpos ( ) ) ;
3876
+ }
3869
3877
}
3870
3878
return r ;
3871
3879
}
Original file line number Diff line number Diff line change @@ -1863,7 +1863,7 @@ def get2(self):
1863
1863
s += r .read_bdigit ()
1864
1864
return self .token (TOKEN_NUMBER , s , pos )
1865
1865
elif c == "0" and (r .p (1 ) == "Z" or r .p (1 ) == "z" ) and r .p (2 ) != "." :
1866
- s = r .getn (3 )
1866
+ s = r .getn (2 )
1867
1867
s += r .read_blob ()
1868
1868
return self .token (TOKEN_BLOB , s , pos )
1869
1869
elif isdigit (c ):
@@ -3070,10 +3070,15 @@ def read_odigit(self):
3070
3070
def read_blob (self ):
3071
3071
r = ""
3072
3072
while 1 :
3073
- c = self .peekn (1 )
3074
- if not isxdigit ( c ) and c != ". " :
3073
+ s = self .peekn (2 )
3074
+ if s == " " :
3075
3075
break
3076
- r += self .getn (1 )
3076
+ elif viml_eqregh (s , "^[0-9A-Fa-f][0-9A-Fa-f]$" ):
3077
+ r += self .getn (2 )
3078
+ elif viml_eqregh (s , "^\\ .[0-9A-Fa-f]$" ):
3079
+ r += self .getn (1 )
3080
+ else :
3081
+ raise VimLParserException (Err ("E973: Blob literal should have an even number of hex characters:" + s , self .getpos ()))
3077
3082
return r
3078
3083
3079
3084
def read_xdigit (self ):
You can’t perform that action at this time.
0 commit comments