in smithy-jmespath/src/main/java/software/amazon/smithy/jmespath/Lexer.java [48:146]
TokenIterator doTokenize() {
while (!eof()) {
char c = peek();
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_') {
tokens.add(parseIdentifier());
continue;
}
if (c == '-' || (c >= '0' && c <= '9')) {
tokens.add(parseNumber());
continue;
}
switch (c) {
case '.':
tokens.add(new Token(TokenType.DOT, null, line, column));
skip();
break;
case '[':
tokens.add(parseLbracket());
break;
case '*':
tokens.add(new Token(TokenType.STAR, null, line, column));
skip();
break;
case '|':
tokens.add(parseAlternatives('|', TokenType.OR, TokenType.PIPE));
break;
case '@':
tokens.add(new Token(TokenType.CURRENT, null, line, column));
skip();
break;
case ']':
tokens.add(new Token(TokenType.RBRACKET, null, line, column));
skip();
break;
case '{':
tokens.add(new Token(TokenType.LBRACE, null, line, column));
skip();
break;
case '}':
tokens.add(new Token(TokenType.RBRACE, null, line, column));
skip();
break;
case '&':
tokens.add(parseAlternatives('&', TokenType.AND, TokenType.EXPREF));
break;
case '(':
tokens.add(new Token(TokenType.LPAREN, null, line, column));
skip();
break;
case ')':
tokens.add(new Token(TokenType.RPAREN, null, line, column));
skip();
break;
case ',':
tokens.add(new Token(TokenType.COMMA, null, line, column));
skip();
break;
case ':':
tokens.add(new Token(TokenType.COLON, null, line, column));
skip();
break;
case '"':
tokens.add(parseString());
break;
case '\'':
tokens.add(parseRawStringLiteral());
break;
case '`':
tokens.add(parseLiteral());
break;
case '=':
tokens.add(parseEquals());
break;
case '>':
tokens.add(parseAlternatives('=', TokenType.GREATER_THAN_EQUAL, TokenType.GREATER_THAN));
break;
case '<':
tokens.add(parseAlternatives('=', TokenType.LESS_THAN_EQUAL, TokenType.LESS_THAN));
break;
case '!':
tokens.add(parseAlternatives('=', TokenType.NOT_EQUAL, TokenType.NOT));
break;
case ' ':
case '\n':
case '\r':
case '\t':
skip();
break;
default:
throw syntax("Unexpected syntax: " + peekSingleCharForMessage());
}
}
tokens.add(new Token(TokenType.EOF, null, line, column));
return new TokenIterator(tokens);
}