anchor.diff:      ;
   
   addConstraint
  -    : ADD constraintDefinition
  +    : ADD constraintDefinition_
       ;
   
   addIndex
  
positive.code:     ;
  
  createDefinition_
      : columnDefinition | constraintDefinition | indexDefinition_ | checkConstraintDefinition_
      ;
  
  columnDefinition
      : columnName dataType (dataTypeOption_* | dataTypeGenerated_?)
      ;
  
  dataType
  
negative.code:     : COLLATE EQ_? (STRING_ | ignoredIdentifier_)
      ;
  
  inlineDataType_
      : commonDataTypeOption_
      | AUTO_INCREMENT
      | DEFAULT (literal | expr)
      | COLUMN_FORMAT (FIXED | DYNAMIC | DEFAULT)
      | STORAGE (DISK | MEMORY | DEFAULT)
      ;
  
  generatedDataType_
      : commonDataTypeOption_
      | (GENERATED ALWAYS)? AS expr
      | (VIRTUAL | STORED)
      ;
  
  commonDataTypeOption_
      : primaryKey | UNIQUE KEY? | NOT? NULL | collateClause_ | checkConstraintDefinition_ | referenceDefinition_ | COMMENT STRING_
      ;
  
  referenceDefinition_
      : REFERENCES tableName keyParts_ (MATCH FULL | MATCH PARTIAL | MATCH SIMPLE)? (ON (UPDATE | DELETE) referenceOption_)*
      ;
  
  referenceOption_
      : RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
      ;
  
  constraintDefinition_
      : (CONSTRAINT ignoredIdentifier_?)? (primaryKeyOption_ | uniqueOption_ | foreignKeyOption_)
      ;
  
  