⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmllexer1.java

📁 it is a basic java browser
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
  private static int [] yy_unpack() {    int [] trans = new int[27790];    int offset = 0;    offset = yy_unpack(yy_packed0, offset, trans);    return trans;  }  /**    * Unpacks the compressed DFA transition table.   *   * @param packed   the packed transition table   * @return         the index of the last entry   */  private static int yy_unpack(String packed, int offset, int [] trans) {    int i = 0;       /* index in packed string  */    int j = offset;  /* index in unpacked array */    int l = packed.length();    while (i < l) {      int count = packed.charAt(i++);      int value = packed.charAt(i++);      value--;      do trans[j++] = value; while (--count > 0);    }    return j;  }  /**   * Refills the input buffer.   *   * @return      <code>false</code>, iff there was new input.   *    * @exception   IOException  if any I/O-Error occurs   */  private boolean yy_refill() throws java.io.IOException {    /* first: make room (if you can) */    if (yy_startRead > 0) {      System.arraycopy(yy_buffer, yy_startRead,                        yy_buffer, 0,                        yy_endRead-yy_startRead);      /* translate stored positions */      yy_endRead-= yy_startRead;      yy_currentPos-= yy_startRead;      yy_markedPos-= yy_startRead;      yy_pushbackPos-= yy_startRead;      yy_startRead = 0;    }    /* is the buffer big enough? */    if (yy_currentPos >= yy_buffer.length) {      /* if not: blow it up */      char newBuffer[] = new char[yy_currentPos*2];      System.arraycopy(yy_buffer, 0, newBuffer, 0, yy_buffer.length);      yy_buffer = newBuffer;    }    /* finally: fill the buffer with new input */    int numRead = yy_reader.read(yy_buffer, yy_endRead,                                             yy_buffer.length-yy_endRead);    if (numRead < 0) {      return true;    }    else {      yy_endRead+= numRead;        return false;    }  }  /**   * Closes the input stream.   */  final public void yyclose() throws java.io.IOException {    yy_atEOF = true;            /* indicate end of file */    yy_endRead = yy_startRead;  /* invalidate buffer    */    if (yy_reader != null)      yy_reader.close();  }  /**   * Closes the current stream, and resets the   * scanner to read from a new input stream.   *   * All internal variables are reset, the old input stream    * <b>cannot</b> be reused (internal buffer is discarded and lost).   * Lexical state is set to <tt>YY_INITIAL</tt>.   *   * @param reader   the new input stream    */  final public void yyreset(java.io.Reader reader) throws java.io.IOException {    yyclose();    yy_reader = reader;    yy_atBOL  = true;    yy_atEOF  = false;    yy_endRead = yy_startRead = 0;    yy_currentPos = yy_markedPos = yy_pushbackPos = 0;    yyline = yychar = yycolumn = 0;    yy_lexical_state = YYINITIAL;  }  /**   * Returns the current lexical state.   */  final public int yystate() {    return yy_lexical_state;  }  /**   * Enters a new lexical state   *   * @param newState the new lexical state   */  final public void yybegin(int newState) {    yy_lexical_state = newState;  }  /**   * Returns the text matched by the current regular expression.   */  final public String yytext() {    return new String( yy_buffer, yy_startRead, yy_markedPos-yy_startRead );  }  /**   * Returns the character at position <tt>pos</tt> from the    * matched text.    *    * It is equivalent to yytext().charAt(pos), but faster   *   * @param pos the position of the character to fetch.    *            A value from 0 to yylength()-1.   *   * @return the character at position pos   */  final public char yycharat(int pos) {    return yy_buffer[yy_startRead+pos];  }  /**   * Returns the length of the matched text region.   */  final public int yylength() {    return yy_markedPos-yy_startRead;  }  /**   * Reports an error that occured while scanning.   *   * In a wellformed scanner (no or only correct usage of    * yypushback(int) and a match-all fallback rule) this method    * will only be called with things that "Can't Possibly Happen".   * If this method is called, something is seriously wrong   * (e.g. a JFlex bug producing a faulty scanner etc.).   *   * Usual syntax/scanner level error handling should be done   * in error fallback rules.   *   * @param   errorCode  the code of the errormessage to display   */  private void yy_ScanError(int errorCode) {    String message;    try {      message = YY_ERROR_MSG[errorCode];    }    catch (ArrayIndexOutOfBoundsException e) {      message = YY_ERROR_MSG[YY_UNKNOWN_ERROR];    }    throw new Error(message);  }   /**   * Pushes the specified amount of characters back into the input stream.   *   * They will be read again by then next call of the scanning method   *   * @param number  the number of characters to be read again.   *                This number must not be greater than yylength()!   */  private void yypushback(int number)  {    if ( number > yylength() )      yy_ScanError(YY_PUSHBACK_2BIG);    yy_markedPos -= number;  }  /**   * Resumes scanning until the next regular expression is matched,   * the end of input is encountered or an I/O-Error occurs.   *   * @return      the next token   * @exception   IOException  if any I/O-Error occurs   */  public Token getNextToken() throws java.io.IOException {    int yy_input;    int yy_action;    // cached fields:    int yy_currentPos_l;    int yy_startRead_l;    int yy_markedPos_l;    int yy_endRead_l = yy_endRead;    char [] yy_buffer_l = yy_buffer;    char [] yycmap_l = yycmap;    int [] yytrans_l = yytrans;    int [] yy_rowMap_l = yy_rowMap;    byte [] yy_attr_l = YY_ATTRIBUTE;    while (true) {      yy_markedPos_l = yy_markedPos;      yychar+= yy_markedPos_l-yy_startRead;      boolean yy_r = false;      for (yy_currentPos_l = yy_startRead; yy_currentPos_l < yy_markedPos_l;                                                             yy_currentPos_l++) {        switch (yy_buffer_l[yy_currentPos_l]) {        case '\u000B':        case '\u000C':        case '\u0085':        case '\u2028':        case '\u2029':          yyline++;          yycolumn = 0;          yy_r = false;          break;        case '\r':          yyline++;          yycolumn = 0;          yy_r = true;          break;        case '\n':          if (yy_r)            yy_r = false;          else {            yyline++;            yycolumn = 0;          }          break;        default:          yy_r = false;          yycolumn++;        }      }      if (yy_r) {        // peek one character ahead if it is \n (if we have counted one line too much)        boolean yy_peek;        if (yy_markedPos_l < yy_endRead_l)          yy_peek = yy_buffer_l[yy_markedPos_l] == '\n';        else if (yy_atEOF)          yy_peek = false;        else {          boolean eof = yy_refill();          yy_markedPos_l = yy_markedPos;          yy_buffer_l = yy_buffer;          if (eof)             yy_peek = false;          else             yy_peek = yy_buffer_l[yy_markedPos_l] == '\n';        }        if (yy_peek) yyline--;      }      yy_action = -1;      yy_startRead_l = yy_currentPos_l = yy_currentPos =                        yy_startRead = yy_markedPos_l;      yy_state = yy_lexical_state;      yy_forAction: {        while (true) {          if (yy_currentPos_l < yy_endRead_l)            yy_input = yy_buffer_l[yy_currentPos_l++];          else if (yy_atEOF) {            yy_input = YYEOF;            break yy_forAction;          }          else {            // store back cached positions            yy_currentPos  = yy_currentPos_l;            yy_markedPos   = yy_markedPos_l;            boolean eof = yy_refill();            // get translated positions and possibly new buffer            yy_currentPos_l  = yy_currentPos;            yy_markedPos_l   = yy_markedPos;            yy_buffer_l      = yy_buffer;            yy_endRead_l     = yy_endRead;            if (eof) {              yy_input = YYEOF;              break yy_forAction;            }            else {              yy_input = yy_buffer_l[yy_currentPos_l++];            }          }          int yy_next = yytrans_l[ yy_rowMap_l[yy_state] + yycmap_l[yy_input] ];          if (yy_next == -1) break yy_forAction;          yy_state = yy_next;          int yy_attributes = yy_attr_l[yy_state];          if ( (yy_attributes & 1) == 1 ) {            yy_action = yy_state;             yy_markedPos_l = yy_currentPos_l;             if ( (yy_attributes & 8) == 8 ) break yy_forAction;          }        }      }      // store back cached position      yy_markedPos = yy_markedPos_l;      switch (yy_action) {        case 74:         case 156:         case 272:         case 357:         case 392:         case 407:         case 416:         case 422:         case 426:         case 429:           { 	lastToken = HTMLToken1.WORD;	String text = yytext();	HTMLToken1 t = (new HTMLToken1(lastToken,text,yyline,yychar,yychar+text.length(),nextState));	return(t); }        case 439: break;        case 28:         case 29:         case 30:         case 31:         case 128:         case 129:         case 130:         case 260:         case 262:         case 346:         case 347:         case 381:         case 382:         case 398:         case 409:           {     nextState = TAG;	lastToken = HTMLToken1.TAG_NAME;    String text = yytext();	HTMLToken1 t = (new HTMLToken1(lastToken,text,yyline,yychar,yychar+text.length(),nextState));	yybegin(nextState);	return(t); }        case 440: break;        case 14:         case 63:           { 	lastToken = HTMLToken1.WORD;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -