Ejemplo n.º 1
0
        private AstNode Expression()
        {
            // EXPRESSION = TERM (ADD | SUBTRACT TERM)* (COMPARISON TERM)

            var node = Term();

            var ops = new[] { Tokens.Add, Tokens.Subtract };

            while (ops.Contains(_currentToken.Type))
            {
                var token = _currentToken;
                Eat(token.Type);
                if (token.Type == Tokens.Add)
                {
                    node = new AddNode(node, Term());
                }
                else if (token.Type == Tokens.Subtract)
                {
                    node = new SubtractNode(node, Term());
                }
            }

            if (Tokens.IsComparison(_currentToken.Type))
            {
                var token = _currentToken;
                if (token.Type == Tokens.Equal)
                {
                    Eat(Tokens.Equal);
                    node = new EqualToNode(node, Term());
                }
                else if (token.Type == Tokens.NotEqual)
                {
                    Eat(Tokens.NotEqual);
                    node = new NotEqualToNode(node, Term());
                }
                else if (token.Type == Tokens.GreaterThan)
                {
                    Eat(Tokens.GreaterThan);
                    node = new GreaterThanNode(node, Term());
                }
                else if (token.Type == Tokens.GreaterThanOrEqualTo)
                {
                    Eat(Tokens.GreaterThanOrEqualTo);
                    node = new GreaterThanOrEqualToNode(node, Term());
                }
                else if (token.Type == Tokens.LessThan)
                {
                    Eat(Tokens.LessThan);
                    node = new LessThanNode(node, Term());
                }
                else if (token.Type == Tokens.LessThanOrEqualTo)
                {
                    Eat(Tokens.LessThanOrEqualTo);
                    node = new LessThanOrEqualToNode(node, Term());
                }
            }

            return(node);
        }
Ejemplo n.º 2
0
        public void SubtractNode()
        {
            int
                val1   = 10,
                val2   = 20,
                result = val1 - val2;
            var node   = new SubtractNode(new ConstantNode(val1), new ConstantNode(val2));

            Assert.AreEqual(node.Value, result);
        }
Ejemplo n.º 3
0
        public DomainId <IAstNode> CreateSubtractionOperation(
            string definition,
            DomainId <ICalculationNode> leftExpression,
            DomainId <ICalculationNode> rightExpression)
        {
            var subtractNode = new SubtractNode(
                m_ids.Next,
                definition,
                leftExpression,
                rightExpression);

            return(DomainItemRegistration <ISubtractNode>(subtractNode));
        }
Ejemplo n.º 4
0
        private object Visit(SubtractNode node)
        {
            dynamic left  = Visit(node.Left);
            dynamic right = Visit(node.Right);

            try
            {
                return(left - right);
            }
            catch (Exception error)
            {
                ReportError(error);
                return(null);
            }
        }
Ejemplo n.º 5
0
        protected override AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, MaterialExpressionSubtract unrealNode)
        {
            var node = new SubtractNode()
            {
                previewExpanded = false
            };

            if (unrealNode.A == null)
            {
                node.FindInputSlot <DynamicVectorMaterialSlot>(0).value = new Vector4(unrealNode.ConstA, 0);
            }

            if (unrealNode.B == null)
            {
                node.FindInputSlot <DynamicVectorMaterialSlot>(1).value = new Vector4(unrealNode.ConstB, 0);
            }

            return(node);
        }
Ejemplo n.º 6
0
        private static void TestExpTree()
        {
            AddNode <Real> root = new AddNode <Real>();

            MultiplyNode <Real> c1 = new MultiplyNode <Real>();
            SubtractNode <Real> c2 = new SubtractNode <Real>();
            DivideNode <Real>   c3 = new DivideNode <Real>();

            root.LeftChild  = c1;
            root.RightChild = c2;

            c1.LeftChild  = new ConstantNode <Real>(2);
            c1.RightChild = c3;

            c2.LeftChild  = new ConstantNode <Real>(7);
            c2.RightChild = new ConstantNode <Real>(4);

            c3.LeftChild  = new ConstantNode <Real>(8);
            c3.RightChild = new ConstantNode <Real>(16);

            Console.WriteLine(root.ToString() + " = " + root.Evaluate());
        }
Ejemplo n.º 7
0
        private Node ParseAdditive()
        {
            var lNode = this.ParseMultiplicative();

            while (this.AreMoreTokens)
            {
                if (this.currentToken.Equals(TokenType.Symbol, "+"))
                {
                    this.ReadNextToken();
                    lNode = new AddNode(lNode, this.ParseMultiplicative());
                }
                else if (this.currentToken.Equals(TokenType.Symbol, "-"))
                {
                    this.ReadNextToken();
                    lNode = new SubtractNode(lNode, this.ParseMultiplicative());
                }
                else
                {
                    break;
                }
            }

            return(lNode);
        }
 public void Visit(SubtractNode node)
 {
     BinaryOperator(
         node,
         "-",
         () => VariableType.INTEGER,
         new List<VariableType> { VariableType.INTEGER });
 }
Ejemplo n.º 9
0
 public abstract T Visit(SubtractNode node);
Ejemplo n.º 10
0
 public double CalcSubtractNode(SubtractNode node)
 {
     return((double)(node.NodeA.value - node.NodeB.value));
 }
Ejemplo n.º 11
0
 public void Visit(SubtractNode node)
 {
     BinaryNode(node, Bytecode.SUB);
 }