anchor.diff:  
   fragment HEX: [0-9a-fA-F];
   
  -NUMBER: '-'? INT '.' [0-9]+ EXP? | '-'? INT EXP | '-'? INT;
  +fragment NONZERO_DIGIT: [1-9];
  +fragment DIGIT: [0-9];
  +fragment FRACTIONAL_PART: '.' DIGIT+;
  +fragment EXPONENTIAL_PART: EXPONENT_INDICATOR SIGN? DIGIT+;
  +fragment EXPONENT_INDICATOR: [eE];
  +fragment SIGN: [+-];
  +fragment NEGATIVE_SIGN: '-';
  +
  +FLOAT: INT FRACTIONAL_PART
  +    | INT EXPONENTIAL_PART
  +    | INT FRACTIONAL_PART EXPONENTIAL_PART
  +    ;
  +
  +INT: NEGATIVE_SIGN? '0'?
  +    | NEGATIVE_SIGN? NONZERO_DIGIT DIGIT*
  +    ;
  +
   PUNCTUATOR: '!'
       | '$'
       | '(' | ')'
  
positive.code:  */
  grammar GraphQL;
  
  document: definition+;
  
  definition:
  	execDefinition
  	| typeSystemDefinition
  	| typeSystemExtension;
  
  // https://graphql.github.io/graphql-spec/June2018/#TypeSystemDefinition
  
  typeSystemDefinition:
  	schemaDefinition
  	| typeDefinition
  	| directiveDefinition;
  
  // https://graphql.github.io/graphql-spec/June2018/#sec-Schema
  schemaDefinition:
  	 'schema' directives? '{' rootOperationTypeDefinition+ '}';
  
  rootOperationTypeDefinition: operationType ':' namedType;
  namedType: NAME;
  
  //https://graphql.github.io/graphql-spec/June2018/#TypeDefinition
  typeDefinition:
  	scalarTypeDefinition
  	| objectTypeDefinition
  
negative.code:     | '|'
      ;
  
  // no leading zeros
  
  fragment EXP: [Ee] [+\-]? INT;
  