anchor.diff:        K_WITH properties[attrs] { $expr = make_shared<cql3::statements::create_keyspace_statement>(ks, attrs, if_not_exists); }
       ;
   
  -#if 0
   /**
    * CREATE COLUMNFAMILY [IF NOT EXISTS] <CF> (
    *     <name1> <type>,
  
positive.code:     | st7= truncateStatement           { $stmt = st7; }
  #endif
      | st8= createKeyspaceStatement     { $stmt = st8; }
  #if 0
      | st9= createTableStatement        { $stmt = st9; }
      | st10=createIndexStatement        { $stmt = st10; }
      | st11=dropKeyspaceStatement       { $stmt = st11; }
      | st12=dropTableStatement          { $stmt = st12; }
  
negative.code:  *     <name3> <type>
   * ) WITH <property> = <value> AND ...;
   */
  createTableStatement returns [shared_ptr<cql3::statements::create_table_statement::raw_statement> expr]
      @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] ( K_AND cfamProperty[expr] )*)?
      ;
  
  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[shared_ptr<cql3::statements::create_table_statement::raw_statement> expr]
      : property[expr->properties]
      | K_COMPACT K_STORAGE { $expr->set_compact_storage(); }
      | K_CLUSTERING K_ORDER K_BY '(' cfamOrdering[expr] (',' cfamOrdering[expr])* ')'
      ;
  
  cfamOrdering[shared_ptr<cql3::statements::create_table_statement::raw_statement> expr]
      @init{ bool reversed=false; }
      : k=ident (K_ASC | K_DESC { reversed=true;} ) { $expr->set_ordering(k, reversed); }
      ;
  
  
  #if 0
  /**
   * CREATE TYPE foo (
   *    <name1> <type1>,
  