anchor.diff:  OPEN: '(';
   CLOSE: ')';
   STAR: '*';
  +NOT: '!' ;
   PLUS: '+';
   MINUS: '-';
   DIV: '/';
  
positive.code: 
  primaryDimFilter returns [DimFilter filter]
      : e=selectorDimFilter { $filter = $e.filter; }
      | OPEN! f=dimFilter CLOSE! { $filter = $f.filter; }
      ;
  
  
negative.code: GROUP: 'group';
  
  IDENT : (LETTER)(LETTER | DIGIT | '_')* ;
  QUOTED_STRING : '\'' ( ESC | ~'\'' )*? '\'' ;
  ESC : '\'' '\'';
  
  NUMBER: ('+'|'-')?DIGIT*'.'?DIGIT+(EXPONENT)?;
  EXPONENT: ('e') ('+'|'-')? ('0'..'9')+;
  fragment DIGIT : '0'..'9';
  fragment LETTER : 'a'..'z' | 'A'..'Z';
  
  LINE_COMMENT : '--' .*? '\r'? '\n' -> skip ;
  COMMENT      : '/*' .*? '*/' -> skip ;
  WS :  (' '| '\t' | '\r' '\n' | '\n' | '\r')+ -> skip;
  
  
  