anchor.diff:  	;
   
   alternative
  -	: ( predicate )* ( INTO ( production )* )?
  +	: 
  +		( predicate )* 	debug_term 	( predicate )* 
  +		( INTO ( production )* debug_term ( production )* )?
   		{ ## = #(#[ALTERNATIVE,"ALTERNATIVE"], ##) }
   	;
   
   predicate
  -	: ( SEMPRED ) => SEMPRED
  -	| ( ACTION ) => ACTION
  -	| debug_term
  +	: SEMPRED
  +	| ACTION
   	;
   
   production
  -	: ( ACTION ) => ACTION
  -	| debug_term
  +	: ACTION
   	;
   
   debug_term
  
positive.code:     : ('a'..'z') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* 
      ;
  
  TRANSF
  	: '@'! ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
  	;
  
  LSQUARE	: '[';
  RSQUARE	: ']';
  
negative.code: 		{ ret = "_f.parse(%r)" % #s.getText() }
  	| c:CONS 
  		{ ret = "_f.makeStr(%r)" % #c.getText() }
  	| v:VAR // p=build_term
  //		{ ret = "_f.makeVar(%r,%s)" % (#v.getText(), p) }
  		{ ret = "_k[%r]" % #v.getText() }
  	| w:WILDCARD 
  //		{ ret = "_f.makeWildcard()" }
  