anchor.diff:  fragment EXP
      : [Ee] [+\-]? INT
      ;
  -// \- since - means "range" inside [...]
  +
   WS
  -   : [ \t\n\r] + -> skip
  -   ;
  +    : [ \t\n\r]+ -> skip
  +    ;
  
positive.code: grammar Config;
  
  
  config
     : value
     ;
  
  obj
     : '{' pair (',' pair)* '}'
     | '{' '}'
     ;
  
  pair
     : STRING '=' value
  
negative.code: value
     : STRING
     | NUMBER
  //   | obj
     | array
     | 'true'
     | 'false'
     | 'null'
     ;
  
  STRING
     : UNQUOTE_STRING | SINGLE_QUOTE_STRING | DOUBLE_QUOTE_STRING
     ;
  
  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
     ;
  