anchor.diff:  
   // https://msdn.microsoft.com/en-us/library/ms186755.aspx
   create_or_alter_function
  -    : ((CREATE (OR ALTER)?) | ALTER) FUNCTION func_proc_name_two_part
  +    : ((CREATE (OR ALTER)?) | ALTER) FUNCTION func_proc_name_schema
           (('(' procedure_param (',' procedure_param)* ')') | '(' ')') //must have (), but can be empty
           (func_body_returns_select | func_body_returns_table | func_body_returns_scalar) ';'?
       ;
  
positive.code: 
  // https://msdn.microsoft.com/en-us/library/ms187926(v=sql.120).aspx
  create_or_alter_procedure
      : ((CREATE (OR ALTER)?) | ALTER) proc=(PROC | PROCEDURE) func_proc_name_two_part (';' DECIMAL)?
        ('('? procedure_param (',' procedure_param)* ')'?)?
        (WITH procedure_option (',' procedure_option)*)?
        (FOR REPLICATION)? AS sql_clauses
  
negative.code:            (
               (
                (STATUS EQUAL (ON | OFF) COMMA? )?
                (PROCEDURE_NAME EQUAL func_proc_name_database_schema COMMA?)?
                (MAX_QUEUE_READERS EQUAL max_readers=DECIMAL COMMA?)?
                (EXECUTE AS (SELF | user_name=STRING | OWNER) COMMA?)?
               )
  