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);
        }
예제 #2
0
 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);
     }
 }
예제 #3
0
 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);
     }
 }