MCPcopy
hub / github.com/uber/aresdb / scan

Method scan

query/expr/scanner.go:53–146  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

51}
52
53func (s *Scanner) scan() (tok Token, pos Pos, lit string) {
54 // Read next code point.
55 ch0, pos := s.r.read()
56
57 // If we see whitespace then consume all contiguous whitespace.
58 // If we see a letter, or certain acceptable special characters, then consume
59 // as an ident or reserved word.
60 if isWhitespace(ch0) {
61 return s.scanWhitespace()
62 } else if isLetter(ch0) || ch0 == '_' {
63 s.r.unread()
64 return s.scanIdent()
65 } else if isDigit(ch0) {
66 return s.scanNumber()
67 }
68
69 // Otherwise parse individual characters.
70 switch ch0 {
71 case eof:
72 return EOF, pos, ""
73 case '`':
74 s.r.unread()
75 return s.scanIdent()
76 case '"':
77 return s.scanString()
78 case '\'':
79 return s.scanString()
80 case '.':
81 ch1, _ := s.r.read()
82 s.r.unread()
83 if isDigit(ch1) {
84 return s.scanNumber()
85 }
86 return DOT, pos, ""
87 case '+', '-':
88 if (s.lastNonWSToken > literal_beg && s.lastNonWSToken < literal_end) || s.lastNonWSToken == RPAREN {
89 if ch0 == '+' {
90 return ADD, pos, ""
91 }
92 return SUB, pos, ""
93 }
94 return s.scanNumber()
95 case '*':
96 return MUL, pos, ""
97 case '/':
98 return DIV, pos, ""
99 case '%':
100 return MOD, pos, ""
101 case '=':
102 return EQ, pos, ""
103 case '~':
104 return BITWISE_NOT, pos, ""
105 case '|':
106 return BITWISE_OR, pos, ""
107 case '&':
108 return BITWISE_AND, pos, ""
109 case '^':
110 return BITWISE_XOR, pos, ""

Callers 1

ScanMethod · 0.95

Calls 9

scanWhitespaceMethod · 0.95
scanIdentMethod · 0.95
scanNumberMethod · 0.95
scanStringMethod · 0.95
isWhitespaceFunction · 0.85
isLetterFunction · 0.85
isDigitFunction · 0.85
unreadMethod · 0.80
readMethod · 0.65

Tested by

no test coverage detected