The update proposal is like this:
NEW:
blank = WSP / CRLF
encoded-arb-octets = "${hex:" hex-pair-seq "}"
hex-pair-seq = *blank hex-pair *(1*blank hex-pair) *blank
^^^^^^ ^^^^^^^ ^^^^^^
The white space looks fine, but you missed defining hex-pair.
NEW:
encoded-unicode-char = "${unicode:" unicode-hex-seq "}"
unicode-hex-seq = *blank unicode-hex *(1*blank unicode-hex) *blank
^^^^^^ ^^^^^^^ ^^^^^^
unicode-hex = 1*6HEXDIG
You did define unicode-hex here, but unchanged, not as 1*HEXDIG. How
about that?
blank = WSP / CRLF
encoded-arb-octets = "${hex:" *blank hex-seq *blank "}"
encoded-unicode-chars = "${unicode:" *blank hex-seq *blank "}"
hex-seq = hex *(1*blank hex)
hex = 1*HEXDIG
IMHO, the leading and trailing white space is not part of the sequence.
If you think different, then put it back into hex-seq. If we omit
the length restriction, we may as well merge the sequences into one
production.
Michael