Пример #1
0
        public Object Visit_UnaryExpr(UnaryExpr expr)
        {
            Object right = Evaluate(expr.right);

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

            case TokenType.Minus: return(-(double)right);
            }
            throw new Exception("Unhandled case");
        }
Пример #2
0
        public object VisitUnaryExpr(UnaryExpr expr)
        {
            object right = Evaluate(expr.Right);

            switch (expr.Oper.Type)
            {
            case TokenType.MINUS:
                AssertNumberType(expr.Oper, right);
                return(-(double)right);

            case TokenType.BANG:
                return(!IsTruthy(right));
            }

            // Should be unreachable.
            throw new LoxRuntimeException(expr.Oper, $"UnaryExpr has unexpected operator: {expr.Oper.Type}.");
        }
Пример #3
0
        public object VisitUnaryExpr(UnaryExpr expr)
        {
            Resolve(expr.Right);

            return(null);
        }
Пример #4
0
 public Void Visit_UnaryExpr(UnaryExpr expr)
 {
     Resolve(expr.right);
     return(null);
 }
Пример #5
0
 public string Visit_UnaryExpr(UnaryExpr expr)
 {
     return(Parenthesize(expr.op.ToText(), expr.right));
 }