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

Expression() public method

first token of this expression has been scanned, not yet consumed
public Expression ( ) : IExpression
return IExpression
        public virtual IExpression Expression()
        {
            var token = lexer.Token();
            if (token == MySqlToken.None)
            {
                token = lexer.NextToken();
            }
            if (token == MySqlToken.Eof)
            {
                Err("unexpected EOF");
            }
            var left = LogicalOrExpression();
            if (lexer.Token() == MySqlToken.OpAssign)
            {
                lexer.NextToken();
                var right = Expression();
                return new AssignmentExpression(left, right).SetCacheEvalRst(cacheEvalRst);
            }
            return left;
        }

Usage Example

 public virtual void TestAnyAll()
 {
     var sql = "1 >= any (select id from t1 limit 1)";
     var parser = new MySqlExprParser(new MySqlLexer(sql));
     var expr = parser.Expression();
     var output = Output2MySql(expr, sql);
     Assert.AreEqual("1 >= ANY (SELECT id FROM t1 LIMIT 0, 1)", output);
     Assert.AreEqual(typeof (ComparisionGreaterThanOrEqualsExpression),
         expr.GetType());
     sql =
         "1 >= any (select id from t1 limit 1) > aLl(select tb1.id from tb1 t1,tb2 as t2 where t1.id=t2.id limit 1)";
     parser = new MySqlExprParser(new MySqlLexer(sql));
     expr = parser.Expression();
     output = Output2MySql(expr, sql);
     Assert.AreEqual(
         "1 >= ANY (SELECT id FROM t1 LIMIT 0, 1) > ALL (SELECT tb1.id FROM tb1 AS T1, tb2 AS T2 WHERE t1.id = t2.id LIMIT 0, 1)",
         output);
     var gt = (ComparisionGreaterThanExpression)expr;
     var ge = (ComparisionGreaterThanOrEqualsExpression)gt.LeftOprand;
     Assert.AreEqual(typeof (LiteralNumber), ge.LeftOprand.GetType());
     sql = "1 >= any + any";
     parser = new MySqlExprParser(new MySqlLexer(sql));
     expr = parser.Expression();
     output = Output2MySql(expr, sql);
     Assert.AreEqual("1 >= any + any", output);
 }
All Usage Examples Of Tup.Cobar4Net.Parser.Recognizer.Mysql.Syntax.MySqlExprParser::Expression