public void DoesParserSplitonanOperand() { var input = "1*2"; var p = new Parser(input); var terms = p.SplitOnOperand(); CollectionAssert.AreEqual(new string[] { "1", "2" }, terms); }
static void Main(string[] args) { Parser ob = new Parser(); for (; ; ) { string str = ""; Console.Write("Введите выражение: "); str = Console.ReadLine(); try { Console.WriteLine("Результат: " + ob.eval_exp(str) + "\n"); } catch (ArgumentNullException) { Console.WriteLine("Ошибка: отсутствует выражение для вычисления!\n"); } catch (ArgumentException) { Console.WriteLine("Ошибка синтаксиса!\n"); } catch { Console.WriteLine("Ошибка синтаксиса!\n"); } } }
public Calculator() { _scanner = new Scanner(); _scanner.AddOperators("+", "-", "*", "/", "%", "(", ")", "=", ","); _parser = new Parser(_scanner); _parser.AddFunction(GenericFunctions.TrigFunction("sin", Math.Sin)); _parser.AddFunction(GenericFunctions.TrigFunction("cos", Math.Cos)); _parser.AddFunction(GenericFunctions.TrigFunction("tan", Math.Tan)); _parser.AddFunction(GenericFunctions.StandardFunction("sqrt", Math.Sqrt)); _parser.AddFunction(GenericFunctions.StandardFunction("abs", Math.Abs)); _parser.AddFunction(GenericFunctions.StandardFunction("log", Math.Log10)); _parser.AddFunction(GenericFunctions.StandardFunction("ln", (Func<double, double>)Math.Log)); _parser.AddFunction(GenericFunctions.StandardFunction("exp", Math.Exp)); _parser.AddFunction(GenericFunctions.InverseTrigFunction("asin", Math.Asin)); _parser.AddFunction(GenericFunctions.InverseTrigFunction("acos", Math.Acos)); _parser.AddFunction(GenericFunctions.InverseTrigFunction("atan", Math.Atan)); _parser.AddFunction(GenericFunctions.StandardFunction("pow", Math.Pow)); _parser.AddFunction(GenericFunctions.StandardFunction("max", Math.Max)); _parser.AddFunction(GenericFunctions.StandardFunction("min", Math.Min)); _parser.AddVariable(new Variable("pi", Math.PI) { IsConstant = true }); _parser.AddVariable(new Variable("e", Math.E) { IsConstant = true }); _parser.AddVariable(new Variable("ans")); }
public void AddsKeyValuePairs() { var input = "x=2"; var p = new Parser(input); var arr = p.SplitOnOperand(); p.AddKeyValuePair(arr); Assert.AreEqual(Stack.Constants[arr[0]], 2); }
public void GetsVariableValueFromDictionary() { var input1 = "a=10"; var input2 = "a*8"; var p = new Parser(input1); var arr = p.SplitOnOperand(); p.AddKeyValuePair(arr); var p2 = new Parser(input2); var arr2 = p2.SplitOnOperand(); CollectionAssert.AreEqual(new int[] { 10, 8 }, Stack.ReplaceConstsandStringsWithIntValues(arr2)); }
public void CantChangeValueofConstant() { var input = "b=2"; var p = new Parser(input); var arr = p.SplitOnOperand(); p.AddKeyValuePair(arr); var input2 = "b=3"; var p2 = new Parser(input2); var arr2 = p.SplitOnOperand(); p.AddKeyValuePair(arr); }
public void Test_Unar_Op() { Parser ob = new Parser(); string str_1 = "-5"; string str_2 = "78"; double result_1, result_2; result_1 = ob.eval_exp(str_1); result_2 = ob.eval_exp(str_2); Assert.That(result_1, Is.EqualTo(-5)); Assert.That(result_2, Is.EqualTo(78)); }
public void Test_Multiplication_Division() { Parser ob = new Parser(); string str_1 = "12*5"; string str_2 = "-3*15"; double result_1, result_2; result_1 = ob.eval_exp(str_1); result_2 = ob.eval_exp(str_2); Assert.That(result_1, Is.EqualTo(60)); Assert.That(result_2, Is.EqualTo(-45)); }
public void Test_Brackets() { Parser ob = new Parser(); string str_1 = "(3+4)*5"; string str_2 = "(-2+7)*(18-15)"; double result_1, result_2; result_1 = ob.eval_exp(str_1); result_2 = ob.eval_exp(str_2); Assert.That(result_1, Is.EqualTo(35)); Assert.That(result_2, Is.EqualTo(15)); }
public void Test_Addition_Subtraction() { Parser ob = new Parser(); string str_1 = "12+8"; string str_2 = "-8+3"; double result_1, result_2; result_1 = ob.eval_exp(str_1); result_2 = ob.eval_exp(str_2); Assert.That(result_1, Is.EqualTo(20)); Assert.That(result_2, Is.EqualTo(-5)); }
public void ThrowsExceptionWhenOnly1Value() { var input = "33533/"; var p = new Parser(input); var terms = p.SplitOnOperand(); }
public void ThrowsExceptionWhenGivenTwoOperands() { var input = "4/*4"; var p = new Parser(input); var terms = p.SplitOnOperand(); }
public void Initialize() { parser = new Parser(); }
public void turnStringArrayToIntArrayWithoutConstants() { var input = "3*4"; var p = new Parser(input); var arr = p.SplitOnOperand(); CollectionAssert.AreEqual(Stack.ReplaceConstsandStringsWithIntValues(arr), new int[] { 3, 4 }); }
public void variablesCantComeLastInAnExpression() { var input = "22=c"; var p = new Parser(input); var arr = p.SplitOnOperand(); p.AddKeyValuePair(arr); }
public void variablesCanOnlyBeOneCharacter() { var input = "cc=2"; var p = new Parser(input); var arr = p.SplitOnOperand(); p.AddKeyValuePair(arr); }
void ParseInput(string input) { if (inputIsntGoingToBeCalculated(input)) { return; } var p = new Parser(input); try { p.ParseInput(); var results = p.results; char operand = p.operand; response = CalculateResponse(results, operand); Stack.lastResponse = response; Stack.lastQuestion = staticInput; } catch (ArgumentException e) { response = e.Message; return; } }