anchor.diff:  
   NAME
       :   { tagMode && !attrMode }?=> (UCLETTER | LCLETTER) (UCLETTER | LCLETTER | DIGIT)*
  -    |   { tagMode && attrMode }?=> (UCLETTER | LCLETTER) (UCLETTER | LCLETTER | DIGIT | '_' | ' ')*
  +    |   { tagMode && attrMode }?=> (UCLETTER | LCLETTER) (UCLETTER | LCLETTER | DIGIT | '_' | ' ' | '?')*
       ;
   
   OP_EQ
  
positive.code:     :   { tagMode && attrMode }?=> '!=';
  
  OP_RIGHTSHIFT
      :   { tagMode && attrMode }?=> '>>';
  
  OP_LEFTSHIFT
      :   { tagMode && attrMode }?=> '<<';
  
  OP_GTEQ
      :   { tagMode && attrMode }?=> '>=';
  
  OP_LTEQ
      :   { tagMode && attrMode }?=> '<=';
  
  OP_GT
      :   { tagMode && attrMode }?=> '>';
  
  OP_LT
      :   { tagMode && attrMode }?=> '<';
  
  OP_LOGICAL_NOT
      :   { tagMode && attrMode }?=> '!';
  
negative.code:         doc=SHORTDOC?
          enum_option+
          TAG_END_ENUM SHORTDOC*
          -> ^(ENUMDEF ^(DOC $doc) $name $type enum_option+)
      ;
  
  enum_option
      :   TAG_START_OPTION attr_int_value attr_constant_name TAG_CLOSE
          doc=SHORTDOC?
          TAG_END_OPTION SHORTDOC*
          -> ^(ENUMCONSTDEF ^(DOC $doc) attr_constant_name attr_int_value)
      |   TAG_START_OPTION attr_int_value attr_constant_name
          TAG_END SHORTDOC*
          -> ^(ENUMCONSTDEF ^(DOC) attr_constant_name attr_int_value)
      ;
  
  structdefine
      :   TAG_START_STRUCT
  