private void E() { if (expression.StartsWith("int") || expression.StartsWith("real") || expression.StartsWith("bool") || expression.StartsWith("string") || Regex.IsMatch(expression, PATTERN_VARIABLE_NAME)) { var variableInterpretator = new VariableInterpretator(context); var expressionString = Regex.Match(expression, "^.+?;").Value; variableInterpretator.Run(expressionString); expression = expression.SkipWord(expressionString); E(); } }
public void BoolArrayInitTest() { var context = new Context(); var interpretator = new VariableInterpretator(context); var expressionString = "bool[] a = new bool[2];"; interpretator.Run(expressionString); Assert.AreEqual(false, (context.Lookup("a").Value as bool[])[0]); Assert.AreEqual(false, (context.Lookup("a").Value as bool[])[1]); try { var errorVariable = (context.Lookup("a").Value as bool[])[2]; Assert.Fail(); } catch (IndexOutOfRangeException ex) { } }
public void InitVariableTest() { var context = new Context(); var interpretator = new VariableInterpretator(context); var expressionString = "int a = 54-33;"; interpretator.Run(expressionString); Assert.AreEqual(54 - 33, (int)context.Lookup("a").Value); expressionString = "real b = 154.26/4.12+15*(15.12*45.87)-151;"; interpretator.Run(expressionString); Assert.AreEqual(154.26 / 4.12 + 15 * (15.12 * 45.87) - 151, (double)context.Lookup("b").Value); expressionString = "bool c = (5 >= 4) && (5*4 != 21) && (\"Apple\" == \"Apple\");"; interpretator.Run(expressionString); Assert.AreEqual((5 >= 4) && (5*4 != 21) && ("Apple" == "Apple"), (bool)context.Lookup("c").Value); expressionString = "string s = \"Pinkie Pie\" + \" is coolest pony\";"; interpretator.Run(expressionString); Assert.AreEqual("Pinkie Pie is coolest pony", (string)context.Lookup("s").Value); }