Skip to content

Commit 483cf7c

Browse files
committed
Restore whitespace constant
1 parent 87dc886 commit 483cf7c

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

parser/lex.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ const (
5050
// Token literals.
5151
nullByte = 0x00
5252
backslash = '\\'
53+
54+
// blanks selects blank space characters.
55+
blanks = uint64(1<<'\t' | 1<<'\n' | 1<<'\r' | 1<<' ')
5356
)
5457

5558
// name returns the token name, a string for special tokens and a quoted rune
@@ -149,7 +152,7 @@ func (lex *lexer) scan() token {
149152
lex.prev = lex.scanNumber()
150153
case lex.r == '"' || lex.r == '\'':
151154
lex.prev = lex.scanString()
152-
case lex.isBlankSpace(lex.r):
155+
case isBlankSpace(lex.r):
153156
lex.prev = lex.scanBlankSpace()
154157
default:
155158
lex.prev = token{lex.r, "", lex.rPos}
@@ -194,7 +197,7 @@ func (lex *lexer) peek() rune {
194197
// scanBlankSpace scan and returns a token of blank spaces.
195198
func (lex *lexer) scanBlankSpace() token {
196199
startPos := lex.rPos
197-
for lex.isBlankSpace(lex.r) {
200+
for isBlankSpace(lex.r) {
198201
lex.next()
199202
}
200203
return token{blankSpace, lex.buf[startPos:lex.rPos], startPos}
@@ -203,19 +206,15 @@ func (lex *lexer) scanBlankSpace() token {
203206
// skipBlankSpace skips blank spaces from the current position until the next
204207
// non-blank space token.
205208
func (lex *lexer) skipBlankSpace() rune {
206-
if lex.isBlankSpace(lex.r) {
209+
if isBlankSpace(lex.r) {
207210
lex.scan()
208211
}
209212
return lex.r
210213
}
211214

212215
// isBlankSpace returns true if r is blank space.
213-
func (lex *lexer) isBlankSpace(r rune) bool {
214-
switch r {
215-
case '\t', '\n', '\r', ' ':
216-
return true
217-
}
218-
return false
216+
func isBlankSpace(r rune) bool {
217+
return blanks&(1<<uint64(r)) != 0
219218
}
220219

221220
// peekPastBlankSpace returns the next non-blank space rune from the current
@@ -224,7 +223,7 @@ func (lex *lexer) peekPastBlankSpace() rune {
224223
np := lex.nextPos
225224
for np < len(lex.buf) {
226225
r := rune(lex.buf[np])
227-
if !lex.isBlankSpace(r) {
226+
if !isBlankSpace(r) {
228227
return r
229228
}
230229
np++

parser/parse.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func (p *parser) parseQuery(root bool) (*spec.PathQuery, error) {
9696
return nil, err
9797
}
9898
segs = append(segs, spec.Child(sel))
99-
case lex.isBlankSpace(lex.r):
99+
case isBlankSpace(lex.r):
100100
switch lex.peekPastBlankSpace() {
101101
case '.', '[':
102102
lex.scanBlankSpace()

0 commit comments

Comments
 (0)