| 2207 | return null; |
| 2208 | } |
| 2209 | _operator() { |
| 2210 | let length = 0; |
| 2211 | const c0 = this._get(this._position); |
| 2212 | const c1 = this._get(this._position + 1); |
| 2213 | const c2 = this._get(this._position + 2); |
| 2214 | switch (c0) { |
| 2215 | case '+': case '&': case '|': case '^': case '=': case '!': case '%': case '~': |
| 2216 | length = c1 === '=' ? 2 : 1; |
| 2217 | break; |
| 2218 | case '-': |
| 2219 | length = c1 === '=' || c1 === '>' ? 2 : 1; |
| 2220 | break; |
| 2221 | case '*': |
| 2222 | switch (c1) { |
| 2223 | case '*': length = c2 === '=' ? 3 : 2; break; |
| 2224 | case '=': length = 2; break; |
| 2225 | default: length = 1; break; |
| 2226 | } |
| 2227 | break; |
| 2228 | case '/': |
| 2229 | switch (c1) { |
| 2230 | case '/': length = c2 === '=' ? 3 : 2; break; |
| 2231 | case '=': length = 2; break; |
| 2232 | default: length = 1; break; |
| 2233 | } |
| 2234 | break; |
| 2235 | case '<': |
| 2236 | switch (c1) { |
| 2237 | case '>': length = 2; break; |
| 2238 | case '<': length = c2 === '=' ? 3 : 2; break; |
| 2239 | case '=': length = 2; break; |
| 2240 | default: length = 1; break; |
| 2241 | } |
| 2242 | break; |
| 2243 | case '>': |
| 2244 | switch (c1) { |
| 2245 | case '>': length = c2 === '=' ? 3 : 2; break; |
| 2246 | case '=': length = 2; break; |
| 2247 | default: length = 1; break; |
| 2248 | } |
| 2249 | break; |
| 2250 | case '@': |
| 2251 | length = c1 === '=' ? 2 : 1; |
| 2252 | break; |
| 2253 | case ':': |
| 2254 | length = c1 === '=' ? 2 : 1; |
| 2255 | break; |
| 2256 | default: |
| 2257 | return null; |
| 2258 | } |
| 2259 | const text = this._text.substring(this._position, this._position + length); |
| 2260 | return { type: text, value: text }; |
| 2261 | } |
| 2262 | _string() { |
| 2263 | let i = this._position; |
| 2264 | let prefix = -1; |