nmchar [_a-zA-Z0-9-]|{nonascii}|{escape}
string1 \"([\t !#$%&(-~]|\\{nl}|\'|{nonascii}|{escape})*\"
string2 \'([\t !#$%&(-~]|\\{nl}|\"|{nonascii}|{escape})*\'
+hexcolor {h}{3}|{h}{6}
ident -?{nmstart}{nmchar}*
name {nmchar}+
{ident} {yyTok = IDENT; return yyTok;}
-"#"{name} {yyTok = HASH; return yyTok;}
+"#"{hexcolor} {yyTok = HEX_OR_IDENT; return yyTok;}
+"#"{ident} {yyTok = IDSEL; return yyTok;}
"@import" {BEGIN(mediaquery); yyTok = IMPORT_SYM; return yyTok;}
"@page" {yyTok = PAGE_SYM; return yyTok;}
"@font-face" {yyTok = FONT_FACE_SYM; return yyTok;}
"@charset" {yyTok = CHARSET_SYM; return yyTok;}
"@namespace" {yyTok = NAMESPACE_SYM; return yyTok; }
-"@-webkit-rule" {yyTok = WEBKIT_RULE_SYM; return yyTok; }
-"@-webkit-decls" {yyTok = WEBKIT_DECLS_SYM; return yyTok; }
-"@-webkit-value" {yyTok = WEBKIT_VALUE_SYM; return yyTok; }
+"@-webkit-rule" {yyTok = WEBKIT_RULE_SYM; return yyTok; }
+"@-webkit-decls" {yyTok = WEBKIT_DECLS_SYM; return yyTok; }
+"@-webkit-value" {yyTok = WEBKIT_VALUE_SYM; return yyTok; }
"@-webkit-mediaquery" {BEGIN(mediaquery); yyTok = WEBKIT_MEDIAQUERY_SYM; return yyTok; }
-"!"{w}"important" {yyTok = IMPORTANT_SYM; return yyTok;}
+"!"{w}"important" {yyTok = IMPORTANT_SYM; return yyTok;}
{num}em {yyTok = EMS; return yyTok;}
{num}__qem {yyTok = QEMS; return yyTok;} /* quirky ems */
{intnum} {yyTok = INTEGER; return yyTok;}
{num} {yyTok = FLOAT; return yyTok;}
+"not(" {yyTok = NOTFUNCTION; return yyTok;}
"url("{w}{string}{w}")" {yyTok = URI; return yyTok;}
"url("{w}{url}{w}")" {yyTok = URI; return yyTok;}
{ident}"(" {yyTok = FUNCTION; return yyTok;}
. {yyTok = *yytext; return yyTok;}
%%
-