variant-name is currently defined as one or more words.
/* exclude whitespace and [ \ ] { } */
word ::= (((char - line-break) - inline-space) - [#x5b#x5c#x5d#x7b#x7d])+
variant-key ::= number | word (_ word)*
We don't use words anywhere else and I find it weird that they forbid so many arbitrary characters. Should we relax it to only forbid ] and maybe [? Should we allow escaping with \]? As in: [variant name with a closing bracket \] looks like this].
Additionally, I don't see why we have to force variant-name to be non-blank. [] should parse as a variant name of "" (a zero-width string). It's nor terribly useful, but consistent.
variant-nameis currently defined as one or morewords.We don't use
wordsanywhere else and I find it weird that they forbid so many arbitrary characters. Should we relax it to only forbid]and maybe[? Should we allow escaping with\]? As in:[variant name with a closing bracket \] looks like this].Additionally, I don't see why we have to force
variant-nameto be non-blank.[]should parse as a variant name of""(a zero-width string). It's nor terribly useful, but consistent.