anchor.diff:  
   // $<Lexer
   
  -WS : (' '| '\t'| EOL)+ -> skip;
  +WS : (' '| '\t'| EOL)+ -> channel(99);
   
   BASE : ('B'|'b')('A'|'a')('S'|'s')('E'|'e');
   
  
positive.code: 
  fragment
  ECHAR : '\\' ('t' | 'b' | 'n' | 'r' | 'f' | '\\' | '"' | '\'');
      
  fragment
  IRI_REF_CHARACTERS
      :  ~('<' | '>' | '"' | OPEN_CURLY_BRACE | CLOSE_CURLY_BRACE | PIPE | INVERSE | '`' | '\\' | '\u0000' | '\u0001'| '\u0002' | '\u0003' | '\u0004'| '\u0005' | '\u0006'| '\u0007' | '\u0008' | '\u0009'| '\u000A' | '\u000B'| '\u000C' | '\u000D' | '\u000E'| '\u000F'| '\u0010' | '\u0011'| '\u0012' | '\u0013' | '\u0014'| '\u0015' | '\u0016'| '\u0017' | '\u0018' | '\u0019'| '\u001A' | '\u001B'| '\u001C' | '\u001D' | '\u001E'| '\u001F' | '\u0020')
      ;
  
  fragment
  PN_CHARS_U : PN_CHARS_BASE | '_';
  
  fragment
  VARNAME : (PN_CHARS_U | DIGIT) (PN_CHARS_U | DIGIT | '\u00B7' | '\u0300'..'\u036F' | '\u203F'..'\u2040')*;
  
  fragment
  PN_CHARS
      : PN_CHARS_U
      | MINUS
      | DIGIT
      | '\u00B7' 
      | '\u0300'..'\u036F'
      | '\u203F'..'\u2040'
      ;
  
  fragment
  PN_PREFIX : PN_CHARS_BASE ((PN_CHARS|DOT)* PN_CHARS)?;
  
  fragment
  PN_LOCAL : (PN_CHARS_U|DIGIT|PLX)  ((PN_CHARS| DOT| PLX)* (PN_CHARS|PLX))?;
  
  fragment
  PN_CHARS_BASE
  
negative.code: HEX : DIGIT | 'A'..'F' | 'a'..'z';
  
  fragment
  PN_LOCAL_ESC : '\\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | '\'' | '(' | ')' | '*' | '+' | ',' | ';' | '=' | '/' | '?' | '#' | '@' | '%' );    	
  
  fragment
  DIGIT : '0'..'9';
  
  COMMENT : '#' .* EOL -> channel(99);
  
  fragment
  EOL : '\n' | '\r';
  