Node_P PlusMinus()
        {
            Node_P left = MultDiv();

            while (true)
            {
                //Identify the operation
                Operation op = Operation.Null;
                if (splitter.current_sign == Sign.Plus)
                {
                    op = Operation.Addition;
                }
                else if (splitter.current_sign == Sign.Minus)
                {
                    op = Operation.Substraction;
                }

                //If no plus or minus sign is found
                if (op == Operation.Null)
                {
                    return(left);
                }

                splitter.Move_sign(); //move to the next sign

                Node_P right = MultDiv();

                //Create a node with a correspondent binary operation
                left = new NodePolBinary(left, right, op);
            }
        }
        Node_P MultDiv()
        {
            //Check whether the current node is a unary operator
            Node_P left = Unary();

            while (true)
            {
                //Identify the operation
                Operation op = Operation.Null;
                if (splitter.current_sign == Sign.Divide)
                {
                    op = Operation.Division;
                }
                else if (splitter.current_sign == Sign.Multiply)
                {
                    op = Operation.Multiplication;
                }

                //If no multiply or divide sign is found
                if (op == Operation.Null)
                {
                    return(left);
                }

                splitter.Move_sign(); //move to the next sign

                //Check whether the current node is a unary operator
                Node_P right = Unary();

                //Create a node with a correspondent binary operation
                left = new NodePolBinary(left, right, op);
            }
        }