- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Mon, 26 Nov 2012 10:16:02 -0800
- To: Cameron McCormack <cam@mcc.id.au>
- Cc: "www-style@w3.org" <www-style@w3.org>
On Sun, Nov 25, 2012 at 9:04 PM, Cameron McCormack <cam@mcc.id.au> wrote:
> css3-syntax says that a primitive is a preserved token, a function or a
> simple block, and that a preserved token is any except for:
>
> function, bad-string, bad-url, [, (, {
>
> In the tree construction algorithm, often the "consume a primitive"
> definition is invoked, and that doesn't say what to do with a token that
> isn't a primitive.
>
> For example if my style sheet is:
>
> <style>@supports (font-family:'Helvetica
> ){}</style>
>
> this would generate the following sequence of tokens:
>
> at-keyword
> whitespace
> (
> ident
> colon
> bad-string
> whitespace
> )
> {
> }
> end-of-file
>
> which will result in the tree construction algorithm being in the "at-rule
> prelude" mode when it encounters the bad-string. In that mode, the
> "anything else" branch is chosen, which says to "consume a primitive", and
> in those steps the last branch is chosen, which is just "return the current
> input token", even though the token is not a preserved token (or a
> primitive). This contradicts the note earlier in section 3.5 that says only
> preserved tokens will be in the output tree.
You're right! Bad me. I already need to do a review and fix up the
places where EOF isn't properly handled in tree-construction; I'll
make sure to handle non-preserved tokens as well.
~TJ
Received on Monday, 26 November 2012 18:16:53 UTC