Add ~x.y.z and ^x.y.z parsing