private IExpression ParseBinaryExpressionSecondLevel()
{
IExpression expression = this.ParseUnaryExpression();
if (expression == null)
return null;
while (this.TryParse(TokenType.Operator, "*", "/", @"\", "%"))
{
Token oper = this.lexer.NextToken();
IExpression right = this.ParseUnaryExpression();
ArithmeticOperator op;
if (oper.Value == "*")
op = ArithmeticOperator.Multiply;
else if (oper.Value == "/")
op = ArithmeticOperator.Divide;
else if (oper.Value == "\\")
op = ArithmeticOperator.IntegerDivide;
else if (oper.Value == "%")
op = ArithmeticOperator.Modulo;
else
throw new ParserException(string.Format("Invalid operator '{0}'", oper.Value));
expression = new ArithmeticBinaryExpression(op, expression, right);
}
return expression;
}