anchor.diff:      : IDENT 
       | ALPHA 
       | EXPRESSION 
  +    | CHARSET
       ;
   
   // ==============================================================
  
positive.code: // Character set.   Picks up the user specified character set, should it be present.
  //
  charSet
      : CHARSET_SYM WS+ STRING WS* SEMI
      -> ^(CHARSET STRING)
      ;
  
  // ---------
  // Import.  Location of an external style sheet to include in the ruleset.
  //
  cssImport
      : IMPORT_SYM WS+ cssImportLocation  (WS+ medium (WS* COMMA WS* medium)*)? WS* SEMI
      -> ^(IMPORT cssImportLocation medium*)
      ;
      
  cssImportLocation : STRING|URI ;
  
  // ---------
  // Media.   Introduce a set of rules that are to be used if the consumer indicates
  
negative.code: CDC             : '-->' { $channel = 4; }  // CDC on channel 4 in case we want it later
                  ;
                  
  INCLUDES        : '~=' ;
  DASHMATCH       : '|=' ;
  
  GREATER         : '>'  ;
  LBRACE          : '{'  ;
  RBRACE          : '}'  ;
  LBRACKET        : '['  ;
  RBRACKET        : ']'  ;
  OPEQ            : '='  ;
  SEMI            : ';'  ;
  COLON           : ':'  ;
  SOLIDUS         : '/'  ;
  MINUS           : '-'  ;
  PLUS            : '+'  ;
  STAR            : '*'  ;
  LPAREN          : '('  ;
  RPAREN          : ')'  ;
  COMMA           : ','  ;
  DOT             : '.'  ;
  PERCENT         : '%'  ;
  
  // -----------------
  // Literal strings. Delimited by either ' or "
  