[Prev][Next][Index][Thread]

Re: Problem with RGB value syntax



Chris Lilley writes:
 > Wolfgang Rieger writes:
 >  > There is a problem with the proposed syntax for RGB and RRGGBB values.
 >  > Because both id-selector and RGB values are prefixed with '#', it is
 >  > not possible to use Lex in a straightforward way to implement the
 >  > lexical analyzer.
 > 
 > This is clearly a problem with lex, not with CSS. The selector appears
 > on the lhs and the rgb vales appear on the rhs; there is no ambiguity
 > in the syntax.

Keeping the lex rules simple was not a primary goal. However, Wolfgang
is correct in that the formal grammar is currently incomplete. We have
a corrected draft that is almost finished, which we'll publish as soon
as Hakon is back from the US.

The main point is: what will be easiest to understand for the human
user and I believe that `#' for ID's and `#' for RGB values are both
common practice and not likely to lead to confusion (except among
computer scientists:-) )

The disambiguating rule in the lex spec depends on the `{' and
introduces a `starting condition', like this:

    %s RHS
...
    "{"                     {BEGIN(RHS); return '{';}
...
    "}"                     {BEGIN(INITIAL); return '}';}
...
    <RHS>"#"{h3}            |
    <RHS>"#"{h6}            |
    <RHS>"#"{h9}            {yylval.str = yytext; return HEXCOLOR;}
    "#"                     return '#';

with the appropriate definitions of h3, h6, h9 (hex numbers) and the
token HEXCOLOR. This means that HEXCOLOR can only be matched on the
rhs.




Bert
-- 
  Bert Bos                                ( W 3 C ) http://www.w3.org/
  http://www.w3.org/pub/WWW/People/Bos/                      INRIA/W3C
  bert@w3.org                             2004 Rt des Lucioles / BP 93
  +33 93 65 77 71                 06902 Sophia Antipolis Cedex, France


References: