- From: Stefan Hermann <css@infinity-loop.de>
- Date: Mon, 30 Aug 2004 10:26:52 +0200
- To: www-style@w3.org
Hi, currently we are working on a CSS3-parser that may drive the SAC interface. After reading the different CSS3-modules and long internal discussions there remain some open questions on our side. Maybe this mailing list may help us resolve our questions. The selector grammar for CSS3 [1] defines combinators (combining simple_selector_sequence units) as follows: combinator /* combinators can be surrounded by white space */ : S* [ '+' | '>' | '~' | /* empty */ ] S* ; I assume that the "empty"-branch of the above rule should represent the "descendant combinator". If so, the above rule may lead to ambiguities in interpreting a selector. Why? Imagine a descendant combinator that a) is "empty" and b) has no surrounding space. Its representation in a CSS selector would be really _nothing_. Now the selector "E.warning" may be interpreted in two ways: 1. the obvious interpretation: an E element whose class is "warning" using the productions: selector -> simple_selector_sequence -> type_selector class 2. the "other" interpretation: an any element whose class is "warning" that is descendant of an E element ("normally" written as "E .warning") using the productions: selector -> simple_selector_sequence combinator simple_selector_sequence -> type_selector combinator class NOTE: the above interpretation uses the following information given in [2]: "If the universal selector is not the only component of a sequence of simple selectors, the * may be omitted." In contrast to [1], [3] states the following: A descendant combinator is a white space that separates two sequences of simple selectors. Thus, [3] avoids the ambiguity in interpreting a selector with an empty combinator - a combinator may not be empty. Any comments on the different approaches between [1] an [3]? Stefan [1] <http://www.w3.org/TR/2001/CR-css3-selectors-20011113/#grammar> [2] <http://www.w3.org/TR/2001/CR-css3-selectors-20011113/#universal-selector> [3] <http://www.w3.org/TR/2001/CR-css3-selectors-20011113/#descendant-combinators> Stefan
Received on Monday, 30 August 2004 08:28:57 UTC