示例#1
0
        public void ExpressionDifferenceTest1()
        {
            ASTNode ast1 = new ArithmExprNode(
                1,
                new ArithmExprNode(
                    2,
                    new LitExprNode(2, 3),
                    ArithmOpNode.FromSymbol(2, "+"),
                    new LitExprNode(2, 3)
                    ),
                ArithmOpNode.FromSymbol(2, "-"),
                new LitExprNode(2, 6)
                );
            ASTNode ast2 = new ArithmExprNode(
                1,
                new ArithmExprNode(
                    1,
                    new LitExprNode(1, 3),
                    ArithmOpNode.FromSymbol(1, "+"),
                    new LitExprNode(1, 3)
                    ),
                ArithmOpNode.FromSymbol(1, "-"),
                new ArithmExprNode(
                    1,
                    new LitExprNode(1, 3),
                    ArithmOpNode.FromSymbol(1, "+"),
                    new LitExprNode(1, 3)
                    )
                );

            AssertNodes(ast1, ast2, eq: false);
        }
示例#2
0
        public void SelfReferenceSubstituteTest()
        {
            var ast1 = new ArithmExprNode(1,
                                          new IdNode(1, "x"),
                                          ArithmOpNode.FromSymbol(1, "+"),
                                          new ArithmExprNode(1,
                                                             new IdNode(1, "y"),
                                                             ArithmOpNode.FromSymbol(1, "+"),
                                                             new IdNode(1, "x")
                                                             )
                                          );

            var repl = new ArithmExprNode(1,
                                          new IdNode(1, "y"),
                                          new ArithmOpNode(1, "-", BinaryOperations.ArithmeticFromSymbol("-")),
                                          new IdNode(1, "x")
                                          );
            var ast2 = new ArithmExprNode(1,
                                          new IdNode(1, "x"),
                                          ArithmOpNode.FromSymbol(1, "+"),
                                          new ArithmExprNode(1,
                                                             repl,
                                                             ArithmOpNode.FromSymbol(1, "+"),
                                                             new IdNode(1, "x")
                                                             )
                                          );

            Assert.That(ast1.Substitute(new IdNode(2, "y"), repl), Is.EqualTo(ast2));
        }
示例#3
0
        public void ExpressionSubstituteTest()
        {
            var ast1 = new ArithmExprNode(1,
                                          new IdNode(1, "x"),
                                          ArithmOpNode.FromSymbol(1, "+"),
                                          new IdNode(1, "x")
                                          );
            var ast2 = new ArithmExprNode(1,
                                          new LitExprNode(1, 1),
                                          ArithmOpNode.FromSymbol(1, "+"),
                                          new LitExprNode(1, 1)
                                          );

            Assert.That(ast1.Substitute(new IdNode(2, "x"), new LitExprNode(2, 1)), Is.EqualTo(ast2));
        }
示例#4
0
        public void ExpressionEqualityTest()
        {
            ASTNode ast1 = new ArithmExprNode(
                1,
                new ArithmExprNode(
                    2,
                    new LitExprNode(2, 3),
                    ArithmOpNode.FromSymbol(2, "+"),
                    new LitExprNode(2, 3)
                    ),
                ArithmOpNode.FromSymbol(2, "-"),
                new ArithmExprNode(
                    2,
                    new LitExprNode(2, 3),
                    ArithmOpNode.FromSymbol(2, "+"),
                    new LitExprNode(2, 3)
                    )
                );
            ASTNode ast2 = new ArithmExprNode(
                1,
                new ArithmExprNode(
                    1,
                    new LitExprNode(1, 3),
                    ArithmOpNode.FromSymbol(1, "+"),
                    new LitExprNode(1, 3)
                    ),
                ArithmOpNode.FromSymbol(1, "-"),
                new ArithmExprNode(
                    1,
                    new LitExprNode(1, 3),
                    ArithmOpNode.FromSymbol(1, "+"),
                    new LitExprNode(1, 3)
                    )
                );

            AssertNodes(ast1, ast2, eq: true);
        }
示例#5
0
 public virtual TResult Visit(ArithmExprNode node) => this.VisitChildren(node);
示例#6
0
 public override Expr Visit(ArithmExprNode node)
 => this.EvaluateBinaryExpression(node);