anchor.diff:  value
      : STRING
      | NUMBER
  -   | obj
  +//   | obj
      | array
      | 'true'
      | 'false'
      | 'null'
      ;
   
  +STRING
  +   : UNQUOTE_STRING | SINGLE_QUOTE_STRING | DOUBLE_QUOTE_STRING
  +   ;
   
  -STRING
  -   : '"' (ESC | ~ ["\\])* '"'
  -   ;
  -fragment ESC
  -   : '\\' (["\\/bfnrt] | UNICODE)
  -   ;
  -fragment UNICODE
  -   : 'u' HEX HEX HEX HEX
  -   ;
  -fragment HEX
  -   : [0-9a-fA-F]
  -   ;
  +fragment UNQUOTE_STRING
  +    : [a-zA-Z]+
  +    ;
  +fragment SINGLE_QUOTE_STRING
  +    : '\'' UNQUOTE_STRING '\''
  +    ;
  +fragment DOUBLE_QUOTE_STRING
  +    : '"' UNQUOTE_STRING '"'
  +    ;
  +
   NUMBER
      : '-'? INT '.' [0-9] + EXP? | '-'? INT EXP | '-'? INT
      ;
  
positive.code: grammar Config;
  
  
  config
     : value
     ;
  
  obj
     : '{' pair (',' pair)* '}'
     | '{' '}'
     ;
  
  pair
     : STRING '=' value
  
negative.code: fragment EXP
     : [Ee] [+\-]? INT
     ;
  
  WS
      : [ \t\n\r]+ -> skip
      ;
  