anchor.diff:      | DOUBLE
       | BOOLEAN
       ;
  -
  -extractFieldOrIdent
  -    : ident
  -    | extractField
  -    ;
  -
  -extractField
  -    : YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | TIMEZONE_HOUR | TIMEZONE_MINUTE
  -    ;
  -
   
   caseExpression
       : NULLIF '(' expr ',' expr ')'          -> ^(NULLIF expr expr)
  
positive.code:     : SHOW | TABLES | COLUMNS | PARTITIONS | FUNCTIONS
      | OVER | PARTITION | RANGE | ROWS | PRECEDING | FOLLOWING | CURRENT | ROW
      | REFRESH | MATERIALIZED | VIEW | ALIAS
      ;
  
  SELECT: 'SELECT';
  
negative.code: CURRENT_TIME: 'CURRENT_TIME';
  CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP';
  EXTRACT: 'EXTRACT';
  COALESCE: 'COALESCE';
  NULLIF: 'NULLIF';
  CASE: 'CASE';
  