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}+
num [0-9]+|[0-9]*"."[0-9]+
+intnum [0-9]+
string {string1}|{string2}
url ([!#$%&*-~]|{nonascii}|{escape})*
w [ \t\r\n\f]*
{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; }
-"@-khtml-rule" {yyTok = KHTML_RULE_SYM; return yyTok; }
-"@-khtml-decls" {yyTok = KHTML_DECLS_SYM; return yyTok; }
-"@-khtml-value" {yyTok = KHTML_VALUE_SYM; return yyTok; }
-"@-khtml-mediaquery" {BEGIN(mediaquery); yyTok = KHTML_MEDIAQUERY_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 */
{num}kHz {yyTok = KHERZ; return yyTok;}
{num}{ident} {yyTok = DIMEN; return yyTok;}
{num}%+ {yyTok = PERCENTAGE; return yyTok;}
-{num} {yyTok = NUMBER; return yyTok;}
+{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;}
%%
-