예제 #1
0
파일: Parser.cs 프로젝트: Pandawan/min
        /// <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);
        }
예제 #2
0
파일: Interpreter.cs 프로젝트: Pandawan/min
        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);
            }
        }