Draft of attribute syntax API

Do we even want to bother with escaping? I feel like this comes up infrequently enough that the case doesn't need to be covered.