function scan()

in packages/core/nano/src/parser.ts [282:386]


    function scan(): SyntaxKind {
        wsTokenPos = pos;
        tokenFlags = TokenFlags.None;
        while (true) {
            tokenPos = pos;
            if (pos >= end) {
                return (token = SyntaxKind.EndOfInputToken);
            }
            const ch = text.charCodeAt(pos);
            if (isWhitespaceChar(ch)) {
                pos += 1;
                continue;
            }
            switch (ch) {
                case CharacterCodes.lineFeed:
                case CharacterCodes.carriageReturn:
                    pos += 1;
                    continue;

                case CharacterCodes.asterisk:
                    pos += 1;
                    return (token = SyntaxKind.AsteriskToken);
                case CharacterCodes.caret:
                    pos += 1;
                    return (token = SyntaxKind.CaretToken);
                case CharacterCodes.minus:
                    pos += 1;
                    return (token = SyntaxKind.MinusToken);
                case CharacterCodes.plus:
                    pos += 1;
                    return (token = SyntaxKind.PlusToken);
                case CharacterCodes.dot:
                    pos += 1;
                    return (token = SyntaxKind.DotToken);
                case CharacterCodes.slash:
                    pos += 1;
                    return (token = SyntaxKind.SlashToken);
                case CharacterCodes.comma:
                    pos += 1;
                    return (token = SyntaxKind.CommaToken);
                case CharacterCodes.equals:
                    pos += 1;
                    return (token = SyntaxKind.EqualsToken);

                case CharacterCodes.lessThan:
                    pos += 1;
                    if (pos < end && text.charCodeAt(pos) === CharacterCodes.equals) {
                        pos += 1;
                        return (token = SyntaxKind.LessThanEqualsToken);
                    }
                    if (pos < end && text.charCodeAt(pos) === CharacterCodes.greaterThan) {
                        pos += 1;
                        return (token = SyntaxKind.NotEqualsToken);
                    }
                    return (token = SyntaxKind.LessThanToken);

                case CharacterCodes.greaterThan:
                    pos += 1;
                    if (pos < end && text.charCodeAt(pos) === CharacterCodes.equals) {
                        pos += 1;
                        return (token = SyntaxKind.GreaterThanEqualsToken);
                    }
                    return (token = SyntaxKind.GreaterThanToken);

                case CharacterCodes.openParen:
                    pos += 1;
                    return (token = SyntaxKind.OpenParenToken);
                case CharacterCodes.closeParen:
                    pos += 1;
                    return (token = SyntaxKind.CloseParenToken);

                case CharacterCodes.openBrace:
                    tokenValue = scanString(CharacterCodes.closeBrace);
                    tokenFlags |= TokenFlags.Quoted;
                    return (token = SyntaxKind.Identifier);

                case CharacterCodes.doubleQuote:
                case CharacterCodes.singleQuote:
                    tokenValue = scanString(ch);
                    return (token = SyntaxKind.StringLiteral);

                case CharacterCodes._0:
                case CharacterCodes._1:
                case CharacterCodes._2:
                case CharacterCodes._3:
                case CharacterCodes._4:
                case CharacterCodes._5:
                case CharacterCodes._6:
                case CharacterCodes._7:
                case CharacterCodes._8:
                case CharacterCodes._9:
                    tokenValue = scanNumber();
                    return (token = SyntaxKind.NumberLiteral);

                default:
                    if (isIdentifierStart(ch)) {
                        ({ type: token, value: tokenValue } = scanIdentifier());
                        return token;
                    }
                    onScanError("Unknown Character", pos, pos);
                    pos += 1;
                    return (token = SyntaxKind.Unknown);
            }
        }
    }