public void TestBasicInterpreterSubstraction() { IFunctionRegistry functionRegistry = new MockFunctionRegistry(); IExecutor executor = new Interpreter(); double result = executor.Execute(new Subtraction( DataType.Integer, new IntegerConstant(6), new IntegerConstant(9)), functionRegistry); Assert.AreEqual(-3.0, result); }
public void TestBasicInterpreter1() { IFunctionRegistry functionRegistry = new MockFunctionRegistry(); IExecutor executor = new Interpreter(); // 6 + (2 * 4) double result = executor.Execute( new Addition( DataType.Integer, new IntegerConstant(6), new Multiplication( DataType.Integer, new IntegerConstant(2), new IntegerConstant(4))), functionRegistry); Assert.AreEqual(14.0, result); }
public void TestBasicInterpreterWithVariables() { IFunctionRegistry functionRegistry = new MockFunctionRegistry(); Dictionary<string, double> variables = new Dictionary<string, double>(); variables.Add("var1", 2); variables.Add("age", 4); IExecutor interpreter = new Interpreter(); // var1 + 2 * (3 * age) double result = interpreter.Execute( new Addition(DataType.FloatingPoint, new Variable("var1"), new Multiplication( DataType.FloatingPoint, new IntegerConstant(2), new Multiplication( DataType.FloatingPoint, new IntegerConstant(3), new Variable("age")))), functionRegistry, variables); Assert.AreEqual(26.0, result); }
private void calculateButton_Click(object sender, RoutedEventArgs e) { try { ClearScreen(); string formula = formulaTextBox.Text; TokenReader reader = new TokenReader(CultureInfo.InvariantCulture); List<Token> tokens = reader.Read(formula); ShowTokens(tokens); IFunctionRegistry functionRegistry = new FunctionRegistry(false); AstBuilder astBuilder = new AstBuilder(functionRegistry); Operation operation = astBuilder.Build(tokens); ShowAbstractSyntaxTree(operation); Dictionary<string, double> variables = new Dictionary<string, double>(); foreach (Variable variable in GetVariables(operation)) { double value = AskValueOfVariable(variable); variables.Add(variable.Name, value); } IExecutor executor = new Interpreter(); double result = executor.Execute(operation, null, variables); resultTextBox.Text = "" + result; } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }