Expression.Brackets C# (CSharp) Method

Brackets() private static method

private static Brackets ( string expression, int &index ) : double
expression string
index int
return double
    private static double Brackets(string expression, ref int index)
    {
        bool isMinus = false;
        double value;

        if((index == 0 || expression[index - 1] == '(' || expression[index - 1] == '[' || expression[index - 1] == '|') && (expression[index] == '+' || expression[index] == '-'))
        {
            isMinus = expression[index] == '-';
            ++index;
        }

        if(expression[index] == '(')
        {
            ++index;
            double result = Sum(expression, ref index);
            if(index == expression.Length || expression[index] != ')')
            {
                throw new ArgumentException("Brackets");
            }
            ++index;
            value = result;
        }
        else if(expression[index] == '[')
        {
            ++index;
            double result = Sum(expression, ref index);
            if(index == expression.Length || expression[index] != ']')
            {
                throw new ArgumentException("Brackets");
            }
            ++index;
            value = Math.Floor(result);
        }
        else if(expression[index] == '|')
        {
            ++index;
            double result = Sum(expression, ref index);
            if(index == expression.Length || expression[index] != '|')
            {
                throw new ArgumentException("Brackets");
            }
            ++index;
            value = Math.Abs(result);
        }
        else
        {
            value = Number(expression, ref index);
        }

        return isMinus ? -value : value;
    }