The next 700 data description languages
PADS: a domain-specific language for processing ad hoc data