anchor.diff:  		d = null;
   	}
   	:	opt_eol
  -		f=ID	opt_eol op=(	'=='
  -			|	'>'
  -			|	'>='
  -			|	'<'
  -			|	'<='
  -			|	'!='
  -			) opt_eol	(	lc=literal_constraint { d = new LiteralDescr( f.getText(), null, lc ); }
  -					|	rvc=retval_constraint { d = new ReturnValueDescr( f.getText(), null, rvc ); } )
  +		f=ID	opt_eol 	op=(	'=='
  +					|	'>'
  +					|	'>='
  +					|	'<'
  +					|	'<='
  +					|	'!='
  +					) opt_eol	
  +					
  +					(	lc=literal_constraint { d = new LiteralDescr( f.getText(), op.getText(), lc ); }
  +					|	rvc=retval_constraint { d = new ReturnValueDescr( f.getText(), op.getText(), rvc ); } 
  +					)
   		opt_eol
   	;
   	
  
positive.code: 	package org.drools.lang;
  	import java.util.List;
  	import java.util.ArrayList;
  	import org.drools.lang.descr.*;
  }
  
  @parser::members {
  	private String    packageName = "";
  	private List      rules       = new ArrayList();
  	private List      imports     = new ArrayList();
  
negative.code: 	|	str=STRING { word=str.getText(); word=word.substring( 1, word.length()-1 ); }
  	;
  
  
  MISC 	:
  		'!' | '@' | '$' | '%' | '^' | '&' | '*' | '_' | '-' | '+' | '|' | ',' | '{' | '}' | '[' | ']'
  	;
  
  WS      :       (	' '
                  |	'\t'
  