private void EvaluateWhile(Func <bool> condition) { try { while (condition()) { var operation = (Operator)operatorStack.Pop(); var expressions = new NodeOperation[operation.NumberOfOperands]; for (var i = operation.NumberOfOperands - 1; i >= 0; i--) { expressions[i] = nodeStack.Pop(); } nodeStack.Push(operation.Apply(expressions)); } } catch { throw new DistributionsInvalidOperationException(DistributionsInvalidOperationExceptionType.ExpressionOpreatorsInconsistent); } }
private NodeOperation Apply(NodeOperation left, NodeOperation right) { return(new NodeOperation(left, right, OperationType)); }
public NodeOperation(NodeOperation left, NodeOperation right, NodeOperationType operationType) { Left = left; Right = right; OperationType = operationType; }
private NodeOperation Apply(NodeOperation node) { return(new NodeOperation(node, OperationType)); }
public NodeOperation(NodeOperation left, NodeOperationType operationType) { Left = left; OperationType = operationType; }