On 6/17/12 9:50 AM, Anne van Kesteren wrote:
On Jun 17, 2012, at 3:44 PM, Boris Zbarsky<bzbar...@mit.edu> wrote:
Also probably incompatible with a depth-first recursive descent parser
implementation. Are we sure we want to overconstrain implementations like that?
Incompatible how?
Consider how this is parsed in a depth-first recursive descent parser:
a|b +,
1) The identifier "a" is scanned. This might be a tag name or a
namespace; look at the next token.
2) The symbol '|' is scanned. Great. "a" was a namespace. Resolve it.
And you're done. You have an error and bail out. You never even got to
the '+'.
-Boris
P.S. This is basically what the Gecko parser does, afaik. On the other
hand, WebKit's parser is breadth-first, again as far as I know: it first
breaks up the selector on ',', then tries to match the various bits
against the relevant productions and only after that actually deals with
the leaf parse nodes. Hence it actually sees the "missing stuff after
'+'" error before it ever tries to figure out anything about "a" in there.