anchor.diff:  OR 			: '|';
   ASSIGN		: ':=';
   
  -ID			: ('a'..'z' |'A'..'Z') ('a'..'z'| 'A'..'Z' | '0'..'9')*;
  +ID			: ('a'..'z' |'A'..'Z') ('a'..'z'| 'A'..'Z' | '0'..'9' | '_')*;
   COMMENT		: '/*' .* '*/' {skip();} ;
   WS			: (' ' | '\t' | '\r'| '\n') {skip();};
   INTLIT		: ('0'..'9') ('0'..'9')*;
  
positive.code: 	|	RETURN expr SEMI -> ^(RETURN expr)
  	|	block
  	|	ID 	(	
  			:	LPAREN id_list RPAREN 		-> ^(INVOKE ID id_list)
  			|	optional_subscript ASSIGN statement_assignment -> ^(ASSIGN ID statement_assignment optional_subscript?)
  			) SEMI
  	;
  
  value
  	:	ID	(
  			:	optional_subscript		-> ^(REFERENCE ID optional_subscript?)
  			)
  	;
  
  optional_subscript
  	:	array_subscripts
  	|	
  
negative.code: else_stmt
  	:	ELSE stat_seq -> stat_seq
  	|	
  	;
  
  constant
  