anchor.diff:  
   // TODO
   data_type
  +  : data_type_no_class
  +  | class_type
  +  ;
  +
  +data_type_no_class
     : integer_vector_type signing? packed_dimension*
     | integer_atom_type signing?
     | non_integer_type
  
positive.code:   | KW_VIRTUAL KW_INTERFACE? interface_identifier parameter_value_assignment? (DOT modport_identifier)?
    | KW_EVENT
    | type_reference
    | class_type
    ;
  
  struct_union
  
negative.code:   ;
  
  associative_dimension
    : LSQUARE MUL RSQUARE
    | LSQUARE data_type RSQUARE
    ;
  
  variable_dimension
    : LSQUARE MUL RSQUARE
    | LSQUARE data_type_no_class RSQUARE
    | LSQUARE constant_range RSQUARE
    | LSQUARE constant_expression RSQUARE
    | LSQUARE RSQUARE
    ;
  
  queue_dimension
  