private static TokenInfo GetPunctuationTokenInfo()

in src/Kusto.Language/Parser/TokenParser.cs [201:284]


        private static TokenInfo GetPunctuationTokenInfo(string text, int start)
        {
            int pos = start;
            var ch = Peek(text, pos);
            char ch2;

            switch (ch)
            {
                case '(':
                    return OpenParenTokenInfo;
                case ')':
                    return CloseParenTokenInfo;
                case '[':
                    return OpenBracketTokenInfo;
                case ']':
                    return CloseBracketTokenInfo;
                case '{':
                    return OpenBraceTokenInfo;
                case '}':
                    return CloseBraceTokenInfo;
                case '|':
                    return BarTokenInfo;
                case '.':
                    if (Peek(text, pos + 1) == '.')
                        return DotDotTokenInfo;
                    return DotTokenInfo;
                case '+':
                    return PlusTokenInfo;
                case '-':
                    return MinusTokenInfo;
                case '*':
                    return AsteriskTokenInfo;
                case '/':
                    return SlashTokenInfo;
                case '%':
                    return PercentTokenInfo;
                case '<':
                    ch2 = Peek(text, pos + 1);
                    if (ch2 == '=')
                        return LessThanOrEqualTokenInfo;
                    else if (ch2 == '|')
                        return LessThanBarTokenInfo;
                    else if (ch2 == '>')
                        return LessThanGreaterThanTokenInfo;
                    return LessThanTokenInfo;
                case '>':
                    if (Peek(text, pos + 1) == '=')
                        return GreaterThanOrEqualTokenInfo;
                    return GreaterThanTokenInfo;
                case '=':
                    ch2 = Peek(text, pos + 1);
                    if (ch2 == '=')
                        return EqualEqualTokenInfo;
                    else if (ch2 == '>')
                        return FatArrowTokenInfo;
                    else if (ch2 == '~')
                        return EqualTildeTokenInfo;
                    return EqualTokenInfo;
                case '!':
                    ch2 = Peek(text, pos + 1);
                    if (ch2 == '=')
                        return BangEqualTokenInfo;
                    else if (ch2 == '~')
                        return BangTildeTokenInfo;
                    break;
                case ':':
                    return ColonTokenInfo;
                case ';':
                    return SemicolonTokenInfo;
                case ',':
                    return CommaTokenInfo;
                case '@':
                    ch2 = Peek(text, pos + 1);
                    if (ch2 != '\'' && ch2 != '"' && ch2 != '`')
                    {
                        return AtTokenInfo;
                    }
                    break;
                case '?':
                    return QuestionTokenInfo;
            }

            return null;
        }