anchor.diff:  	;
   
   arithmetic_term
  -	: arithmetic_factor (( '*' | '/' ) arithmetic_term)?
  -	//| arithmetic_term ( '*' | '/' ) arithmetic_factor
  +	: arithmetic_factor ((STAR | DIV) arithmetic_term)?
  +	//| arithmetic_term (STAR | DIV) arithmetic_factor
   	;
   
   arithmetic_factor
  
positive.code: grammar Hql;
  
  options {superClass=HBaseParser;}
  
  tokens {
  	DOT = '.';
  	COLON = ':';
  	STAR = '*';
  	COMMA = ',';
  	PLUS = '+';
  	MINUS = '-';
  
negative.code: 	;
  
  simple_cond_expr
  	: between_expr
  	| like_expr
  	| in_expr
  	| null_comp_expr
  	| comp_expr 
  	;
  
  between_expr
  	: attr_field keyNOT? keyBETWEEN 
  	  ( arithmetic_expr keyAND arithmetic_expr
  	  | string_expr keyAND string_expr
  	  | datetime_expr keyAND datetime_expr
  	  )
  	;
  
  like_expr
  	: attr_field keyNOT? keyLIKE pattern_value=string_literal; // ('ESCAPE' escape_character=string_literal)?;
  
  in_expr	: attr_field keyNOT? keyIN LPAREN in_item (COMMA in_item)* RPAREN;
  
  in_item : string_literal | numeric_literal;
  
  null_comp_expr
  	: attr_field keyIS (keyNOT)? keyNULL;
  
  comp_expr
  	: attr_field comp_op (string_expr | datetime_expr | arithmetic_expr)
  	//| (string_expr | datetime_expr | arithmetic_expr)  comp_op attr_field
  	;
  	
  comp_op	: EQ | GT | GTEQ | LT | LTEQ | LTGT;
  
  arithmetic_expr
  