anchor.diff:      // emitted when indentation decreases
       // see NEWLINE for details
       DEDENT;
  +    // virtual token that serves as head node of documentation
  +    DOC;
  +    // virtual token that serves as head node of a field
  +    FIELD;
  +    FIELDARG;
  +    FIELDARGS;
       // keywords
       CLASS='class';
       ELIF='elif';
  
positive.code: 
  typedefine
      :   longdoc TYPENAME shortdoc // basic type
      |   longdoc TYPENAME '=' TYPENAME shortdoc // alias
      ;
  
  fielddefine
      :   longdoc TYPENAME VARIABLENAME fieldparameters? shortdoc
      ;
  
  class_fielddefines_ifelifelse_fragment
      :
          IF expression blockbegin class_fielddefines blockend
          (ELIF expression blockbegin class_fielddefines blockend)*
          (ELSE blockbegin class_fielddefines blockend)?
      ;
  
  class_fielddefines
  
negative.code:     ;
  
  fragment
  LCLETTER
      :   'a'..'z'
      ;
  
  fragment
  UCLETTER
      :   'A'..'Z'
      ;
  
  // format name (this identifies the file extension)
  FORMATNAME
      :   (UCLETTER | DIGITS | '_')+
      ;
  
  // lower_case_with_underscores for variable names (e.g. fields)
  