anchor.diff:  
   // Value Expressions
   valueExpr returns [ValueExpr retval] 
  +options {backtrack=true;}	
  +	: v=valuePrimary				{retval = $v.retval;}
  +	| LPAREN o=booleanExpr RPAREN			{retval = $o.retval;}
  +	;
  +	
  +valuePrimary returns [ValueExpr retval] 
   @init {List<ValueExpr> exprList = Lists.newArrayList(); List<Operator> opList = Lists.newArrayList(); }
   	: m=multExpr {exprList.add($m.retval);} (op=plusMinus n=multExpr {opList.add($op.retval); exprList.add($n.retval);})*	
  -							{retval = getLeftAssociativeValueExprs(exprList, opList);};
  +							{retval = getLeftAssociativeValueExprs(exprList, opList);}
  +	;
   	
   multExpr returns [ValueExpr retval]
   @init {List<ValueExpr> exprList = Lists.newArrayList(); List<Operator> opList = Lists.newArrayList(); }
  
positive.code: booleanParen returns [BooleanValue retval]
  options {backtrack=true;}	
  	: LPAREN o=booleanExpr RPAREN			{retval = $o.retval;}
  	| f=booleanVal					{retval = $f.retval;}
  	;
  
  booleanVal returns [BooleanValue retval]
  
negative.code: 	| i=integerLiteral				{retval = $i.retval;}
  	| b=booleanAtom					{retval = $b.retval;}
  	| keyNULL					{retval = new StringNullLiteral();}
  	;
  
  // Literals		
  stringLiteral returns [StringValue retval]
  	: v=QUOTED 					{retval = new StringLiteral($v.text);};
  