Fallback resolution should check private-use and reserved annotations for a leading name-like token
gibson042 opened this issue · comments
Originally posted by @gibson042 in #539 (comment) and #529 (comment)
Suggested refactor, to be coupled with checking in Fallback Resolution for reserved-body-name
such that e.g. {@reserved}
and {@reserved ||}
resolve to the fallback value @reserved
while {@reserved||}
and {@reserved\\}
and {@reserved{}}
(if syntactically valid) resolve to �
:
-reserved-body = *( [s] 1*(reserved-char / reserved-escape / quoted))
+; reserved-body is a possibly-empty sequence of space-separated parts,
+; optionally starting with a name-like `reserved-body-name` used in fallback resolution
+reserved-body = [(reserved-body-name / [s] reserved-body-start) *(s reserved-body-part) [s]]
+reserved-body-name = 1*name-char
+reserved-body-start = *name-char (non-name-char / reserved-escape / quoted) [reserved-body-part]
+reserved-body-part = 1*(reserved-char / reserved-escape / quoted)
+non-name-char = %x21-2C ; omit - .
+ / %x2F ; omit digits and :
+ / %x3B-40 ; omit uppercase letters
+ / %x5B ; omit \
+ / %x5D-5E ; omit _
+ / %x60 ; omit lowercase letters and { | }
+ / %x7E-D7FF ; omit surrogates
+ / %xE000-10FFFF
+reserved-char / %x00-08 ; omit HTAB and LF
+ / %x0B-0C ; omit CR
+ / %x0E-19 ; omit SP
+ / non-name-char / ALPHA / DIGIT / "-" / "." / ":" / "_"
As I recall, we ended up determining during last week's call that this level of introspection should not be done, and that only the sigil would be used in the default fallback representation.
Yes, I think this was resolved by #539.