anchor.diff:  objectPathComponent
     : <assoc=left> objectPathComponent objectPathComponent  # pathStep
     | '.' (IdentifierWithoutHyphen | StringLiteral)         # keyPathStep
  -  | LBRACK (IntLiteral|ASTERISK) RBRACK                   # indexPathStep
  +  | LBRACK (IntPosLiteral|IntNegLiteral|ASTERISK) RBRACK  # indexPathStep
     ;
   
   setLiteral
  
positive.code:   ;
  
  orderableLiteral
    : IntLiteral
    | FloatLiteral
    | StringLiteral
    | BinaryLiteral
    | HexLiteral
    | TimestampLiteral
    ;
  
  IntLiteral :
    : IntPosLiteral
    | IntNegLiteral
    ;
  
  IntPosLiteral :
    [+]? ('0' | [1-9] [0-9]*)
    ;
  
  IntNegLiteral :
    '-' ('0' | [1-9] [0-9]*)
    ;
  
  FloatLiteral :
    : FloatPosLiteral
    | FloatNegLiteral
    ;
  
  FloatPosLiteral :
    [+]? [0-9]* '.' [0-9]+
    ;
  
  FloatNegLiteral :
    '-'' [0-9]* '.' [0-9]+
    ;
  
  HexLiteral :
  
negative.code: 
  TimestampLiteral :
    't' QUOTE
    [0-9] [0-9] [0-9] [0-9] HYPHEN
    ( ('0' [1-9]) | ('1' [012]) ) HYPHEN
    ( ('0' [1-9]) | ([12] [0-9]) | ('3' [01]) )
    'T'
    ( ([01] [0-9]) | ('2' [0-3]) ) COLON
    [0-5] [0-9] COLON
    ([0-5] [0-9] | '60')
    (DOT [0-9]+)?
    'Z'
    QUOTE
    ;
  