anchor.diff:      ;
   
   type_name
  -    :   name+ ('(' signed_number ')'
  -         |   '(' signed_number ',' signed_number ')')?
  +    :   name+
  +    	(	'(' signed_number ')'
  +        |   '(' signed_number ',' signed_number ')'
  +        )?
       ;
   
   column_constraint
  
positive.code: 
  factored_select_stmt
      :   (K_WITH K_RECURSIVE? common_tables)?
     select_core (compound_operator select_core)*
     (K_ORDER K_BY ordering_term (',' ordering_term)*)?
     (K_LIMIT expr ((K_OFFSET | ',') expr)?)?
      ;
  
  insert_stmt
      :   with_clause? (K_INSERT
                  |   K_REPLACE
                  |   K_INSERT K_OR K_REPLACE
                  |   K_INSERT K_OR K_ROLLBACK
                  |   K_INSERT K_OR K_ABORT
                  |   K_INSERT K_OR K_FAIL
                  |   K_INSERT K_OR K_IGNORE) K_INTO
     (database_name '.')? table_name ('(' column_names ')')?
     (K_VALUES '(' exprs ')' (',' '(' exprs ')')*
     |   select_stmt
     |   K_DEFAULT K_VALUES
    )
      ;
  
  pragma_stmt
      :   K_PRAGMA (database_name '.')? pragma_name ('=' pragma_value
                                                 |   '(' pragma_value ')')?
      ;
  
  reindex_stmt
      :   K_REINDEX (collation_name
               |   (database_name '.')? (table_name | index_name)
              )?
      ;
  
  release_stmt
  
negative.code:     ;
  
  delete_stmt
      :   with_clause? K_DELETE K_FROM qualified_table_name (K_WHERE expr)?
      ;
  
  delete_stmt_limited
      :   with_clause? K_DELETE K_FROM qualified_table_name (K_WHERE expr)?
  		(
  		(K_ORDER K_BY ordering_term (',' ordering_term)*)?
  		K_LIMIT expr ((K_OFFSET | ',') expr)?
  		)?
      ;
  
  detach_stmt
  