- From: Simon Sapin <simon.sapin@kozea.fr>
- Date: Wed, 30 Jan 2013 09:02:08 +0100
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- CC: www-style list <www-style@w3.org>
Le 30/01/2013 04:01, Tab Atkins Jr. a écrit :
> Okay, I've added some entry points. […]
"Parse a stylesheet" is obviously fine.
In "Parse a rule", is "return a parse error" different from when the
parser says "this is a parse error"? In others words:
@media screen; /* Invalid, @media is rule-filled */
foo { bar: baz }
The stylesheet object returned by the parser only contains one
(non-ignored) rule. Should "parse a rule" be considered successful?
It’s tempting to have "Parse a list of declarations" reuse the
"top-level" concept rather than adding a specific flag, but I’m not sure
how to do that without having declaration objects directly in a (dummy)
stylesheet object. this is editorial/minor.
"Parse a value". Is a value the same thing as a primitive? Do you want
to avoid "primitive" because it is too obscure? Is it to match
css3-values terminology? (How are "primitive" and "value" related to
"component value"?) I find "value" a bit generic, an overloading
"property value". (A property value contains … a list of values?)
More importantly, is "Parse a value" successful if the input is not
exhausted after "consume a primitive"? I think it should ignore trailing
whitespace, but fail if there are more non-whitespace tokens.
"Parse a list of values" is fine, but see "Parse a value" for naming.
I don’t know if "Parse a comma-separated list of values" is really
useful, especially if "consume a primitive" never fails. (If bad-string
and bad-url become preserved tokens.) It is easy to emulate with "Parse
a list of values". But if we keep it:
Here you use "push" for a list, while the rest of the spec uses "push"
for input streams and stacks, and "append" for lists. "Parse a
comma-separated list of values" should use "append" for consistency.
Finally, temp needs to be appended to val in the last step before
returning val.
> I also added some "entry points" for parsing a single value, a list of
> values, and a comma-separated list of values, as those seem like the
> kinds of things that other technologies would want to hook into if
> they're exposing something that uses CSS syntax. They dont' actually
> enter the parser, but instead just work on the token stream directly,
> and use the "consume a primitive" operation.
>
> Your #3 and #4 should be addressed by a grammar. I still intend to
> define a bunch of grammar terms and their expansions, so that new
> at-rules and the like can be described in CSS property grammar terms,
> which is much easier to read and write than the current ways of
> writing rule grammars.
>
> So, for example, your #3 would just be written as "<ident> : <primitive>+".
Looks good.
What are the precise rules for whitespace in such grammars? Is *any*
whitespace ignored, unless otherwise specified?
--
Simon Sapin
Received on Wednesday, 30 January 2013 08:02:32 UTC