public void CompileShouldMultiplyGroupExpressionWithFollowingIntegerExpression() { var groupExpression = new GroupExpression(false); groupExpression.AddChild(new IntegerExpression("2")); groupExpression.Children.First().Operator = Operator.Plus; groupExpression.AddChild(new IntegerExpression("3")); groupExpression.Operator = Operator.Multiply; _graph.Add(groupExpression); _graph.Add(new IntegerExpression("2")); var result = _expressionCompiler.Compile(_graph.Expressions); Assert.AreEqual(10d, result.Result); }
private void BuildGroupExpression(Token[] tokens, Expression parent) { if (parent == null) { _graph.Add(new GroupExpression()); BuildUp(tokens, _graph.Current); } else { if (parent.IsGroupedExpression || parent is FunctionArgumentExpression) { var newGroupExpression = new GroupExpression(); parent.AddChild(newGroupExpression); BuildUp(tokens, newGroupExpression); } BuildUp(tokens, parent); } }
private void BuildGroupExpression(Token[] tokens, Expression parent) { if (parent == null) { _graph.Add(new GroupExpression(_negateNextExpression)); _negateNextExpression = false; BuildUp(tokens, _graph.Current); } else { if (parent.IsGroupedExpression || parent is FunctionArgumentExpression) { var newGroupExpression = new GroupExpression(_negateNextExpression); _negateNextExpression = false; parent.AddChild(newGroupExpression); BuildUp(tokens, newGroupExpression); } BuildUp(tokens, parent); } }