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() {
23322332 return this . token ( TOKEN_NUMBER , s , pos ) ;
23332333 }
23342334 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 ) ;
23362336 s += r . read_blob ( ) ;
23372337 return this . token ( TOKEN_BLOB , s , pos ) ;
23382338 }
@@ -3861,11 +3861,19 @@ StringReader.prototype.read_odigit = function() {
38613861StringReader . prototype . read_blob = function ( ) {
38623862 var r = "" ;
38633863 while ( 1 ) {
3864- var c = this . peekn ( 1 ) ;
3865- if ( ! isxdigit ( c ) && c != ". ") {
3864+ var s = this . peekn ( 2 ) ;
3865+ if ( s == " ") {
38663866 break ;
38673867 }
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+ }
38693877 }
38703878 return r ;
38713879}
Original file line number Diff line number Diff line change @@ -1863,7 +1863,7 @@ def get2(self):
18631863 s += r .read_bdigit ()
18641864 return self .token (TOKEN_NUMBER , s , pos )
18651865 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 )
18671867 s += r .read_blob ()
18681868 return self .token (TOKEN_BLOB , s , pos )
18691869 elif isdigit (c ):
@@ -3070,10 +3070,15 @@ def read_odigit(self):
30703070 def read_blob (self ):
30713071 r = ""
30723072 while 1 :
3073- c = self .peekn (1 )
3074- if not isxdigit ( c ) and c != ". " :
3073+ s = self .peekn (2 )
3074+ if s == " " :
30753075 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 ()))
30773082 return r
30783083
30793084 def read_xdigit (self ):
You can’t perform that action at this time.
0 commit comments