anchor.diff:     | '\u200D'
      ;
   
  -fragment ESC
  -   : '\\' (["\\/bfnrt] | UNICODE )
  +fragment DOUBLE_QUOTE_CHAR
  +   : '\\' ["\\/bfnrt\n]
  +   | ~ ["\\\u0000-\u001F]
  +   | UNICODE_ESC
      ;
   
  -fragment UNICODE
  -   : 'u' HEX HEX HEX HEX
  +fragment SINGLE_QUOTE_CHAR
  +   : '\\' ['\\/bfnrt\n]
  +   | ~ ['\\\u0000-\u001F]
  +   | UNICODE_ESC
      ;
   
  +fragment UNICODE_ESC
  +   : '\\u' HEX HEX HEX HEX
  +   ;
   
   fragment HEX
      : [0-9a-fA-F]
  
positive.code:    : [\p{L}]
     | '$'
     | '_'
     | ESC
     ;
  
  fragment IDENTIFIER_PART
  
negative.code:    | 'null'
     ;
  
  STRING
     : '"' DOUBLE_QUOTE_CHAR* '"'
     | '\'' SINGLE_QUOTE_CHAR* '\''
     ;
  
  IDENTIFIER
  