code: Expr unary() {
  		Tok tok = peek();
  		switch (tok.sym) {
  		case NOT:
  			move();
  			return new Logic(tok.sym, unary(), location);
  		case ADD:
  		case SUB:
  			move();
  			return new Unary(tok.sym, unary(), location).toConstIfPossible();
  		case INC:
  		case DEC:
  			move();
  			return new IncDec(tok.sym, false, incDec(), location);
  		default:
  			return incDec();
  		}
  	}
docs: unary : ('!' | '+' | '-'| '++' | '--') expr