anchor.diff:          bool if_not_exists = false;
       }
       : K_CREATE K_KEYSPACE (K_IF K_NOT K_EXISTS { if_not_exists = true; } )? ks=keyspaceName
  -      K_WITH properties[attrs] { $expr = ::make_shared<cql3::statements::create_keyspace_statement>(ks, attrs, if_not_exists); }
  +      K_WITH properties[*attrs] { $expr = ::make_shared<cql3::statements::create_keyspace_statement>(ks, attrs, if_not_exists); }
       ;
   
   /**
  
positive.code:     @init { bool if_not_exists = false; }
      : K_CREATE K_COLUMNFAMILY (K_IF K_NOT K_EXISTS { if_not_exists = true; } )?
        cf=columnFamilyName { $expr = make_shared<cql3::statements::create_table_statement::raw_statement>(cf, if_not_exists); }
        cfamDefinition[expr]
      ;
  
  cfamDefinition[shared_ptr<cql3::statements::create_table_statement::raw_statement> expr]
      : '(' cfamColumns[expr] ( ',' cfamColumns[expr]? )* ')'
        ( K_WITH cfamProperty[$expr->properties()] ( K_AND cfamProperty[$expr->properties()] )*)?
      ;
  
  cfamColumns[shared_ptr<cql3::statements::create_table_statement::raw_statement> expr]
      @init { bool is_static=false; }
      : k=ident v=comparatorType (K_STATIC {is_static = true;})? { $expr->add_definition(k, v, is_static); }
          (K_PRIMARY K_KEY { $expr->add_key_aliases(std::vector<shared_ptr<cql3::column_identifier>>{k}); })?
      | K_PRIMARY K_KEY '(' pkDef[expr] (',' c=ident { $expr->add_column_alias(c); } )* ')'
      ;
  
  pkDef[shared_ptr<cql3::statements::create_table_statement::raw_statement> expr]
      @init { std::vector<shared_ptr<cql3::column_identifier>> l; }
      : k=ident { $expr->add_key_aliases(std::vector<shared_ptr<cql3::column_identifier>>{k}); }
      | '(' k1=ident { l.push_back(k1); } ( ',' kn=ident { l.push_back(kn); } )* ')' { $expr->add_key_aliases(l); }
      ;
  
  cfamProperty[cql3::statements::cf_properties& expr]
      : property[$expr.properties()]
      | K_COMPACT K_STORAGE { $expr.set_compact_storage(); }
      | K_CLUSTERING K_ORDER K_BY '(' cfamOrdering[expr] (',' cfamOrdering[expr])* ')'
      ;
  
negative.code:             | '('     id1=cident { column_changes.emplace_back(alter_table_statement::column_change{id1}); }
                   (',' idn=cident { column_changes.emplace_back(alter_table_statement::column_change{idn}); } )* ')'
              )
            | K_WITH  properties[*props]                 { type = alter_table_statement::type::opts; }
            | K_RENAME                                  { type = alter_table_statement::type::rename; }
                 id1=cident K_TO toId1=cident { renames.emplace_back(id1, toId1); }
                 ( K_AND idn=cident K_TO toIdn=cident { renames.emplace_back(idn, toIdn); } )*
  