anchor.diff:  //  Unicode is yet to be implemented - see NSF0
   fragment
   SIMPLE_LETTER
  -    :    'a'..'z'
  -    |    'A'..'Z'
  +    : 'a'..'z'
  +    | 'A'..'Z'
       ;
   //}
   
  
positive.code: // $<Common PL/SQL Named Elements
  
  xml_column_name
      :    id
      |    quoted_string
      ;
  
  cost_class_name
      :    id
      ;
  
  attribute_name
      :    id
      ;
  
  savepoint_name
      :    id
      ;
  
  rollback_segment_name
      :    id
      ;
  
  
  table_var_name
      :    id
      ;
  
  schema_name
      :    id
      ;
  
  routine_name
      :    id ('.' id_expression)* ('@' link_name)?
      ;
  
  package_name
      :    id
      ;
  
  implementation_type_name
      :    id ('.' id_expression)?
      ;
  
  parameter_name
      :    id
      ;
  
  reference_model_name
      :    id
      ;
  
  main_model_name
      :    id
      ;
  
  aggregate_function_name
      :    id ('.' id_expression)*
      ;
  
  query_name
      :    id
      ;
  
  constraint_name
      :    id ('.' id_expression)* ('@' link_name)?
      ;
  
  label_name
      :    id_expression
      ;
  
  type_name
      :    id_expression ('.' id_expression)*
      ;
  
  sequence_name
      :    id_expression ('.' id_expression)*
      ;
  
  exception_name
      :    id ('.' id_expression)* 
      ;
  
  function_name
      :    id ('.' id_expression)?
      ;
  
  procedure_name
      :    id ('.' id_expression)?
      ;
  
  trigger_name
      :    id ('.' id_expression)?
      ;
  
  variable_name
      :    (INTRODUCER char_set_name)?
              id_expression ('.' id_expression)?
      |    bind_variable
      ;
  
  index_name
      :    id
      ;
  
  cursor_name
      :    id
      |    bind_variable
      ;
  
  record_name
      :    id
      |    bind_variable
      ;
  
  collection_name
      :    id ('.' id_expression)?
      ;
  
  link_name
      :    id
      ;
  
  column_name
      :    id ('.' id_expression)*
      ;
  
  tableview_name
      :    id ('.' id_expression)? 
      (    '@' link_name
      |    /*TODO{!(input.LA(2) == SQL92_RESERVED_BY)}?*/ partition_extension_clause
      )?
      ;
  
  char_set_name
      :    id_expression ('.' id_expression)*
      ;
  
  // $>
  
negative.code: // $<Transaction Control SQL PL/SQL Statements
  
  transaction_control_statements
      : set_transaction_command
      | set_constraint_command
      | commit_statement
      | rollback_statement
      | savepoint_statement
      ;
  
  set_transaction_command
      : SET TRANSACTION 
        (READ (ONLY | WRITE) | ISOLATION LEVEL (SERIALIZABLE | READ COMMITTED) | USE ROLLBACK SEGMENT rollback_segment_name)?
        (NAME quoted_string)?
      ;
  
  set_constraint_command
      : SET (CONSTRAINT | CONSTRAINTS) (ALL | constraint_name (',' constraint_name)*) (IMMEDIATE | DEFERRED)
      ;
  
  commit_statement
      : COMMIT WORK? 
        (COMMENT expression | FORCE (CORRUPT_XID expression| CORRUPT_XID_ALL | expression (',' expression)?))?
        write_clause?
      ;
  
  write_clause
      : WRITE (WAIT|NOWAIT)? (IMMEDIATE|BATCH)?
      ;
  
  rollback_statement
      : ROLLBACK WORK? (TO SAVEPOINT? savepoint_name | FORCE quoted_string)?
      ;
  
  savepoint_statement
      : SAVEPOINT savepoint_name 
      ;
  
  // Dml
  