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;
}