public static double GetResult(char op, double number1, double number2) { OperatorReguler opReguler = null; switch (op) { case ADDITION: AddOperator add = new AddOperator(number1, number2); opReguler = add; break; case SUBTRACK: SubOperator sub = new SubOperator(number2, number1); opReguler = sub; break; case MULTIPLY: MulOperator mul = new MulOperator(number1, number2); opReguler = mul; break; case DIVISION: DivOperator div = new DivOperator(number2, number1); opReguler = div; break; } return(opReguler.GetResult()); }
public void FindOperation_ReturnsHighestPrecedence() { // Arrange var lOperand = new Operand(0); var op = new MulOperator(); var rOperand = new Operand(0); var elements = new Element[] { new Operand(0), new AddOperator(), new Operand(0), lOperand, op, rOperand }; var sut = new ElementList(elements); // Act var result = sut.FindOperation(); // Assert Assert.AreEqual(lOperand, result.LOperand); Assert.AreEqual(op, result.Op); Assert.AreEqual(rOperand, result.ROperand); }
private IMSILConstruction CreateUnaryMinusNode(IASTNode node) { var mulOperator = new MulOperator(); mulOperator.FirstIntValue = -1; return(mulOperator); }
public void MulOperator_PrecedenceSetCorrectly() { // Arrange var expected = 2; var sut = new MulOperator(); // Act var actual = sut.Precedence; // Assert Assert.AreEqual(expected, actual); }
public void TakesPrecedenceBoostIntoAccount() { // Arrange var precedenceBoost = 7; var expected = 9; var sut = new MulOperator(precedenceBoost); // Act var actual = sut.Precedence; // Assert Assert.AreEqual(expected, actual); }
public void MulOperator_ReturnsProduct() { // Arrange var leftOperand = new Operand(10); var rightOperand = new Operand(25); var expected = 250; var sut = new MulOperator(); // Act var actual = sut.Compute(leftOperand, rightOperand); // Assert Assert.AreEqual(expected, actual); }
void MulOp(out MulOperator op) { op = MulOperator.Multiply; if (la.kind == 13) { Get(); } else if (la.kind == 14) { Get(); op = MulOperator.Divide; } else { SynErr(22); } }
public IToken ParseTokens(string[] ops) { var stack = new Stack <ApOperator>(); IToken token = null; for (int i = 0; i < ops.Length; i++) { var op = ops[i]; switch (op) { case "ap": token = new ApOperator(); break; case "inc": token = IncOperator.Acquire(); break; case "dec": token = DecOperator.Acquire(); break; case "neg": token = NegOperator.Acquire(); break; case "add": token = AddOperator.Acquire(); break; case "mul": token = MulOperator.Acquire(); break; //case "l": // token = new LOperator(); // break; case "div": token = DivOperator.Acquire(); break; //case "pwr2": // return (new Pwr2Operator(), index); case "t": token = KComb.Acquire(); break; //case "f": // return (new FComb(), index); case "s": token = SComb.Acquire(); break; case "c": token = CComb.Acquire(); break; case "b": token = BComb.Acquire(); break; case "i": token = IComb.Acquire(); break; case "cons": case "vec": token = ConsOperator.Acquire(); break; case "car": token = CarOperator.Acquire(); break; case "cdr": token = CdrOperator.Acquire(); break; case "nil": token = NilOperator.Acquire(); break; case "isnil": token = IsNilOperator.Acquire(); break; case "eq": token = EqOperator.Acquire(); break; case "if0": token = new If0Operator(); break; case "lt": token = LtOperator.Acquire(); break; //case "mod": // token = new ModOperator(); // break; //case "dem": // token = new DemodOperator(); // break; case "interact": token = new InteractOperator(); break; default: if (decimal.TryParse(op, out var constant)) // int constant { token = ConstantOperator.Acquire(decimal.Parse(op)); } else if (op.StartsWith("x")) { token = VarOperator.Acquire(op); } else if (op.StartsWith(":")) // variable reference { token = LateBoundToken.Acquire(op); } else { throw new InvalidOperationException(); } break; } if (stack.Count == 0) { if (!(token is ApOperator)) { if (i != ops.Length - 1) { throw new InvalidOperationException(); } return(token); } stack.Push((ApOperator)token); } else { var top = stack.Peek(); if (top.f == null) { top.f = token; if (token is ApOperator ap) { stack.Push(ap); } } else if (top.x == null) { top.x = token; if (token is ApOperator ap) { stack.Push(ap); } else { while (stack.Count > 0 && stack.Peek().x != null) { token = stack.Pop(); } } } else { throw new InvalidOperationException(); } } } if (stack.Count == 1) { return(stack.Pop()); } return(token); }
private IMSILConstruction CreateMulOperator(IASTNode node) { var mulOperator = new MulOperator(); return(mulOperator); }