fn is_swizzle(s: &str) -> boolExpand description
A .<chars> member access is a swizzle iff every char is one of the
component letters (xyzw / rgba), with length 1–4. HLSL doesn’t allow
mixed xyzw+rgba in one swizzle, but we accept it here — the emitter is
stricter than the parser.