anchor.diff:      PARAMETERDEF;
       TYPE='type';
       TYPEDEF;
  +    ENUM='enum';
  +    ENUMDEF;
  +    ENUMCONSTDEF;
   }
   
   // target specific code
  
positive.code:     ;
  
  declarations
      :   (typeblock | parameterblock | classdefine)*
      ;
  
  // Documentation preceeding a definition, with single newline
  
negative.code: parameterblock
      :   PARAMETER! blockbegin! parameterdefine+ blockend!
      ;
  
  enumdefine
      :   longdoc? ENUM alias=TYPENAME '(' orig=TYPENAME ')' blockbegin enumconstant+ blockend
          -> ^(ENUMDEF ^(DOC longdoc?) $alias $orig enumconstant+);
  
  enumconstant
      :   longdoc? CONSTANTNAME '=' INT SHORTDOC? NEWLINE+
          -> ^(ENUMCONSTDEF ^(DOC longdoc? SHORTDOC?) CONSTANTNAME INT);
  
  classdefine
      :   longdoc? CLASS TYPENAME blockbegin declarations class_fielddefines blockend
  