docs: public int yylex() throws java.io.IOException {
      int zzInput;
      int zzAction;
  
      // cached fields:
      int zzCurrentPosL;
      int zzMarkedPosL;
      int zzEndReadL = zzEndRead;
      char [] zzBufferL = zzBuffer;
      char [] zzCMapL = ZZ_CMAP;
  
      int [] zzTransL = ZZ_TRANS;
      int [] zzRowMapL = ZZ_ROWMAP;
      int [] zzAttrL = ZZ_ATTRIBUTE;
  
      while (true) {
        zzMarkedPosL = zzMarkedPos;
  
        zzAction = -1;
  
        zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
    
        zzState = ZZ_LEXSTATE[zzLexicalState];
  
  
        zzForAction: {
          while (true) {
      
            if (zzCurrentPosL < zzEndReadL)
              zzInput = zzBufferL[zzCurrentPosL++];
            else if (zzAtEOF) {
              zzInput = YYEOF;
              break zzForAction;
            }
            else {
              // store back cached positions
              zzCurrentPos  = zzCurrentPosL;
              zzMarkedPos   = zzMarkedPosL;
              boolean eof = zzRefill();
              // get translated positions and possibly new buffer
              zzCurrentPosL  = zzCurrentPos;
              zzMarkedPosL   = zzMarkedPos;
              zzBufferL      = zzBuffer;
              zzEndReadL     = zzEndRead;
              if (eof) {
                zzInput = YYEOF;
                break zzForAction;
              }
              else {
                zzInput = zzBufferL[zzCurrentPosL++];
              }
            }
            int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
            if (zzNext == -1) break zzForAction;
            zzState = zzNext;
  
            int zzAttributes = zzAttrL[zzState];
            if ( (zzAttributes & 1) == 1 ) {
              zzAction = zzState;
              zzMarkedPosL = zzCurrentPosL;
              if ( (zzAttributes & 8) == 8 ) break zzForAction;
            }
  
          }
        }
  
        // store back cached position
        zzMarkedPos = zzMarkedPosL;
  
        switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
          case 4: 
            { System.out.print(yytext());
            }
          case 19: break;
          case 8: 
            { //System.err.println("Transitioning to SRCID");
                            yybegin(SRCID); return IGNORE;
            }
          case 20: break;
          case 10: 
            { yybegin(HEADER); return IGNORE;
            }
          case 21: break;
          case 14: 
            { //System.err.println("Transitioning to DOCTYPE");
                            yybegin(DOCTYPE); return IGNORE;
            }
          case 22: break;
          case 9: 
            { //System.err.println("Transitioning to YYINITIAL");
                     yybegin(YYINITIAL); return IGNORE;
            }
          case 23: break;
          case 17: 
            { //System.err.println("Transitioning to YYINITIAL");
                    yybegin(YYINITIAL); return IGNORE;
            }
          case 24: break;
          case 5: 
            { //System.err.println("Transitioning to DATETIME");
                            yybegin(DATETIME); return IGNORE;
            }
          case 25: break;
          case 6: 
            { yybegin(DATEINHEADER); return IGNORE;
            }
          case 26: break;
          case 12: 
            { // System.err.println("Transitioning to YYINITIAL");
                  yybegin(YYINITIAL); return IGNORE;
            }
          case 27: break;
          case 18: 
            { yybegin(YYINITIAL); return IGNORE;
            }
          case 28: break;
          case 7: 
            { // System.err.println("Transitioning to DOCNO");
                            yybegin(DOCNO); return IGNORE;
            }
          case 29: break;
          case 2: 
            { return IGNORE;
            }
          case 30: break;
          case 13: 
            { //System.err.println("In SRCID; Transitioning to YYINITIAL");
                  yybegin(YYINITIAL); return IGNORE;
            }
          case 31: break;
          case 15: 
            { //System.err.println("Transitioning to YYINITIAL");
                  yybegin(YYINITIAL); return IGNORE;
            }
          case 32: break;
          case 16: 
            { yybegin(PREAMBLE); return IGNORE;
            }
          case 33: break;
          case 1: 
            { return ACCEPT;
            }
          case 34: break;
          case 3: 
            { reportError(yytext());
            }
          case 35: break;
          case 11: 
            { //System.err.println("Transitioning to HEADER");
                            yybegin(HEADER); return IGNORE;
            }
          case 36: break;
          default: 
            if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
              zzAtEOF = true;
              return YYEOF;
            } 
            else {
              zzScanError(ZZ_NO_MATCH);
            }
        }
      }
    }