- From: Clive D.W. Feather <clive@demon.net>
- Date: Wed, 7 May 2003 15:20:34 +0100
- To: Rob Cameron <cameron@cs.sfu.ca>
- Cc: Graham Klyne <GK@ninebynine.org>, uri@w3.org
Rob Cameron said:
> I think I would prefer your interpretation that HEXDIG allows
> upper or lower case. But in a literal reading of RFC2234
> and other reference materials, the following three
> counterarguments concern me.
All are wrong. I've just spoken to Paul Overell, one of the authors of
RFC2234.
Firstly, he is *CLEAR* that ABNF is always case insensitive.
> (1) The reference ABNF parser available from IETF does not
> permit lower case values for HEXDIGIT.
> http://www.ops.ietf.org/abnf/
"That's a bug."
> (2) The HEXDIG production satisfies the individual character
> specification constraint of RFC 2234:
>
> "To specify a rule which IS case SENSITIVE, specify
> the characters individually."
No it does not.
> HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
If you read the text in the RFC, it actually says:
To specify a rule which IS case SENSITIVE,
specify the characters individually.
For example:
rulename = %d97 %d98 %d99
or
rulename = %d97.98.99
Paul was clear that HEXDIG allows lowercase.
> (If specification by numeric value is required, and not
> just an option as shown in the examples, then why doesn't
> RFC2234 say "by numeric value" rather than "individually?")
Because it says "individually". And because, in context, the example makes
it clear what is meant - the previous example used quoted strings.
And if "a" was case-sensitive, the example in 3.1 would not have been
written the way it was.
> (3) Section 3.4 of RFC 2234 shows that a range of numeric
> values has an equivalent specification as individual characters.
>
> DIGIT = %x30-39
> is equivalent to:
> DIGIT = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"
Because, strangely enough, those are not letters.
> Therefore, one should be able to say that %x41-46 is
> equivalent to "A" / "B" / "C" / "D" / "E" / "F"
No. %x41-46 is equivalent to %x41 / %x42 / %x43 / %x44 / %x45 / %x46.
Very simply, it says:
ABNF strings are case-insensitive
It does not say:
ABNF strings longer than one character are case-insensitive
--
Clive D.W. Feather | Work: <clive@demon.net> | Tel: +44 20 8495 6138
Internet Expert | Home: <clive@davros.org> | *** NOTE CHANGE ***
Demon Internet | WWW: http://www.davros.org | Fax: +44 870 051 9937
Thus plc | | Mobile: +44 7973 377646
Received on Wednesday, 7 May 2003 10:20:45 UTC