@@ -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.
195198func (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.
205208func (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 ++
0 commit comments