anchor.diff:  stringExpr returns [Value retval]
   	: s=stringLiteral				{retval = $s.retval;}
   	| f=funcReturningString
  -	| a=attribRef[ExprType.StringType]		{retval = $a.retval;}
  +	| a=strAttrib		{retval = $a.retval;}
   	;
   
   booleanExpr returns [Predicate retval]
  
positive.code: qstring	[List<String> list]
  	: QUOTED 					{if (list != null) list.add($QUOTED.text);};
  
  INT	: DIGIT+;
  ID	: CHAR (CHAR | DIGIT)*;
   
  
negative.code: 	//| numberTerm multDiv numberFactor
  	;
  
  numberFactor returns [Value retval]
  	: (s=plusMinus)? n=numberPrimary 		
  	{retval = ($s.retval == CalcExpr.OP.MINUS) ? new CalcExpr($n.retval, CalcExpr.OP.NEGATIVE, null) : $n.retval;}
  