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); }
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); }
public string Visit(Expr.Unary unary) { return(Parentherize(unary.oper.lexeme, unary.right)); }
public object Visit(Expr.Unary expr) { Resolve(expr.right); return(null); }