Ejemplo n.º 1
0
        /// <summary>
        /// Get an expression which might contain a ternary conditional expression (? :)
        /// </summary>
        private IExpression Ternary()
        {
            IExpression expression = Equality();

            if (Match(TokenType.QUESTION))
            {
                IExpression thenExpression = Expression();
                Consume(TokenType.COLON, "Expect ':' after conditional expression.");
                IExpression elseExpression = Ternary();
                expression = new TernaryExpression(expression, thenExpression, elseExpression);
            }

            return(expression);
        }
Ejemplo n.º 2
0
        public object VisitTernaryExpression(TernaryExpression expression)
        {
            object condition      = Evaluate(expression.conditional);
            object thenExpression = Evaluate(expression.thenExpression);
            object elseExpression = Evaluate(expression.elseExpression);

            if (IsTruthy(condition))
            {
                return(thenExpression);
            }
            else
            {
                return(elseExpression);
            }
        }