예제 #1
0
        object Expr.IVisitor <object> .VisitUnaryExpr(Expr.Unary expr)
        {
            object right = Evaluate(expr.right);

            switch (expr.op.type)
            {
            case TokenType.BANG:
                return(!IsTruthy(right));

            case TokenType.MINUS:
                return(-(double)right);
            }

            return(null);
        }
예제 #2
0
        public object VisitUnaryExpr(Expr.Unary expr)
        {
            var right = Evaluate(expr.Right);

            switch (expr.Op.Type)
            {
            case BANG:
                return(!IsTruthy(right));

            case MINUS:
                CheckNumberOperand(expr.Op, right);
                return(-(double)right);
            }

            return(null);
        }
예제 #3
0
        public object VisitUnary(Expr.Unary expr)
        {
            var right = Evaluate(expr.Right);

            switch (expr.Op.Type)
            {
            case TokenType.Bang:
                return(!IsTruthy(right));

            case TokenType.Minus:
                AssertNumberOperand(expr.Op, right);
                return(-(double)right);
            }

            throw new NotSupportedException();
        }
예제 #4
0
 public string VisitUnary(Expr.Unary expr)
 {
     return(Parenthesize(expr.Op.Lexeme, expr.Right));
 }
예제 #5
0
 public object VisitUnaryExpr(Expr.Unary expr)
 {
     Resolve(expr.Right);
     return(null);
 }
예제 #6
0
 public Unit VisitUnary(Expr.Unary expr)
 {
     Resolve(expr.Right);
     return(Unit.Default);
 }
예제 #7
0
파일: Resolver.cs 프로젝트: leddt/cslox
 public Void Visit(Expr.Unary expr)
 {
     Resolve(expr.Right);
     return(Void.Instance);
 }
예제 #8
0
 object Expr.IVisitor <object> .VisitUnaryExpr(Expr.Unary expr)
 {
     Resolve(expr.right);
     return(null);
 }