- From: Koen Holtman <koen@win.tue.nl>
- Date: Mon, 13 May 1996 22:58:34 +0200 (MET DST)
- To: Dave Kristol <dmk@allegra.att.com>
- Cc: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
Dave Kristol:
>
>Two questions about the grammar.
>
> Accept = "Accept" ":" #(
> media-range
> [ ( ":" | ";"
> range-parameter
> *( ";" range-parameter ) ]
> | extension-token )
>
>
>1) Should that be *( (":" | ";") range-parameter ) ?
That would also work, but it would even be more horrible. I have
received mixed comments about the : stuff at the web conference. Some
people like it, some people don't. The reason for having it is to get
rid of a potential syntactic ambiguity: some (future) MIME types could
have numeric parameters called `q'. Sure, the solution is horrible.
There is actually another solution, that you may call less or more
horrible, depending on the parsing technology you use. See below.
>2) Is <extension-token> really useful?
Yes. I have use for such an extension-token in my transparent content
negotiation design. Of course, I could also put it in another header,
or even in its own header, but I think it is nicest in Accept.
> Isn't it syntactically ambiguous?
No. A media-range always has a / in it, an extension-token never has a
/ in it.
>(Okay, okay, so it's LR(1). That's messy, if not unprecedented.)
>It would be nice to have an example that shows both parameters and
>range-parameters, such as:
> text/html; level=1: q=0.9, text/html; level=2: q=1.0
Yes.
---
Other solution to the syntactic ambiguity problem:
Accept = "Accept" ":" #(
media-range
[ range-parameters ] )
media-range = ( "*/*"
| ( type "/" "*" )
| ( type "/" subtype )
) *( ";" parameter )
range-parameters = ( ";" "q" "=" qvalue )
*(";" extension-range-parameter )
extension-range-parameter = ( token "=" token )
extension-token = token
together with the text:
A media-range which includes a parameter with the attribute name "q"
MUST be followed by a range-parameters part. This rule is meant to
disambiguate the parsing of such constructs. An example is:
text/x-example;q=0;r=3;q=1;r=4
which is "text/x-example;q=0;r=3" with a quality value of 1.
In my opinion, It is not yet too late to switch to this solution; I
could propose appropriate edits to Jim Gettys if many people on this
list say they like it better than the solution with the colon.
>Dave Kristol
Koen.
Received on Monday, 13 May 1996 14:08:07 UTC