Tup.Cobar4Net.Parser.Recognizer.Mysql.Syntax.MySqlExprParser.MatchExpression C# (CSharp) Method

MatchExpression() private method

first MATCH has been consumed
private MatchExpression ( ) : IExpression
return IExpression
        private IExpression MatchExpression()
        {
            Match(MySqlToken.PuncLeftParen);
            var colList = ExpressionList(new List<IExpression>());
            MatchIdentifier("AGAINST");
            Match(MySqlToken.PuncLeftParen);
            var pattern = Expression();
            var modifier = MatchModifier.Default;
            switch (lexer.Token())
            {
                case MySqlToken.KwWith:
                {
                    lexer.NextToken();
                    Match(MySqlToken.Identifier);
                    Match(MySqlToken.Identifier);
                    modifier = MatchModifier.WithQueryExpansion;
                    break;
                }

                case MySqlToken.KwIn:
                {
                    switch (lexer.NextToken())
                    {
                        case MySqlToken.KwNatural:
                        {
                            lexer.NextToken();
                            MatchIdentifier("LANGUAGE");
                            MatchIdentifier("MODE");
                            if (lexer.Token() == MySqlToken.KwWith)
                            {
                                lexer.NextToken();
                                lexer.NextToken();
                                lexer.NextToken();
                                modifier = MatchModifier.InNaturalLanguageModeWithQueryExpansion;
                            }
                            else
                            {
                                modifier = MatchModifier.InNaturalLanguageMode;
                            }
                            break;
                        }

                        default:
                        {
                            MatchIdentifier("BOOLEAN");
                            MatchIdentifier("MODE");
                            modifier = MatchModifier.InBooleanMode;
                            break;
                        }
                    }
                    break;
                }
            }
            Match(MySqlToken.PuncRightParen);
            return new MatchExpr(colList, pattern, modifier).SetCacheEvalRst(cacheEvalRst);
        }