Re: [css2.1] eliminating arbitrary back-up in lexical rules

On Tuesday 2009-06-16 12:46 -0700, Zack Weinberg wrote:
> invalid-url1    url\({w}([!#$%&*-~]|{nonascii}|{escape})*{w}
> invalid-url2    url\({w}{invalid}

It's worth noting that this proposal *still* doesn't eliminate all
arbitrary backtracking in the formal tokenizer (although I think it
produces the correct results).  In particular, it still requires
that:

  url(arbitrarily-long-text f)

be tokenized starting with a FUNCTION token, and then using
parenthesis-matching in the parser.

It's possible this could be fixed using a third invalid-url token,
though, although that would give different results for the case:
  url(foo {)
and perhaps also for the case:
  url(foo ()
than would doing the parenthesis/brace/bracket matching according to
the parsing rules.

I think I actually prefer using the parsing rules for
parenthesis/bracket/brace matching.  One way to represent this
"formally" may be by giving up on representing url() as a single
token, but instead switching the tokenizer into a different state
(what flex calls start conditions) while inside url().

-David

-- 
L. David Baron                                 http://dbaron.org/
Mozilla Corporation                       http://www.mozilla.com/

Received on Thursday, 6 August 2009 04:33:22 UTC