private IExpression ArithmeticFactorOperatorExpression(string consumed, string consumedUp)
{
IExpression temp;
for (var expr = BitXORExpression(consumed,
consumedUp);;)
{
switch (lexer.Token())
{
case MySqlToken.OpAsterisk:
{
lexer.NextToken();
temp = BitXORExpression(null, null);
expr = new ArithmeticMultiplyExpression(expr, temp).SetCacheEvalRst(cacheEvalRst);
break;
}
case MySqlToken.OpSlash:
{
lexer.NextToken();
temp = BitXORExpression(null, null);
expr = new ArithmeticDivideExpression(expr, temp).SetCacheEvalRst(cacheEvalRst);
break;
}
case MySqlToken.KwDiv:
{
lexer.NextToken();
temp = BitXORExpression(null, null);
expr = new ArithmeticIntegerDivideExpression(expr, temp).SetCacheEvalRst(cacheEvalRst);
break;
}
case MySqlToken.OpPercent:
case MySqlToken.KwMod:
{
lexer.NextToken();
temp = BitXORExpression(null, null);
expr = new ArithmeticModExpression(expr, temp).SetCacheEvalRst(cacheEvalRst);
break;
}
default:
{
return expr;
}
}
}
}