For this specific thread I think getting rid of tilde would help.
I think the solution to the start of this thread would be requirement that the support of the lhs match the support of rhs. Stan already checks real vs. integer, why not check also for the range? The current very commonly used way of setting half-normal and half-Cauchy priors seems to cause lot of confusion.
Another thing which would help would be compound declarations
real<lower=0> asd ~ gamma(2, 0.5);