anchor.diff:      | c=cident '[' t=term ']' { $op = std::make_unique<cql3::operation::element_deletion>(std::move(c), std::move(t)); }
       | c=cident '.' field=ident { $op = std::make_unique<cql3::operation::field_deletion>(std::move(c), std::move(field)); }
       ;
  +
  +pruneMaterializedViewStatement returns [std::unique_ptr<raw::select_statement> expr]
  +    @init {
  +        bool is_distinct = false;
  +        std::optional<expression> limit;
  +        std::optional<expression> per_partition_limit;
  +        raw::select_statement::parameters::orderings_type orderings;
  +        bool allow_filtering = false;
  +        raw::select_statement::parameters::statement_subtype statement_subtype = raw::select_statement::parameters::statement_subtype::PRUNE_MATERIALIZED_VIEW;
  +        bool bypass_cache = false;
  +        auto attrs = std::make_unique<cql3::attributes::raw>();
  +    }
  +	: K_PRUNE K_MATERIALIZED K_VIEW cf=columnFamilyName (K_WHERE wclause=whereClause)? ( usingClause[attrs] )?
  +	  {
  +	        auto params = make_lw_shared<raw::select_statement::parameters>(std::move(orderings), is_distinct, allow_filtering, statement_subtype, bypass_cache);
  +	        return std::make_unique<raw::select_statement>(std::move(cf), std::move(params),
  +            std::vector<shared_ptr<raw_selector>>(), std::move(wclause), std::move(limit), std::move(per_partition_limit),
  +            std::vector<::shared_ptr<cql3::column_identifier::raw>>(), std::move(attrs));
  +	  }
  +	;
   
   /**
    * BEGIN BATCH
  
positive.code: K_LIKE:        L I K E;
  
  K_TIMEOUT:     T I M E O U T;
  
  // Case-insensitive alpha characters
  fragment A: ('a'|'A');
  
negative.code:         | K_SERVICE
          | K_LEVEL
          | K_LEVELS
          | K_PRUNE
          ) { $str = $k.text; }
      ;
  
  