anchor.diff:  */
   	char-selector :
   		length-selector
  -	|	'(' 'LEN' '=' type-param-value ',' 'KIND' '=' scalar-int-constant-expr ')'
  +	|	'(' 'LEN' '=' type-param-value ',' KIND '=' scalar-int-constant-expr ')'
   	|	'(' type-param-value ',' ( KIND '=' ) ? scalar-int-constant-expr ')'
  -	|	'(' 'KIND' '=' scalar-int-constant-expr	( ',' 'LEN' '=' type-param-value ) ? ')'
  +	|	'(' 'KIND' '=' scalar-int-constant-expr	( ',' LEN '=' type-param-value ) ? ')'
   	;
   
   /*
  
positive.code: 	or EXTENDS ( parent-type-name )
  */
  	type-attr-spec :
  		'ABSTRACT'
  	| access-spec
  	| 'BIND' '(' 'C' ')'
  	| 'EXTENDS' '(' parent-type-name ')'
  	;
  
  /*
  
negative.code: 	or scalar-structure-component
  	or scalar-constant
  */
  	parent-string :
  		scalar-variable-name
  	|	array-element
  	|	coindexed-named-object
  	|	scalar-structure-component
  	|	scalar-constant
  	;
  	
  /*
  	R610 substring-range is [ scalar-int-expr ] : [ scalar-int-expr ]
  */
  	substring-range :
  		scalar-int-expr ? ':' scalar-int-expr ?
  	;
  
  /*
  	R611 data-ref is part-ref [ % part-ref ] ...
  */
  	data-ref :
  		part-ref ( '%' part-ref ) ?
  	;
  
  /*
  	R612 part-ref is part-name [ ( section-subscript-list ) ] [ image-selector ]
  */
  	part-ref :
  		part-name ( '(' section-subscript-list ')' ) ? image-selector ?
  	;
  
  /*
  	R613 structure-component is data-ref
  */
  	structure-component :
  		data-ref
  	;
  
  /*
  	R614 coindexed-named-object is data-ref
  */
  	coindexed-named-object :
  		data-ref
  	;
  
  /*
  	R615 complex-part-designator is designator % RE
  	or designator % IM
  */
  	complex-part-designator :
  		designator '%' RE
  	|	designator '%' IM
  	;
  
  /*
  	R616 type-param-inquiry is designator % type-param-name
  */
  	type-param-inquiry :
  		designator '%' type-param-name
  	;
  
  /*
  	R617 array-element is data-ref
  */
  	array-element :
  		data-ref
  	;
  
  /*
  	R618 array-section is data-ref [ ( substring-range ) ]
  	or complex-part-designator
  */
  	array-section :
  		data-ref ( '(' substring-range ')' ) ?
  	|	complex-part-designator
  	;
  
  /*
  	R619 subscript is scalar-int-expr
  */
  	subscript :
  		scalar-int-expr
  	;
  
  /*
  	R620 section-subscript is subscript
  	or subscript-triplet
  	or vector-subscript
  */
  	section-subscript :
  		subscript
  	|	subscript-triplet
  	|	vector-subscript
  	;
  
  /*
  	R621 subscript-triplet is [ subscript ] : [ subscript ] [ : stride ]
  */
  	subscript-triplet :
  		subscript ? ':' subscript ? ( ':' stride ) ?
  	;
  
  /*
  	R622 stride is scalar-int-expr
  */
  	stride :
  		scalar-int-expr
  	;
  	
  /*
  	R623 vector-subscript is int-expr
  */
  	vector-subscript :
  		int-expr
  	;
  
  /*
  	R624 image-selector is lbracket cosubscript-list rbracket
  */
  	image-selector :
  		'[' cosubscript-list ']'
  	;
  	
  /*
  	R625 cosubscript is scalar-int-expr
  */
  	cosubscript :
  		scalar-int-expr
  	;
  
  /*
  	R626 allocate-stmt is ALLOCATE ( [ type-spec :: ] allocation-list
  	[, alloc-opt-list ] )
  */
  	allocate-stmt :
  		ALLOCATE '(' ( type-spec ':' ':' ) ? allocation-list
  		( ',' alloc-opt-list ) ? ')'
  	;
  
  /*
  	R627 alloc-opt is ERRMSG = errmsg-variable
  