anchor.diff:      select_stmt
   ;
   
  -recursive__select:
  +recursive_select:
       select_stmt
   ;
   
  
positive.code: ;
  
  recursive_cte:
      cte_table_name AS_ OPEN_PAR initial_select UNION_ ALL_? recursive__select CLOSE_PAR
  ;
  
  common_table_expression:
  
negative.code:     | (CUME_DIST_ | PERCENT_RANK_) OPEN_PAR CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr? CLOSE_PAR
      | (DENSE_RANK_ | RANK_ | ROW_NUMBER_) OPEN_PAR CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr_asc_desc
          CLOSE_PAR
      | (LAG_ | LEAD_) OPEN_PAR expr offset? default_value? CLOSE_PAR OVER_ OPEN_PAR partition_by?
          order_by_expr_asc_desc CLOSE_PAR
      | NTH_VALUE_ OPEN_PAR expr COMMA signed_number CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr_asc_desc
          frame_clause? CLOSE_PAR
      | NTILE_ OPEN_PAR expr CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr_asc_desc CLOSE_PAR
  ;
  
  offset:
      COMMA signed_number
  ;
  
  default_value:
      COMMA signed_number
  ;
  
  