// Middle-ware function private static void CreateExpr(Opr operation, ref Stack <Expression> exprStack) { Expression ex2 = exprStack.Pop(); Expression ex1; switch (operation.Show()) { case "x": ex1 = exprStack.Pop(); exprStack.Push(new MultExpression(ex1, ex2)); break; case "+": ex1 = exprStack.Pop(); exprStack.Push(new AddExpression(ex1, ex2)); break; case "^": ex1 = exprStack.Pop(); exprStack.Push(new PowerExpression(ex1, ex2)); break; case "÷": ex1 = exprStack.Pop(); exprStack.Push(new DivExpression(ex1, ex2)); break; case "-": ex1 = exprStack.Pop(); exprStack.Push(new MinusExpression(ex1, ex2)); break; case "√": exprStack.Push(new RootExpression(ex2)); break; case ";": exprStack.Push(new NegativeExpression(ex2)); break; default: throw new SyntaxErrorException(); } }
private static void PrintEvaluationState(Opr opr, Expression expr1, Expression expr2) { Console.Write("Operation State: "); Console.WriteLine(expr1.Solve() + opr.Show() + expr2.Solve()); }
// Debugging function private static void PrintOperatorState(Opr opr, string state) { Console.WriteLine(state + ":"); Console.WriteLine("Operator:" + opr.Show()); }