public void compares_different_blocks()
        {
            var o1 = UnifiedBlock.Create(
                new UnifiedExpression[] {
                UnifiedBinaryExpression.Create(
                    UnifiedVariableIdentifier.Create("n"),
                    UnifiedBinaryOperator.Create(
                        "=",
                        UnifiedBinaryOperatorKind.Assign),
                    UnifiedInt32Literal.Create(1)),
                UnifiedReturn.Create(
                    UnifiedInt32Literal.Create(2)),
            });
            var o2 = UnifiedBlock.Create(
                new UnifiedExpression[] {
                UnifiedBinaryExpression.Create(
                    UnifiedVariableIdentifier.Create("n"),
                    UnifiedBinaryOperator.Create(
                        "=",
                        UnifiedBinaryOperatorKind.Assign),
                    UnifiedInt32Literal.Create(2)),
                UnifiedReturn.Create(
                    UnifiedInt32Literal.Create(2)),
            });

            Assert.That(
                StructuralEqualityComparer.StructuralEquals(o1, o2),
                Is.False);
        }
Example #2
0
 private static UnifiedExpression CreateReturn(XElement node)
 {
     Contract.Requires(node != null);
     Contract.Requires(node.Name() == "return");
     return
         (UnifiedReturn.Create(
              CreateSmartExpresion(node.FirstElementOrDefault())));
 }
Example #3
0
        public UnifiedElement VisitReturnStatement(
            ReturnStatement retStmt, object data)
        {
            var nExpr = retStmt.Expression;

            if (nExpr == null)
            {
                return(UnifiedReturn.Create());
            }
            var uExpr = nExpr.TryAcceptForExpression(this);

            return(UnifiedReturn.Create(uExpr));
        }
Example #4
0
        public static UnifiedExpression CreateJumpStatement(XElement node)
        {
            Contract.Requires(node != null);
            Contract.Requires(node.Name() == "jump_statement");

            /* jump_statement
             * : 'goto' IDENTIFIER ';'
             * | 'continue' ';'
             * | 'break' ';'
             * | 'return' ';'
             * | 'return' expression ';'
             */
            var firstElement = node.FirstElement();

            switch (firstElement.Value)
            {
            case "goto":
                return
                    (UnifiedGoto.Create(
                         UnifiedLabelIdentifier.Create(
                             node.NthElement(1).Value)));

            case "continue":
                return(UnifiedContinue.Create());

            case "break":
                return(UnifiedBreak.Create());

            case "return":
                var expression = node.Element("expression");
                if (expression != null)
                {
                    return
                        (UnifiedReturn.Create(
                             CreateExpression(expression).First()));
                }
                return(UnifiedReturn.Create());

            default:
                throw new InvalidOperationException();
            }
        }
Example #5
0
 public override bool Visit(UnifiedReturn element, VisitorArgument arg)
 {
     Writer.Write("return ");
     element.Value.TryAccept(this, arg);
     return(true);
 }
 // Rerurnæ–‡(UnifiedReturn)
 public override bool Visit(UnifiedReturn element, VisitorArgument arg)
 {
     Writer.Write("return ");
     element.Value.TryAccept(this, arg);
     return true;
 }