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

IntervalExpression() private method

first INTERVAL has been consumed
private IntervalExpression ( ) : IExpression
return IExpression
        private IExpression IntervalExpression()
        {
            IExpression fstExpr;
            IList<IExpression> argList = null;
            if (lexer.Token() == MySqlToken.PuncLeftParen)
            {
                if (lexer.NextToken() == MySqlToken.KwSelect)
                {
                    fstExpr = SubQuery();
                    Match(MySqlToken.PuncRightParen);
                }
                else
                {
                    fstExpr = Expression();
                    if (lexer.Token() == MySqlToken.PuncComma)
                    {
                        lexer.NextToken();
                        argList = new List<IExpression>();
                        argList.Add(fstExpr);
                        argList = ExpressionList(argList);
                    }
                    else
                    {
                        Match(MySqlToken.PuncRightParen);
                    }
                }
            }
            else
            {
                fstExpr = Expression();
            }
            if (argList != null)
            {
                return new Interval(argList).SetCacheEvalRst(cacheEvalRst);
            }
            return new IntervalPrimary(fstExpr, IntervalPrimaryUnit()).SetCacheEvalRst(cacheEvalRst);
        }