anchor.diff:  
   multiSelectHash : '{' keyvalExpr (',' keyvalExpr)* '}' ;
   
  -keyvalExpr : IDENTIFIER ':' expression ;
  +keyvalExpr : identifier ':' expression ;
   
   bracketSpecifier
     : '[' (SIGNED_INT | '*' | SLICE_EXPRESSION) ']'
  
positive.code: query : expression EOF ;
  
  expression
    : expression '.' (IDENTIFIER | multiSelectList | multiSelectHash | functionExpression | '*') # chainExpression
    | expression bracketSpecifier # bracketedExpression
    | bracketSpecifier # bracketExpression
    | expression '||' expression # orExpression
    | IDENTIFIER # identifierExpression
    | expression '&&' expression # andExpression
    | expression COMPARATOR expression # comparisonExpression
    | '!' expression # notExpression
  
negative.code: 
  LETTER : [a-zA-Z] ;
  
  identifier
    : NAME
    | STRING
    ;
  