Exemple #1
0
        private Expr Unary()
        {
            Expr expr = null;

            if (Match(TokenType.Bang, TokenType.Minus))
            {
                Token oper  = Previous();
                Expr  right = Unary();
                expr = new Expr.Unary(oper, right);
            }
            else
            {
                expr = Call();
            }

            return(expr);
        }
Exemple #2
0
        public object Visit(Expr.Unary expr)
        {
            object ret = null;

            object right = Evaluate(expr.right);

            switch (expr.oper.type)
            {
            case TokenType.Minus:
                CheckNumberOperand(expr.oper, right);
                ret = -(double)right;
                break;

            case TokenType.Bang:
                ret = !IsTruthy(right);
                break;

            default:
                // do nothing
                break;
            }

            return(ret);
        }
Exemple #3
0
 public string Visit(Expr.Unary unary)
 {
     return(Parentherize(unary.oper.lexeme, unary.right));
 }
Exemple #4
0
        public object Visit(Expr.Unary expr)
        {
            Resolve(expr.right);

            return(null);
        }