상속: FunctionExpression
예제 #1
0
        /// <summary>first '(' has been consumed</summary>
        /// <exception cref="System.SqlSyntaxErrorException" />
        private Char FunctionChar()
        {
            Char chr;
            for (IList<IExpression> tempExprList = new List<IExpression>();;)
            {
                var tempExpr = Expression();
                tempExprList.Add(tempExpr);
                switch (lexer.Token())
                {
                    case MySqlToken.PuncComma:
                    {
                        lexer.NextToken();
                        continue;
                    }

                    case MySqlToken.PuncRightParen:
                    {
                        lexer.NextToken();
                        chr = new Char(tempExprList, null);
                        chr.SetCacheEvalRst(cacheEvalRst);
                        return chr;
                    }

                    case MySqlToken.KwUsing:
                    {
                        lexer.NextToken();
                        var tempStr = lexer.GetStringValue();
                        Match(MySqlToken.Identifier);
                        Match(MySqlToken.PuncRightParen);
                        chr = new Char(tempExprList, tempStr);
                        chr.SetCacheEvalRst(cacheEvalRst);
                        return chr;
                    }

                    default:
                    {
                        throw Err("expect ',' or 'USING' or ')' but is " + lexer.Token());
                    }
                }
            }
        }
예제 #2
0
 public virtual void Visit(Char node)
 {
     Visit((FunctionExpression)node);
 }
예제 #3
0
 public void Visit(Char node)
 {
     VisitChild(2, false, false, node.Arguments);
 }