anchor.diff:  
   
   fieldsDefinition: '{'  fieldDefinition+ '}';
  -fieldDefinition: description? NAME  argumentsDefinition? ':' type_  directives? ;
  +fieldDefinition: description? name  argumentsDefinition? ':' type_  directives? ;
  +
  +//https://spec.graphql.org/June2018/#sec-Field-Arguments
   argumentsDefinition: '(' inputValueDefinition+ ')';
  -inputValueDefinition:  description? NAME ':' type_ defaultValue? directives?;
  -
  -//https://graphql.github.io/graphql-spec/June2018/#sec-Interfaces
  -interfaceTypeDefinition
  - : description? 'interface' NAME directives? fieldsDefinition?;
  +inputValueDefinition:  description? name ':' type_ defaultValue? directives?;
  +
  +//https://spec.graphql.org/June2018/#sec-Object-Extensions
  +objectTypeExtension:
  +    'extend' 'type' name implementsInterfaces? directives? fieldsDefinition
  +    | 'extend' 'type' name implementsInterfaces? directives
  +    | 'extend' 'type' name implementsInterfaces
  +    ;
  +
  +//https://spec.graphql.org/June2018/#sec-Interfaces
  +interfaceTypeDefinition: description? 'interface' name directives? fieldsDefinition?;
  +
  +//https://spec.graphql.org/June2018/#sec-Interface-Extensions
  +interfaceTypeExtension:  'extend' 'interface' name directives? fieldsDefinition
  +    | 'extend' 'interface' name directives
  +    ;
   
   // https://graphql.github.io/graphql-spec/June2018/#sec-Unions
  -unionTypeDefinition:  description? 'union' NAME directives? unionMemberTypes?;
  -unionMemberTypes: '=' '|'?  type_ ('|' type_)* ;
  -
  -unionTypeExtension : 'extend' unionTypeDefinition;
  -
  -enumTypeDefinition:  description? 'enum' NAME directives? enumValuesDefinition?;
  -enumValuesDefinition: '{' ( description? enumValue  directives?)+  '}';
  -enumValue: NAME; //{ not (nullValue | booleanValue) };
  -
  -enumTypeExtension: 'extend' enumTypeDefinition;
  -
  -//https://graphql.github.io/graphql-spec/June2018/#InputObjectTypeDefinition
  -inputObjectTypeDefinition: description? 'input' NAME directives? inputFieldsDefinition?;
  -
  +unionTypeDefinition:  description? 'union' name directives? unionMemberTypes?;
  +unionMemberTypes: '=' '|'?  namedType ('|'namedType)* ;
  +
  +//https://spec.graphql.org/June2018/#sec-Union-Extensions
  +unionTypeExtension : 'extend' 'union' name directives? unionMemberTypes
  +    | 'extend' 'union' name directives
  +    ;
  +
  +//https://spec.graphql.org/June2018/#sec-Enums
  +enumTypeDefinition:  description? 'enum' name directives? enumValuesDefinition?;
  +enumValuesDefinition: '{' enumValueDefinition  '}';
  +enumValueDefinition: description? enumValue  directives?;
  +
  +//https://spec.graphql.org/June2018/#sec-Enum-Extensions
  +enumTypeExtension: 'extend' 'enum' name directives? enumValuesDefinition
  +    | 'extend' 'enum' name directives
  +    ;
  +
  +//https://spec.graphql.org/June2018/#sec-Input-Objects
  +inputObjectTypeDefinition: description? 'input' name directives? inputFieldsDefinition?;
   inputFieldsDefinition: '{' inputValueDefinition+ '}';
   
  -directiveDefinition: description? 'directive' '@' NAME argumentsDefinition? 'on' directiveLocations;
  -directiveLocations: directiveLocation ('|' directiveLocations)*;
  +//https://spec.graphql.org/June2018/#sec-Input-Object-Extensions
  +inputObjectTypeExtension:  'extend' 'input' name directives? inputFieldsDefinition
  +    | 'extend' 'input' name directives
  +    ;
  +
  +//https://spec.graphql.org/June2018/#sec-Type-System.Directives
  +directiveDefinition: description? 'directive' '@' name argumentsDefinition? 'on' directiveLocations;
  +directiveLocations: directiveLocation ('|' directiveLocation)*;
   directiveLocation: executableDirectiveLocation | typeSystemDirectiveLocation;
   
   executableDirectiveLocation:
  -'QUERY' |
  -'MUTATION' |
  -'SUBSCRIPTION' |
  -'FIELD' |
  -'FRAGMENT_DEFINITION' |
  -'FRAGMENT_SPREAD' |
  -'INLINE_FRAGMENT';
  +     'QUERY'
  +    | 'MUTATION'
  +    | 'SUBSCRIPTION'
  +    | 'FIELD'
  +    | 'FRAGMENT_DEFINITION'
  +    | 'FRAGMENT_SPREAD'
  +    | 'INLINE_FRAGMENT'
  +    ;
   
   typeSystemDirectiveLocation:
  -'SCHEMA' |
  -'SCALAR' |
  -'OBJECT' |
  -'FIELD_DEFINITION' |
  -'ARGUMENT_DEFINITION' |
  -'INTERFACE' |
  -'UNION' |
  -'ENUM' |
  -'ENUM_VALUE' |
  -'INPUT_OBJECT' |
  -'INPUT_FIELD_DEFINITION';
  -
  -// https://graphql.github.io/graphql-spec/June2018/#sec-Type-System-Extensions
  -typeSystemExtension: schemaExtension | typeExtension;
  -
  -schemaExtension: 'extend' schemaDefinition ;
  -typeExtension: 'extend' typeDefinition;
  -
  -// original code: execution definitions
  -// GraphQL Draft Specification - July 2015
  -execDefinition: operationDefinition | fragmentDefinition;
  -
  -operationDefinition:
  -	selectionSet
  -	| operationType NAME? variableDefinitions? directives? selectionSet;
  -
  -selectionSet: '{' selection+ '}';
  -
  -operationType: 'query' | 'mutation' | 'subscription';
  -
  -selection: field | fragmentSpread | inlineFragment;
  -
  -field: alias? fieldName arguments? directives? selectionSet?;
  -
  -fieldName: NAME;
  -
  -alias: NAME ':';
  -
  -arguments: '(' argument+ ')';
  -
  -argument: NAME ':' value;
  -
  -fragmentSpread: '...' fragmentName directives?;
  -
  -inlineFragment:
  -	'...' 'on' typeCondition directives? selectionSet;
  -
  -fragmentDefinition:
  -	'fragment' fragmentName 'on' typeCondition directives? selectionSet;
  -
  -fragmentName: NAME;
  -
  -directives:  directive+;
  -
  -directive:
  -	'@' NAME arguments?;
  -
  -typeCondition: typeName;
  -
  -variableDefinitions: '(' variableDefinition+ ')';
  -
  -variableDefinition: variable ':' type_ defaultValue?;
  -
  -variable: '$' NAME;
  -
  -defaultValue: '=' value;
  -
  -value:
  -	 variable           # variableValue
  -	| NUMBER	        # numberValue
  -	| String_	        # stringValue
  -	| BooleanLiteral	# booleanValue
  -	| 'null'            # nullValue
  -	| enumValue         # constValue
  -	| array		        # arrayValue
  -	| object            # objectValue
  -   ;
  -
  -object: '{' '}'
  -    | '{' objectField '}'
  -    ;
  -
  -objectField: NAME ':' value;
  -
  -BooleanLiteral
  -	:	'true'
  -	|	'false'
  -	;
  -
  -type_: typeName nonNull? | listType nonNull?;
  -
  -typeName: NAME;
  -
  -listType: '[' type_ ']';
  -
  -nonNull: '!';
  -
  -array: '[' value+ ']'
  -    | '[' ']'
  -    ;
  -
  +     'SCHEMA'
  +    | 'SCALAR'
  +    | 'OBJECT'
  +    | 'FIELD_DEFINITION'
  +    | 'ARGUMENT_DEFINITION'
  +    | 'INTERFACE'
  +    | 'UNION'
  +    | 'ENUM'
  +    | 'ENUM_VALUE'
  +    | 'INPUT_OBJECT'
  +    | 'INPUT_FIELD_DEFINITION'
  +    ;
  +
  +name: NAME;
  +
  +//Start lexer
   NAME: [_A-Za-z] [_0-9A-Za-z]*;
   
  -String_ : STRING | BLOCK_STRING;
  -
  -STRING: '"' ( ESC | ~ ["\\])* '"';
  +fragment CHARACTER: ( ESC | ~ ["\\]);
  +STRING: '"' CHARACTER* '"';
   
   BLOCK_STRING
       :   '"""' .*? '"""'
  
positive.code:     | '|'
      ;
  
  fragment INT: '0' | [1-9] [0-9]*;
  
  // no leading zeros
  
  fragment EXP: [Ee] [+\-]? INT;
  
negative.code: 	| enumTypeDefinition
  	| inputObjectTypeDefinition;
  
  //https://spec.graphql.org/June2018/#sec-Type-Extensions
  typeExtension : scalarTypeExtension
      | objectTypeExtension
      | interfaceTypeExtension
      | unionTypeExtension
      | enumTypeExtension
      | inputObjectTypeExtension
      ;
  
  //https://spec.graphql.org/June2018/#sec-Scalars
  scalarTypeDefinition: description? 'scalar' name directives?;
  
  //https://spec.graphql.org/June2018/#sec-Scalar-Extensions
  scalarTypeExtension:  'extends' 'scalar' name directives;
  
  // https://graphql.github.io/graphql-spec/June2018/#sec-Objects
  objectTypeDefinition :
      description?   'type' name implementsInterfaces?  directives? fieldsDefinition?;
  
  implementsInterfaces: 'implements' '&'? namedType
      | implementsInterfaces '&' namedType
  