in src/Kusto.Language/Parser/QueryParser.cs [5355:5426]
private static InfixPrecidence GetPrecedenceLevel(SyntaxKind opTokenKind)
{
switch (opTokenKind)
{
case SyntaxKind.EqualTildeToken:
case SyntaxKind.BangTildeToken:
case SyntaxKind.HasKeyword:
case SyntaxKind.ColonToken:
case SyntaxKind.NotHasKeyword:
case SyntaxKind.HasCsKeyword:
case SyntaxKind.NotHasCsKeyword:
case SyntaxKind.HasPrefixKeyword:
case SyntaxKind.NotHasPrefixKeyword:
case SyntaxKind.HasPrefixCsKeyword:
case SyntaxKind.NotHasPrefixCsKeyword:
case SyntaxKind.HasSuffixKeyword:
case SyntaxKind.NotHasSuffixKeyword:
case SyntaxKind.HasSuffixCsKeyword:
case SyntaxKind.NotHasSuffixCsKeyword:
case SyntaxKind.LikeKeyword:
case SyntaxKind.NotLikeKeyword:
case SyntaxKind.LikeCsKeyword:
case SyntaxKind.NotLikeCsKeyword:
case SyntaxKind.ContainsKeyword:
case SyntaxKind.NotContainsKeyword:
case SyntaxKind.NotBangContainsKeyword:
case SyntaxKind.ContainsCsKeyword:
case SyntaxKind.Contains_CsKeyword:
case SyntaxKind.NotContainsCsKeyword:
case SyntaxKind.NotBangContainsCsKeyword:
case SyntaxKind.StartsWithKeyword:
case SyntaxKind.NotStartsWithKeyword:
case SyntaxKind.StartsWithCsKeyword:
case SyntaxKind.NotStartsWithCsKeyword:
case SyntaxKind.EndsWithKeyword:
case SyntaxKind.NotEndsWithKeyword:
case SyntaxKind.EndsWithCsKeyword:
case SyntaxKind.NotEndsWithCsKeyword:
case SyntaxKind.MatchesRegexKeyword:
return InfixPrecidence.String;
case SyntaxKind.AsteriskToken:
case SyntaxKind.SlashToken:
case SyntaxKind.PercentToken:
return InfixPrecidence.Multiplicative;
case SyntaxKind.PlusToken:
case SyntaxKind.MinusToken:
return InfixPrecidence.Additive;
case SyntaxKind.LessThanToken:
case SyntaxKind.LessThanOrEqualToken:
case SyntaxKind.GreaterThanToken:
case SyntaxKind.GreaterThanOrEqualToken:
return InfixPrecidence.Relational;
case SyntaxKind.EqualEqualToken:
case SyntaxKind.BangEqualToken:
case SyntaxKind.LessThanGreaterThanToken:
case SyntaxKind.InKeyword:
case SyntaxKind.InCsKeyword:
case SyntaxKind.NotInKeyword:
case SyntaxKind.NotInCsKeyword:
case SyntaxKind.HasAnyKeyword:
case SyntaxKind.HasAllKeyword:
case SyntaxKind.BetweenKeyword:
case SyntaxKind.NotBetweenKeyword:
return InfixPrecidence.Equality;
case SyntaxKind.AndKeyword:
return InfixPrecidence.And;
case SyntaxKind.OrKeyword:
return InfixPrecidence.Or;
default:
return InfixPrecidence.None;
}
}