anchor.diff:      : (columnName | number | expr) (ASC | DESC)?
       ;
   
  -groupConcat
  -    : GROUP_CONCAT LP_ distinct? (expr (COMMA_ expr)* | ASTERISK_)? (orderByClause (SEPARATOR expr)?)? RP_
  -    ;
  -
  -castFunction
  -    : CAST LP_ expr AS dataType RP_
  -    ;
  -
  -convertFunction
  -    : CONVERT LP_ expr ',' dataType RP_
  -    | CONVERT LP_ expr USING ignoredIdentifier_ RP_ 
  -    ;
  -
  -positionFunction
  -    : POSITION LP_ expr IN expr RP_
  -    ;
  -
  -substringFunction
  -    :  (SUBSTRING | SUBSTR) LP_ expr FROM NUMBER_ (FOR NUMBER_)? RP_
  -    ;
  -
  -extractFunction
  -    : EXTRACT LP_ identifier_ FROM expr RP_
  -    ;
  -
  -charFunction
  -    : CHAR LP_ expr (COMMA_ expr)* (USING ignoredIdentifier_)? RP_
  -    ;
  -
  -trimFunction
  -    : TRIM LP_ (LEADING | BOTH | TRAILING) STRING_ FROM STRING_ RP_
  -    ;
  -
  -weightStringFunction
  -    : WEIGHT_STRING LP_ expr (AS dataType)? levelClause? RP_
  -    ;
  -
   levelClause
       : LEVEL (levelInWeightListElements | (NUMBER_ MINUS_ NUMBER_))
       ;
  
positive.code:     : NUMBER_ (ASC | DESC)? REVERSE?
      ;
  
  windowFunction
      : identifier_ LP_ expr (COMMA_ expr)* RP_ overClause_
      ;
  
  dataType
      : dataTypeName_ dataTypeLength? characterSet_? collateClause_? UNSIGNED? ZEROFILL? | dataTypeName_ LP_ STRING_ (COMMA_ STRING_)* RP_ characterSet_? collateClause_?
      ;
  
negative.code: 
  aggregationFunctionName_
      : MAX | MIN | SUM | COUNT | AVG | BIT_AND | BIT_OR
      | BIT_XOR | JSON_ARRAYAGG | JSON_OBJECTAGG | STD | STDDEV | STDDEV_POP | STDDEV_SAMP
      | VAR_POP | VAR_SAMP | VARIANCE
      ;
  
  distinct
  