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); } }