anchor.diff:  URI: ('http://' | 'https://') TOKEN;
   TOKEN: ('a'..'z' | 'A'..'Z') ('a'..'z' | 'A'..'Z')*;
   DIGIT: '0'..'9'+;
  -WS: (' ' | '\t' | '\n' | '\r'){$channel = HIDDEN};+WS: (' ' | '\t' | '\n' | '\r'){$channel = HIDDEN;};
positive.code:   | attribute_header
    | location_header
    )+
  ;
  
  // ----------------------------------------
  
negative.code:   CATEGORY_HEADER category_header_val
  ;
  category_header_val:
    term_attr scheme_attr class_attr (title_attr | rel_attr | location_attr | attributes)*
  ;
  term_attr:
    TOKEN
  ;
  
  scheme_attr:
    CAT_ATTR_SEP SCHEME_ATTR VAL_ASSIGN QUOTE scheme_val QUOTE
  ;
  scheme_val:
    URI
  ;
  
  class_attr:
    CAT_ATTR_SEP CLASS_ATTR VAL_ASSIGN QUOTE class_val QUOTE
  ;
  class_val:
    CLASS
  ;
  
  title_attr:
    CAT_ATTR_SEP TITLE_ATTR VAL_ASSIGN QUOTE title_val QUOTE
  ;
  title_val:
    TOKEN
  ;
  
  rel_attr:
    CAT_ATTR_SEP REL_ATTR VAL_ASSIGN QUOTE rel_val QUOTE
  ;
  rel_val:
    TOKEN
  ;
  
  location_attr:
    CAT_ATTR_SEP LOCATION_ATTR VAL_ASSIGN QUOTE location_val QUOTE
  ;
  location_val:
  