예제 #1
0
파일: DiceEngine.cs 프로젝트: envy/NDice
        public object VisitTertiaryExpr(Expr.Tertiary expr)
        {
            var condition = Evaluate(expr.Condition);

            if (IsTruthy(condition))
            {
                return(Evaluate(expr.Then));
            }
            else
            {
                return(Evaluate(expr.Else));
            }
        }
예제 #2
0
        private Expr Expression()
        {
            Expr expr = Equality();

            if (Match(TokenType.IfThen))
            {
                Expr then = Expression();
                Consume(TokenType.Else, "Expected ':' after then-branch of ?.");
                Expr @else = Expression();

                expr = new Expr.Tertiary(expr, then, @else);
            }

            return(expr);
        }
예제 #3
0
파일: PrettyPrinter.cs 프로젝트: envy/NDice
 public string VisitTertiaryExpr(Expr.Tertiary expr)
 {
     return($"{expr.Condition.Accept(this)} ? {expr.Then.Accept(this)} : {expr.Else.Accept(this)}");
 }
예제 #4
0
 public string VisitTertiaryExpr(Expr.Tertiary expr)
 {
     return(Parenthesize("?:", expr.Condition, expr.Then, expr.Else));
 }