Example #1
0
            public void VisitConditionMustBeBooleanType(object condition)
            {
                var target = new TypeCheckingVisitor();

                var conditionExpression = new ConstantExpr(condition);

                var expr = new ConditionalExpr(conditionExpression, new ConstantExpr(0), new ConstantExpr(0));

                target.Visit(expr, scope);
            }
Example #2
0
        public ValueType Visit(ConditionalExpr expr, Scope scope)
        {
            var condition = expr.Condition.Accept(this, scope);

            if (condition != ValueType.Boolean)
            {
                throw new TypeCheckException("Conditional operator must have a boolean condition");
            }

            return(BinaryOperatorTypeCheck(expr.ThenExpression.Accept(this, scope),
                                           expr.ElseExpression.Accept(this, scope)));
        }
        public void AppendTo(StringBuilder sb)
        {
            if (PostEvaluation)
            {
                sb.Append("do-");
            }

            sb.Append("while: ");
            ConditionalExpr.AppendTo(sb);
            sb.AppendLine("{");
            Expr.AppendTo(sb);
            sb.AppendLine("}");
        }
Example #4
0
            public void VisitConditionalExpr(bool condition, int thenValue, int elseValue, string expected)
            {
                var target = new PrintVisitor();

                var conditionExpression = new ConstantExpr(condition);
                var thenExpression      = new ConstantExpr(thenValue);
                var elseExpression      = new ConstantExpr(elseValue);

                var expr = new ConditionalExpr(conditionExpression, thenExpression, elseExpression);

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(expected, actual);
            }
Example #5
0
            public void VisitConditionalExpr(bool condition, object thenValue, object elseValue, ValueType expected)
            {
                var target = new TypeCheckingVisitor();

                var conditionExpression = new ConstantExpr(condition);
                var thenExpression      = new ConstantExpr(thenValue);
                var elseExpression      = new ConstantExpr(elseValue);

                var expr = new ConditionalExpr(conditionExpression, thenExpression, elseExpression);

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(expected, actual);
            }
Example #6
0
        public void AppendTo(StringBuilder sb)
        {
            sb.Append("if: ");
            ConditionalExpr.AppendTo(sb);
            sb.AppendLine("{");
            Expr.AppendTo(sb);
            sb.AppendLine("}");

            if (ElseExpr != null)
            {
                sb.AppendLine("else: {");
                ElseExpr.AppendTo(sb);
                sb.AppendLine("}");
            }
        }
Example #7
0
        public Value Visit(ConditionalExpr expr, Scope scope)
        {
            var condition = expr.Condition.Accept(this, scope);

            if (condition.Type != ValueType.Boolean)
            {
                throw new InvalidCastException();
            }

            if (condition.ToBoolean())
            {
                return(expr.ThenExpression.Accept(this, scope));
            }

            return(expr.ElseExpression.Accept(this, scope));
        }
            public void VisitConditionMustBeBooleanType(object condition)
            {
                var target = new TypeCheckingVisitor();

                var conditionExpression = new ConstantExpr(condition);

                var expr = new ConditionalExpr(conditionExpression, new ConstantExpr(0), new ConstantExpr(0));

                target.Visit(expr, scope);
            }
            public void VisitConditionalExpr(bool condition, object thenValue, object elseValue, ValueType expected)
            {
                var target = new TypeCheckingVisitor();

                var conditionExpression = new ConstantExpr(condition);
                var thenExpression = new ConstantExpr(thenValue);
                var elseExpression = new ConstantExpr(elseValue);

                var expr = new ConditionalExpr(conditionExpression, thenExpression, elseExpression);

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(expected, actual);
            }
Example #10
0
 public string Visit(ConditionalExpr expr, Scope scope)
 {
     return(expr.Condition.Accept(this, scope) + " ? " + expr.ThenExpression.Accept(this, scope) + " : " + expr.ElseExpression.Accept(this, scope));
 }
Example #11
0
            public void VisitConditionalExpr(bool condition, int thenValue, int elseValue, string expected)
            {
                var target = new PrintVisitor();

                var conditionExpression = new ConstantExpr(condition);
                var thenExpression = new ConstantExpr(thenValue);
                var elseExpression = new ConstantExpr(elseValue);

                var expr = new ConditionalExpr(conditionExpression, thenExpression, elseExpression);

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(expected, actual);
            }