Rule matching oddness with new CSS parser
David Hyatt
khtml-devel@kde.org
Fri, 21 Feb 2003 13:43:40 -0800
Never mind. There's still a problem here. Let me keep investigating.
dave
On Friday, February 21, 2003, at 01:36 PM, David Hyatt wrote:
> I found it. tagHistory/relation weren't getting set up in a proper
> right-to-left chain... here are the relevant altered productions:
>
> selector combinator simple_selector {
> $$ = $3;
> CSSSelector *end = $3;
> while( end->tagHistory )
> end = end->tagHistory;
> end->relation = $2;
> end->tagHistory = $1;
> }
>
> *and*
>
> specifier_list specifier {
> $$ = $2;
> $$->nonCSSHint = static_cast<CSSParser *>(parser)->nonCSSHint;
> $$->relation = CSSSelector::SubSelector;
> $$->tagHistory = $1;
> }
>
> I made the specifier_list production return the rightmost selector.
> This made right to left chaining easy for the simple selectors and
> causes the tag to be set on the rightmost selector, which should make
> rule matching more efficient, since the tag will be checked at the
> first sub-selector you encounter (instead of the last).
>
> For the production with the combinator, I walk up the tag history of
> the simple selector to get to the leftmost portion of the simple
> selector and then I chain it to the rightmost end of the selector.
>
> This fixes all the bugs on meyerweb.
>
> dave
> (hyatt@apple.com)
>
> On Friday, February 21, 2003, at 07:23 AM, Lars Knoll wrote:
>
>>
>>>> On Fre, 21 Feb 2003, David Hyatt wrote:
>>>>> In Safari with the new parser, the following rule matches the <a>
>>>>> even
>>>>> when :hover is not set. Can someone confirm if this happens on the
>>>>> KHTML HEAD?
>>>>
>>>> Yes, a very bad time to check out the new parser. Its completely
>>>> busted
>>>> today. Use yesterdays version, this one works fine. Todays doesn't
>>>> even
>>>> render www.google.com anymore.
>>>
>>> Working on it right now.
>>
>> Ok, I think (hope) I fixed all issues. The parser should now work as
>> before
>> for non namespaced CSS.
>>
>> Lars
>>
>> _______________________________________________
>> Khtml-devel@mail.kde.org
>> http://mail.kde.org/mailman/listinfo/khtml-devel
>
> _______________________________________________
> Khtml-devel@mail.kde.org
> http://mail.kde.org/mailman/listinfo/khtml-devel