Skip to content

Commit 20c06f1

Browse files
committed
Re-gen
1 parent eadfcc2 commit 20c06f1

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

js/vimlparser.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff 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() {
38613861
StringReader.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
}

py/vimlparser.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff 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):

0 commit comments

Comments
 (0)