anchor.diff:  	cobolWord
   ;
   
  -
  -// identifier ----------------------------------
  -
  -identifier :
  -	qualifiedDataName
  -	| tableCall
  -	| functionCall
  -	| linageCounterCall
  -;
  -
  -// array access
  -tableCall :
  -	qualifiedDataName (LPARENCHAR subscript RPARENCHAR)* (LPARENCHAR characterPosition COLONCHAR length? RPARENCHAR)?
  -;
  -
  -functionCall :
  -	FUNCTION functionName (LPARENCHAR argument RPARENCHAR)* (LPARENCHAR characterPosition COLONCHAR length? RPARENCHAR)?
  -;
  -
  -linageCounterCall :
  -	LINAGE_COUNTER ((IN | OF) fileName)?
  -;
  -
  -length :
  -	arithmeticExpression
  -;
  -
  -characterPosition :
  -	arithmeticExpression
  -;
  -
  -subscript :
  -	(
  -		integerLiteral
  -		| qualifiedDataName integerLiteral?
  -		| indexName integerLiteral?
  -		| arithmeticExpression
  -		| ALL
  -	)+
  -;
  -
  -argument :
  -	(
  -		literal
  -		| identifier
  -		| qualifiedDataName integerLiteral?
  -		| indexName integerLiteral?
  -		| arithmeticExpression
  -	)+
  +textName :
  +	cobolWord
   ;
   
   // literal ----------------------------------
  
positive.code: 	cobolWord | NONNUMERICLITERAL
  ;
  
  qualifiedDataName :
  	(dataName | conditionName)
  	(
  		((IN | OF) (dataName | tableCall))+
  		| (IN | OF) fileName
  	)?
  	| specialRegister
  ;
  
  recordName :
  	qualifiedDataName
  ;
  
negative.code: ;
  
  specialRegister :
  	ADDRESS OF identifier
  	| DATE | DAY | DAY_OF_WEEK | DEBUG_ITEM
  	| LENGTH OF identifier | LINAGE_COUNTER | LINE_COUNTER
  	| PAGE_COUNTER
  