anchor.diff:  	| GREAT_DOC_ORDER  <<#0=#[">>", AST_B_OP];>>
   ;
   
  -rangeExpr!:
  -	ae1:additiveExpr <<#0=#ae1;>>
  -	{TO ae2:additiveExpr
  -	 <<#0=#(#["to", AST_B_OP], #0, #ae2);>>
  -	}
  -;
  -
  -additiveExpr!:
  -	<<ASTBase *op=NULL;>>
  -	me1:multiplicativeExpr <<#0=#me1;>>
  -	((  PLUS  <<op=#["+", AST_B_OP];>>
  -	  | MINUS <<op=#["-", AST_B_OP];>>
  -	 ) 
  -	me2:multiplicativeExpr
  -	<<#0=#(op, #0, #me2);>>
  -	)*
  -;
  -
  -multiplicativeExpr!:
  -	<<ASTBase *op=NULL;>>
  -	ue1:unaryExpr <<#0=#ue1;>>
  -	((  STAR   <<op=#["*", AST_B_OP];>>
  -	  | DIV    <<op=#["/", AST_B_OP];>>
  -	  | IDIV   <<op=#["idiv", AST_B_OP];>>
  -	  | MOD    <<op=#["mod", AST_B_OP];>>
  -	 )
  -	 ue2:unaryExpr
  -	 <<#0=#(op, #0, #ue2);>>
  -	)*
  -;
  -
  -unaryExpr!:
  -	<<ASTBase *op=NULL;>>
  -	{  MINUS  <<op=#["unary-", AST_UNARY_OP];>>
  -	 | PLUS   <<op=#["unary+", AST_UNARY_OP];>>
  -	}//does not corresponds to the specification
  -	 ue:unionExpr
  -	 <<if(op==NULL) #0=#ue;
  -	   else #0=#(op, #ue);
  -	 >>
  -;
  -
  -unionExpr!:
  -	<<ASTBase *op=NULL;>>
  -	iee1:intersectExceptExpr <<#0=#iee1;>>
  -	((  UNION <<op=#["union", AST_B_OP];>>
  -	  | ALT   <<op=#["union", AST_B_OP];>>
  -	 )
  -	 iee2:intersectExceptExpr
  -	 <<#0=#(op, #0, #iee2);>>
  -	)*
  -;
  -
  -intersectExceptExpr!:
  -	<<ASTBase *op=NULL;>>
  -	ve1:valueExpr <<#0=#ve1;>>
  -	((  INTERSECT <<op=#["intersect", AST_B_OP];>>
  -	  | EXCEPT    <<op=#["except", AST_B_OP];>>
  -	 )
  -	 ve2:valueExpr
  -	 <<#0=#(op, #0, #ve2);>>
  -	)*
  -;
  +
  +
  +
  +
   
   valueExpr!:
   	  pe:pathExpr <<#0=#pe;>>
  
positive.code: 	}
  ;
  
  valueComp!:
  	  EQ  <<#0=#["eq", AST_B_OP];>>
  	| NE  <<#0=#["ne", AST_B_OP];>>
  
negative.code: 	(OR right:andExpr <<#0=#(#["or", AST_B_OP], #0, #right);>> )*
  ;
  
  /*
  andExpr!:
  	left:instanceOfExpr <<#0=#left;>>
  	(AND right:instanceOfExpr <<#0=#(#["and", AST_B_OP], #0, #right);>>)*
  ;
  */
  
  andExpr!:
  	left:comparisonExpr <<#0=#left;>> (AND right:comparisonExpr <<#0=#(#["and", AST_B_OP], #0, #right);>>)*
  ;
  
  comparisonExpr!:
  