Esempio n. 1
0
        internal void ParseExpression_OddNumberOfAddition()
        {
            var expectedAst = new AstBinaryExpression
            {
                Operator = CmdTokenKind.Plus,
                Lhs      = new AstBinaryExpression
                {
                    Lhs = new AstNumberExpression
                    {
                        Value = "1"
                    },
                    Rhs = new AstNumberExpression
                    {
                        Value = "2"
                    },
                    Operator = CmdTokenKind.Plus
                },
                Rhs = new AstNumberExpression
                {
                    Value = "3"
                }
            };

            AstAssert.Expression(expectedAst, "1+2+3");
        }
Esempio n. 2
0
        internal void ParseExpression_ParenthesisPrecedence_AdditionInParenthesisLowerInAstTreeThanMultiplication()
        {
            var expectedAst = new AstBinaryExpression
            {
                Operator = CmdTokenKind.Star,
                Lhs      = new AstBinaryExpression
                {
                    Lhs = new AstNumberExpression
                    {
                        Value = "1"
                    },
                    Rhs = new AstNumberExpression
                    {
                        Value = "2"
                    },
                    Operator = CmdTokenKind.Plus
                },
                Rhs = new AstNumberExpression
                {
                    Value = "3"
                },
            };

            AstAssert.Expression(expectedAst, "(1+2)*3");
        }
Esempio n. 3
0
        internal void ParseExpression_OperatorPrecedence_MultiplicationLowerInTreeAdditionHigher()
        {
            var expectedAst = new AstBinaryExpression
            {
                Operator = CmdTokenKind.Plus,
                Lhs      = new AstNumberExpression
                {
                    Value = "2"
                },
                Rhs = new AstBinaryExpression
                {
                    Lhs = new AstNumberExpression
                    {
                        Value = "2"
                    },
                    Rhs = new AstNumberExpression
                    {
                        Value = "2"
                    },
                    Operator = CmdTokenKind.Star
                }
            };

            AstAssert.Expression(expectedAst, "2+2*2");
        }
Esempio n. 4
0
        internal void ParseExpression_OddNumberOfMultiplication()
        {
            var expectedAst = new AstBinaryExpression
            {
                Operator = CmdTokenKind.Star,
                Lhs      = new AstBinaryExpression
                {
                    Lhs = new AstNumberExpression
                    {
                        Value = "1"
                    },
                    Rhs = new AstNumberExpression
                    {
                        Value = "2"
                    },
                    Operator = CmdTokenKind.Star
                },
                Rhs = new AstNumberExpression
                {
                    Value = "3"
                },
            };

            AstAssert.Expression(expectedAst, "1*2*3");
        }
Esempio n. 5
0
        public void VisitBinaryExpression(AstBinaryExpression binaryExpression)
        {
            Assert.IsType <AstBinaryExpression>(this.expected);
            var expectedAst = (AstBinaryExpression)this.expected;

            Assert.Equal(expectedAst.Operator, binaryExpression.Operator);

            AssertVisit(expectedAst.Rhs, binaryExpression.Rhs);
            AssertVisit(expectedAst.Lhs, binaryExpression.Lhs);
        }
Esempio n. 6
0
        internal void ParseExpression_DivisionSupport()
        {
            var expectedAst = new AstBinaryExpression
            {
                Operator = CmdTokenKind.Slash,
                Lhs      = new AstNumberExpression
                {
                    Value = "1"
                },
                Rhs = new AstNumberExpression
                {
                    Value = "2"
                }
            };

            AstAssert.Expression(expectedAst, "1/2");
        }
Esempio n. 7
0
        internal void ParseExpression_SubtractionSupport()
        {
            var expectedAst = new AstBinaryExpression
            {
                Operator = CmdTokenKind.Minus,
                Lhs      = new AstNumberExpression
                {
                    Value = "1"
                },
                Rhs = new AstNumberExpression
                {
                    Value = "2"
                }
            };

            AstAssert.Expression(expectedAst, "1-2");
        }
Esempio n. 8
0
        public void Visit(AstBinaryExpression expr)
        {
            var opName =
                String.IsNullOrEmpty(expr.OperatorSymbol)
                    ? expr.OperatorName
                    : expr.OperatorSymbol;

            var node =
                StepsCluster
                .AddNode(NodeInfo.NodeName)
                .SetLabel(opName.Bold());


            FollowExpression(expr.FirstOperand, node.ToNodeRef(DotCompass.NorthWest));

            FollowExpression(expr.SecondOperand, node.ToNodeRef(DotCompass.SouthWest));
        }
Esempio n. 9
0
        internal void ParseExpression_UnaryExpression_Precedence()
        {
            var expectedAst = new AstBinaryExpression
            {
                Operator = CmdTokenKind.Star,
                Lhs      = new AstUnaryExpression
                {
                    Operator   = CmdTokenKind.Minus,
                    Expression = new AstNumberExpression
                    {
                        Value = "6"
                    }
                },
                Rhs = new AstNumberExpression
                {
                    Value = "2"
                },
            };

            AstAssert.Expression(expectedAst, "-6*2");
        }
Esempio n. 10
0
        public void ParseExpression_BooleanExpression_SupportFor()
        {
            var expectedAst = new AstBinaryExpression
            {
                Operator = CmdTokenKind.GreaterThan,
                Lhs      = new AstNumberExpression {
                    Value = "3"
                },
                Rhs = new AstBinaryExpression
                {
                    Operator = CmdTokenKind.Plus,
                    Lhs      = new AstNumberExpression {
                        Value = "1"
                    },
                    Rhs = new AstNumberExpression {
                        Value = "2"
                    },
                }
            };

            AstAssert.Expression(expectedAst, "3>1+2");
        }