/// <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); }
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); } }