protected IExpression ParseTerm()
        {
            var left = ParseFactor();

            while (Accept("*") || Accept("/") || Accept("%"))
            {
                if (Prev().Type == "*")
                {
                    left = MultiplyExpression.Create(left, ParseFactor());
                }
                else if (Prev().Type == "/")
                {
                    left = DivideExpression.Create(left, ParseFactor());
                }
                else
                {
                    left = ModuloExpression.Create(left, ParseFactor());
                }
            }
            return(left);
        }