| /******************************************************************************* |
| * Copyright (c) 2004, 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| /* The following code was generated by JFlex 1.2.2 on 1/27/04 6:41 PM */ |
| |
| /*nlsXXX*/ |
| package org.eclipse.wst.html.core.internal.contenttype; |
| |
| import java.io.IOException; |
| import java.io.Reader; |
| |
| import org.eclipse.wst.xml.core.internal.contenttype.EncodingParserConstants; |
| import org.eclipse.wst.xml.core.internal.contenttype.XMLHeadTokenizerConstants; |
| |
| |
| |
| /** |
| * This class is a scanner generated by |
| * <a href="http://www.informatik.tu-muenchen.de/~kleing/jflex/">JFlex</a> 1.2.2 |
| * on 1/27/04 6:41 PM from the specification file |
| * <tt>file:/D:/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/HTMLHeadTokenizer.jflex</tt> |
| */ |
| public class HTMLHeadTokenizer { |
| |
| /** this character denotes the end of file */ |
| final public static int YYEOF = -1; |
| |
| /** lexical states */ |
| final public static int ST_META_TAG = 4; |
| final public static int YYINITIAL = 0; |
| final public static int UnDelimitedString = 12; |
| final public static int DQ_STRING = 8; |
| final public static int SQ_STRING = 10; |
| final public static int ST_XMLDecl = 2; |
| final public static int QuotedAttributeValue = 6; |
| |
| /** |
| * YY_LEXSTATE[l] is the state in the DFA for the lexical state l |
| * YY_LEXSTATE[l+1] is the state in the DFA for the lexical state l |
| * at the beginning of a line |
| * l is of the form l = 2*k, k a non negative integer |
| */ |
| private final static int YY_LEXSTATE[] = {0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7}; |
| |
| /** |
| * Translates characters to character classes |
| */ |
| final private static String yycmap_packed = "\11\0\1\6\1\7\2\0\1\11\22\0\1\22\1\0\1\40\2\0" + "\1\44\1\0\1\43\5\0\1\34\1\0\1\42\13\0\1\45\1\12" + "\1\10\1\31\1\13\1\0\1\21\1\0\1\24\1\26\1\17\1\0" + "\1\30\1\32\1\27\2\0\1\16\1\15\1\23\1\25\1\33\1\35" + "\2\0\1\20\1\36\1\37\1\0\1\14\1\41\7\0\1\21\1\0" + "\1\24\1\26\1\17\1\0\1\30\1\32\1\27\2\0\1\16\1\15" + "\1\23\1\25\1\33\1\35\2\0\1\20\1\36\1\37\1\0\1\14" + "\1\41\101\0\1\4\3\0\1\5\17\0\1\3\16\0\1\1\20\0" + "\1\3\16\0\1\1\1\2\170\0\1\2\ufe87\0"; |
| |
| /** |
| * Translates characters to character classes |
| */ |
| final private static char[] yycmap = yy_unpack_cmap(yycmap_packed); |
| |
| |
| /* error codes */ |
| final private static int YY_UNKNOWN_ERROR = 0; |
| final private static int YY_ILLEGAL_STATE = 1; |
| final private static int YY_NO_MATCH = 2; |
| final private static int YY_PUSHBACK_2BIG = 3; |
| |
| /* error messages for the codes above */ |
| final private static String YY_ERROR_MSG[] = {"Unkown internal scanner error", "Internal error: unknown state", "Error: could not match input", "Error: pushback value was too large"}; |
| |
| /** the input device */ |
| private java.io.Reader yy_reader; |
| |
| /** the current state of the DFA */ |
| private int yy_state; |
| |
| /** the current lexical state */ |
| private int yy_lexical_state = YYINITIAL; |
| |
| /** this buffer contains the current text to be matched and is |
| the source of the yytext() string */ |
| private char yy_buffer[] = new char[16384]; |
| |
| /** the textposition at the last accepting state */ |
| private int yy_markedPos; |
| |
| /** the textposition at the last state to be included in yytext */ |
| private int yy_pushbackPos; |
| |
| /** the current text position in the buffer */ |
| private int yy_currentPos; |
| |
| /** startRead marks the beginning of the yytext() string in the buffer */ |
| private int yy_startRead; |
| |
| /** endRead marks the last character in the buffer, that has been read |
| from input */ |
| private int yy_endRead; |
| |
| |
| /** the number of characters up to the start of the matched text */ |
| private int yychar; |
| |
| |
| /** |
| * yy_atBOL == true <=> the scanner is currently at the beginning of a line |
| */ |
| private boolean yy_atBOL; |
| |
| /** yy_atEOF == true <=> the scanner has returned a value for EOF */ |
| private boolean yy_atEOF; |
| |
| /** denotes if the user-EOF-code has already been executed */ |
| private boolean yy_eof_done; |
| |
| /* user code: */ |
| |
| |
| private boolean hasMore = true; |
| private final static int MAX_TO_SCAN = 8000; |
| StringBuffer string = new StringBuffer(); |
| // state stack for easier state handling |
| private IntStack fStateStack = new IntStack(); |
| private String valueText = null; |
| boolean foundContentTypeValue = false; |
| |
| |
| |
| public HTMLHeadTokenizer() { |
| super(); |
| } |
| |
| public void reset(Reader in) { |
| /* the input device */ |
| yy_reader = in; |
| |
| /* the current state of the DFA */ |
| yy_state = 0; |
| |
| /* the current lexical state */ |
| yy_lexical_state = YYINITIAL; |
| |
| /* this buffer contains the current text to be matched and is |
| the source of the yytext() string */ |
| java.util.Arrays.fill(yy_buffer, (char) 0); |
| |
| /* the textposition at the last accepting state */ |
| yy_markedPos = 0; |
| |
| /* the textposition at the last state to be included in yytext */ |
| yy_pushbackPos = 0; |
| |
| /* the current text position in the buffer */ |
| yy_currentPos = 0; |
| |
| /* startRead marks the beginning of the yytext() string in the buffer */ |
| yy_startRead = 0; |
| |
| /** |
| * endRead marks the last character in the buffer, that has been read |
| * from input |
| */ |
| yy_endRead = 0; |
| |
| |
| /* the number of characters up to the start of the matched text */ |
| yychar = 0; |
| |
| |
| /** |
| * yy_atBOL == true <=> the scanner is currently at the beginning |
| * of a line |
| */ |
| yy_atBOL = false; |
| |
| /* yy_atEOF == true <=> the scanner has returned a value for EOF */ |
| yy_atEOF = false; |
| |
| /* denotes if the user-EOF-code has already been executed */ |
| yy_eof_done = false; |
| |
| |
| fStateStack.clear(); |
| |
| hasMore = true; |
| |
| // its a little wasteful to "throw away" first char array generated |
| // by class init (via auto generated code), but we really do want |
| // a small buffer for our head parsers. |
| if (yy_buffer.length != MAX_TO_SCAN) { |
| yy_buffer = new char[MAX_TO_SCAN]; |
| } |
| |
| |
| } |
| |
| |
| public final HeadParserToken getNextToken() throws IOException { |
| String context = null; |
| context = primGetNextToken(); |
| HeadParserToken result = null; |
| if (valueText != null) { |
| result = createToken(context, yychar, valueText); |
| valueText = null; |
| } |
| else { |
| result = createToken(context, yychar, yytext()); |
| } |
| return result; |
| } |
| |
| public final boolean hasMoreTokens() { |
| return hasMore && yychar < MAX_TO_SCAN; |
| } |
| |
| private void pushCurrentState() { |
| fStateStack.push(yystate()); |
| |
| } |
| |
| private void popState() { |
| yybegin(fStateStack.pop()); |
| } |
| |
| private HeadParserToken createToken(String context, int start, String text) { |
| return new HeadParserToken(context, start, text); |
| } |
| |
| |
| |
| /** |
| * Creates a new scanner |
| * There is also a java.io.InputStream version of this constructor. |
| * |
| * @param in the java.io.Reader to read input from. |
| */ |
| public HTMLHeadTokenizer(java.io.Reader in) { |
| this.yy_reader = in; |
| } |
| |
| /** |
| * Creates a new scanner. |
| * There is also java.io.Reader version of this constructor. |
| * |
| * @param in the java.io.Inputstream to read input from. |
| */ |
| public HTMLHeadTokenizer(java.io.InputStream in) { |
| this(new java.io.InputStreamReader(in)); |
| } |
| |
| /** |
| * Unpacks the compressed character translation table. |
| * |
| * @param packed the packed character translation table |
| * @return the unpacked character translation table |
| */ |
| private static char[] yy_unpack_cmap(String packed) { |
| char[] map = new char[0x10000]; |
| int i = 0; /* index in packed string */ |
| int j = 0; /* index in unpacked array */ |
| while (i < 174) { |
| int count = packed.charAt(i++); |
| char value = packed.charAt(i++); |
| do |
| map[j++] = value; |
| while (--count > 0); |
| } |
| return map; |
| } |
| |
| |
| /** |
| * Gets the next input character. |
| * |
| * @return the next character of the input stream, EOF if the |
| * end of the stream is reached. |
| * @exception IOException if any I/O-Error occurs |
| */ |
| private int yy_advance() throws java.io.IOException { |
| |
| /* standard case */ |
| if (yy_currentPos < yy_endRead) |
| return yy_buffer[yy_currentPos++]; |
| |
| /* if the eof is reached, we don't need to work hard */ |
| if (yy_atEOF) |
| return YYEOF; |
| |
| /* otherwise: need to refill the buffer */ |
| |
| /* 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 == -1) |
| return YYEOF; |
| |
| yy_endRead += numRead; |
| |
| return yy_buffer[yy_currentPos++]; |
| } |
| |
| |
| /** |
| * 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 */ |
| yy_reader.close(); |
| } |
| |
| |
| /** |
| * 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 length of the matched text region. |
| */ |
| final public int yylength() { |
| return yy_markedPos - yy_startRead; |
| } |
| |
| |
| /** |
| * Reports an error that occured while scanning. |
| * |
| * @param errorCode the code of the errormessage to display |
| */ |
| private void yy_ScanError(int errorCode) { |
| try { |
| System.out.println(YY_ERROR_MSG[errorCode]); |
| } |
| catch (ArrayIndexOutOfBoundsException e) { |
| System.out.println(YY_ERROR_MSG[YY_UNKNOWN_ERROR]); |
| } |
| |
| System.exit(1); |
| } |
| |
| |
| /** |
| * 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; |
| } |
| |
| |
| /** |
| * Contains user EOF-code, which will be executed exactly once, |
| * when the end of file is reached |
| */ |
| private void yy_do_eof() { |
| if (!yy_eof_done) { |
| yy_eof_done = true; |
| hasMore = false; |
| |
| } |
| } |
| |
| |
| /** |
| * 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 String primGetNextToken() throws java.io.IOException { |
| int yy_input; |
| int yy_action; |
| |
| |
| while (true) { |
| |
| yychar += yylength(); |
| |
| yy_atBOL = yy_markedPos <= 0 || yy_buffer[yy_markedPos - 1] == '\n'; |
| if (!yy_atBOL && yy_buffer[yy_markedPos - 1] == '\r') { |
| yy_atBOL = yy_advance() != '\n'; |
| if (!yy_atEOF) |
| yy_currentPos--; |
| } |
| |
| yy_action = -1; |
| |
| yy_currentPos = yy_startRead = yy_markedPos; |
| |
| if (yy_atBOL) |
| yy_state = YY_LEXSTATE[yy_lexical_state + 1]; |
| else |
| yy_state = YY_LEXSTATE[yy_lexical_state]; |
| |
| |
| yy_forAction : { |
| while (true) { |
| |
| yy_input = yy_advance(); |
| |
| if (yy_input == YYEOF) |
| break yy_forAction; |
| |
| yy_input = yycmap[yy_input]; |
| |
| boolean yy_isFinal = false; |
| boolean yy_noLookAhead = false; |
| |
| yy_forNext : { |
| switch (yy_state) { |
| case 0 : |
| switch (yy_input) { |
| case 1 : |
| yy_isFinal = true; |
| yy_state = 9; |
| break yy_forNext; |
| case 2 : |
| yy_isFinal = true; |
| yy_state = 10; |
| break yy_forNext; |
| case 3 : |
| yy_isFinal = true; |
| yy_state = 11; |
| break yy_forNext; |
| case 10 : |
| yy_isFinal = true; |
| yy_state = 12; |
| break yy_forNext; |
| default : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 8; |
| break yy_forNext; |
| } |
| |
| case 1 : |
| switch (yy_input) { |
| case 1 : |
| yy_isFinal = true; |
| yy_state = 9; |
| break yy_forNext; |
| case 2 : |
| yy_isFinal = true; |
| yy_state = 10; |
| break yy_forNext; |
| case 3 : |
| yy_isFinal = true; |
| yy_state = 11; |
| break yy_forNext; |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_isFinal = true; |
| yy_state = 13; |
| break yy_forNext; |
| case 10 : |
| yy_isFinal = true; |
| yy_state = 14; |
| break yy_forNext; |
| default : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 8; |
| break yy_forNext; |
| } |
| |
| case 2 : |
| switch (yy_input) { |
| case 11 : |
| yy_isFinal = true; |
| yy_state = 15; |
| break yy_forNext; |
| case 15 : |
| yy_isFinal = true; |
| yy_state = 16; |
| break yy_forNext; |
| default : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 8; |
| break yy_forNext; |
| } |
| |
| case 3 : |
| switch (yy_input) { |
| case 25 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 17; |
| break yy_forNext; |
| case 26 : |
| yy_isFinal = true; |
| yy_state = 18; |
| break yy_forNext; |
| case 34 : |
| yy_isFinal = true; |
| yy_state = 19; |
| break yy_forNext; |
| default : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 8; |
| break yy_forNext; |
| } |
| |
| case 4 : |
| switch (yy_input) { |
| case 6 : |
| case 9 : |
| case 18 : |
| yy_isFinal = true; |
| yy_state = 21; |
| break yy_forNext; |
| case 7 : |
| yy_isFinal = true; |
| yy_state = 22; |
| break yy_forNext; |
| case 32 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 23; |
| break yy_forNext; |
| case 35 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 24; |
| break yy_forNext; |
| default : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 20; |
| break yy_forNext; |
| } |
| |
| case 5 : |
| switch (yy_input) { |
| case 7 : |
| case 9 : |
| case 10 : |
| case 25 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 26; |
| break yy_forNext; |
| case 11 : |
| case 34 : |
| yy_isFinal = true; |
| yy_state = 27; |
| break yy_forNext; |
| case 32 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 28; |
| break yy_forNext; |
| default : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 25; |
| break yy_forNext; |
| } |
| |
| case 6 : |
| switch (yy_input) { |
| case 7 : |
| case 9 : |
| case 10 : |
| case 25 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 26; |
| break yy_forNext; |
| case 34 : |
| yy_isFinal = true; |
| yy_state = 27; |
| break yy_forNext; |
| case 35 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 28; |
| break yy_forNext; |
| case 36 : |
| yy_isFinal = true; |
| yy_state = 29; |
| break yy_forNext; |
| default : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 25; |
| break yy_forNext; |
| } |
| |
| case 7 : |
| switch (yy_input) { |
| case 10 : |
| case 25 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 26; |
| break yy_forNext; |
| case 34 : |
| yy_isFinal = true; |
| yy_state = 27; |
| break yy_forNext; |
| case 11 : |
| yy_isFinal = true; |
| yy_state = 29; |
| break yy_forNext; |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 30; |
| break yy_forNext; |
| case 32 : |
| case 35 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 31; |
| break yy_forNext; |
| case 37 : |
| yy_isFinal = true; |
| yy_state = 32; |
| break yy_forNext; |
| default : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 25; |
| break yy_forNext; |
| } |
| |
| case 9 : |
| switch (yy_input) { |
| case 2 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 33; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 10 : |
| switch (yy_input) { |
| case 1 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 34; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 11 : |
| switch (yy_input) { |
| case 4 : |
| yy_state = 35; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 12 : |
| switch (yy_input) { |
| case 13 : |
| yy_state = 36; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 13 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_state = 37; |
| break yy_forNext; |
| case 10 : |
| yy_state = 38; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 14 : |
| switch (yy_input) { |
| case 13 : |
| yy_state = 36; |
| break yy_forNext; |
| case 11 : |
| yy_state = 39; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 15 : |
| switch (yy_input) { |
| case 25 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 40; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 16 : |
| switch (yy_input) { |
| case 19 : |
| yy_state = 41; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 18 : |
| switch (yy_input) { |
| case 16 : |
| yy_state = 42; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 19 : |
| switch (yy_input) { |
| case 25 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 43; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 21 : |
| switch (yy_input) { |
| case 6 : |
| case 9 : |
| case 18 : |
| yy_isFinal = true; |
| yy_state = 21; |
| break yy_forNext; |
| case 7 : |
| yy_state = 44; |
| break yy_forNext; |
| default : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 20; |
| break yy_forNext; |
| } |
| |
| case 22 : |
| switch (yy_input) { |
| case 6 : |
| case 9 : |
| case 18 : |
| yy_isFinal = true; |
| yy_state = 21; |
| break yy_forNext; |
| case 7 : |
| yy_state = 44; |
| break yy_forNext; |
| default : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 20; |
| break yy_forNext; |
| } |
| |
| case 27 : |
| switch (yy_input) { |
| case 25 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 45; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 29 : |
| switch (yy_input) { |
| case 25 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 46; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 32 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_isFinal = true; |
| yy_state = 32; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 35 : |
| switch (yy_input) { |
| case 5 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 47; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 36 : |
| switch (yy_input) { |
| case 15 : |
| yy_state = 48; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 37 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_state = 37; |
| break yy_forNext; |
| case 10 : |
| yy_state = 38; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 38 : |
| switch (yy_input) { |
| case 11 : |
| yy_state = 39; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 39 : |
| switch (yy_input) { |
| case 12 : |
| yy_state = 49; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 41 : |
| switch (yy_input) { |
| case 20 : |
| yy_state = 50; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 42 : |
| switch (yy_input) { |
| case 16 : |
| yy_state = 51; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 44 : |
| switch (yy_input) { |
| case 6 : |
| case 9 : |
| case 18 : |
| yy_isFinal = true; |
| yy_state = 21; |
| break yy_forNext; |
| case 7 : |
| yy_state = 44; |
| break yy_forNext; |
| default : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 20; |
| break yy_forNext; |
| } |
| |
| case 48 : |
| switch (yy_input) { |
| case 16 : |
| yy_state = 52; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 49 : |
| switch (yy_input) { |
| case 13 : |
| yy_state = 53; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 50 : |
| switch (yy_input) { |
| case 21 : |
| yy_state = 54; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 51 : |
| switch (yy_input) { |
| case 27 : |
| yy_state = 55; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 52 : |
| switch (yy_input) { |
| case 17 : |
| yy_state = 56; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 53 : |
| switch (yy_input) { |
| case 14 : |
| yy_state = 57; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 54 : |
| switch (yy_input) { |
| case 22 : |
| yy_state = 58; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 55 : |
| switch (yy_input) { |
| case 28 : |
| yy_state = 59; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 56 : |
| switch (yy_input) { |
| case 18 : |
| yy_isFinal = true; |
| yy_noLookAhead = true; |
| yy_state = 60; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 57 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_isFinal = true; |
| yy_state = 61; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 58 : |
| switch (yy_input) { |
| case 23 : |
| yy_state = 62; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 59 : |
| switch (yy_input) { |
| case 15 : |
| yy_state = 63; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 61 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_isFinal = true; |
| yy_state = 61; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 62 : |
| switch (yy_input) { |
| case 19 : |
| yy_state = 64; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 63 : |
| switch (yy_input) { |
| case 29 : |
| yy_state = 65; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 64 : |
| switch (yy_input) { |
| case 24 : |
| yy_state = 66; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 65 : |
| switch (yy_input) { |
| case 30 : |
| yy_state = 67; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 66 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_state = 66; |
| break yy_forNext; |
| case 8 : |
| yy_isFinal = true; |
| yy_state = 68; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 67 : |
| switch (yy_input) { |
| case 23 : |
| yy_state = 69; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 68 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_isFinal = true; |
| yy_state = 68; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 69 : |
| switch (yy_input) { |
| case 31 : |
| yy_state = 70; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 70 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_state = 70; |
| break yy_forNext; |
| case 8 : |
| yy_state = 71; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 71 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_state = 71; |
| break yy_forNext; |
| case 20 : |
| yy_state = 72; |
| break yy_forNext; |
| case 32 : |
| yy_state = 73; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 72 : |
| switch (yy_input) { |
| case 21 : |
| yy_state = 74; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 73 : |
| switch (yy_input) { |
| case 20 : |
| yy_state = 72; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 74 : |
| switch (yy_input) { |
| case 19 : |
| yy_state = 75; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 75 : |
| switch (yy_input) { |
| case 16 : |
| yy_state = 76; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 76 : |
| switch (yy_input) { |
| case 15 : |
| yy_state = 77; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 77 : |
| switch (yy_input) { |
| case 19 : |
| yy_state = 78; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 78 : |
| switch (yy_input) { |
| case 16 : |
| yy_state = 79; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 79 : |
| switch (yy_input) { |
| case 28 : |
| yy_state = 80; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 80 : |
| switch (yy_input) { |
| case 16 : |
| yy_state = 81; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 81 : |
| switch (yy_input) { |
| case 33 : |
| yy_state = 82; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 82 : |
| switch (yy_input) { |
| case 27 : |
| yy_state = 83; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 83 : |
| switch (yy_input) { |
| case 15 : |
| yy_state = 84; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 84 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_state = 85; |
| break yy_forNext; |
| case 32 : |
| yy_state = 86; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 85 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_state = 85; |
| break yy_forNext; |
| case 20 : |
| yy_state = 87; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 86 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_state = 85; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 87 : |
| switch (yy_input) { |
| case 21 : |
| yy_state = 88; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 88 : |
| switch (yy_input) { |
| case 19 : |
| yy_state = 89; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 89 : |
| switch (yy_input) { |
| case 16 : |
| yy_state = 90; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 90 : |
| switch (yy_input) { |
| case 15 : |
| yy_state = 91; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 91 : |
| switch (yy_input) { |
| case 19 : |
| yy_state = 92; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 92 : |
| switch (yy_input) { |
| case 16 : |
| yy_state = 93; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 93 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_state = 93; |
| break yy_forNext; |
| case 8 : |
| yy_isFinal = true; |
| yy_state = 94; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| case 94 : |
| switch (yy_input) { |
| case 6 : |
| case 7 : |
| case 9 : |
| case 18 : |
| yy_isFinal = true; |
| yy_state = 94; |
| break yy_forNext; |
| default : |
| break yy_forAction; |
| } |
| |
| default : |
| yy_ScanError(YY_ILLEGAL_STATE); |
| break; |
| } |
| } |
| |
| if (yy_isFinal) { |
| yy_action = yy_state; |
| yy_markedPos = yy_currentPos; |
| if (yy_noLookAhead) |
| break yy_forAction; |
| } |
| |
| } |
| } |
| |
| |
| switch (yy_action) { |
| |
| case 26 : |
| { |
| yypushback(1); |
| popState(); |
| valueText = string.toString(); |
| return EncodingParserConstants.InvalidTerminatedStringValue; |
| } |
| case 96 : |
| break; |
| case 20 : |
| case 21 : |
| { |
| yypushback(1); |
| yybegin(UnDelimitedString); |
| string.setLength(0); |
| } |
| case 97 : |
| break; |
| case 17 : |
| { |
| yybegin(YYINITIAL); |
| if (foundContentTypeValue) |
| hasMore = false; |
| return HTMLHeadTokenizerConstants.MetaTagEnd; |
| } |
| case 98 : |
| break; |
| case 31 : |
| { |
| yypushback(1); |
| popState(); |
| valueText = string.toString(); |
| return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue; |
| } |
| case 99 : |
| break; |
| case 43 : |
| { |
| yybegin(YYINITIAL); |
| if (foundContentTypeValue) |
| hasMore = false; |
| return HTMLHeadTokenizerConstants.MetaTagEnd; |
| } |
| case 100 : |
| break; |
| case 45 : |
| { |
| yypushback(2); |
| popState(); |
| valueText = string.toString(); |
| return EncodingParserConstants.InvalidTerminatedStringValue; |
| } |
| case 101 : |
| break; |
| case 46 : |
| { |
| yypushback(2); |
| popState(); |
| valueText = string.toString(); |
| return EncodingParserConstants.InvalidTerminatedStringValue; |
| } |
| case 102 : |
| break; |
| case 61 : |
| { |
| if (yychar == 0) { |
| yybegin(ST_XMLDecl); |
| return XMLHeadTokenizerConstants.XMLDeclStart; |
| } |
| } |
| case 103 : |
| break; |
| case 8 : |
| case 9 : |
| case 10 : |
| case 11 : |
| case 12 : |
| case 13 : |
| case 14 : |
| case 15 : |
| case 16 : |
| case 18 : |
| case 19 : |
| case 22 : |
| { |
| if (yychar > MAX_TO_SCAN) { |
| hasMore = false; |
| return EncodingParserConstants.MAX_CHARS_REACHED; |
| } |
| } |
| case 104 : |
| break; |
| case 60 : |
| { |
| yybegin(ST_META_TAG); |
| return HTMLHeadTokenizerConstants.MetaTagStart; |
| } |
| case 105 : |
| break; |
| case 40 : |
| { |
| yybegin(YYINITIAL); |
| return XMLHeadTokenizerConstants.XMLDeclEnd; |
| } |
| case 106 : |
| break; |
| case 94 : |
| { |
| pushCurrentState(); |
| yybegin(QuotedAttributeValue); |
| foundContentTypeValue = true; |
| return HTMLHeadTokenizerConstants.MetaTagContentType; |
| } |
| case 107 : |
| break; |
| case 68 : |
| { |
| pushCurrentState(); |
| yybegin(QuotedAttributeValue); |
| return XMLHeadTokenizerConstants.XMLDelEncoding; |
| } |
| case 108 : |
| break; |
| case 33 : |
| { |
| hasMore = false; |
| return EncodingParserConstants.UTF16BE; |
| } |
| case 109 : |
| break; |
| case 34 : |
| { |
| hasMore = false; |
| return EncodingParserConstants.UTF16LE; |
| } |
| case 110 : |
| break; |
| case 47 : |
| { |
| hasMore = false; |
| return EncodingParserConstants.UTF83ByteBOM; |
| } |
| case 111 : |
| break; |
| case 28 : |
| { |
| popState(); |
| valueText = string.toString(); |
| return EncodingParserConstants.StringValue; |
| } |
| case 112 : |
| break; |
| case 25 : |
| case 27 : |
| case 29 : |
| case 32 : |
| { |
| string.append(yytext()); |
| } |
| case 113 : |
| break; |
| case 24 : |
| { |
| yybegin(SQ_STRING); |
| string.setLength(0); |
| } |
| case 114 : |
| break; |
| case 23 : |
| { |
| yybegin(DQ_STRING); |
| string.setLength(0); |
| } |
| case 115 : |
| break; |
| case 30 : |
| { |
| yypushback(1); |
| popState(); |
| valueText = string.toString(); |
| return EncodingParserConstants.UnDelimitedStringValue; |
| } |
| case 116 : |
| break; |
| default : |
| if (yy_input == YYEOF && yy_startRead == yy_currentPos) { |
| yy_atEOF = true; |
| yy_do_eof(); |
| { |
| hasMore = false; |
| return EncodingParserConstants.EOF; |
| } |
| } |
| else { |
| yy_ScanError(YY_NO_MATCH); |
| } |
| } |
| } |
| } |
| |
| /** |
| * Runs the scanner on input files. |
| * |
| * This main method is the debugging routine for the scanner. |
| * It prints each returned token to System.out until the end of |
| * file is reached, or an error occured. |
| * |
| * @param argv the command line, contains the filenames to run |
| * the scanner on. |
| */ |
| public static void main(String argv[]) { |
| for (int i = 0; i < argv.length; i++) { |
| HTMLHeadTokenizer scanner = null; |
| try { |
| scanner = new HTMLHeadTokenizer(new java.io.FileReader(argv[i])); |
| } |
| catch (java.io.FileNotFoundException e) { |
| System.out.println("File not found : \"" + argv[i] + "\""); |
| System.exit(1); |
| } |
| catch (ArrayIndexOutOfBoundsException e) { |
| System.out.println("Usage : java HTMLHeadTokenizer <inputfile>"); |
| System.exit(1); |
| } |
| |
| try { |
| do { |
| System.out.println(scanner.primGetNextToken()); |
| } |
| while (!scanner.yy_atEOF); |
| |
| } |
| catch (java.io.IOException e) { |
| System.out.println("An I/O error occured while scanning :"); |
| System.out.println(e); |
| System.exit(1); |
| } |
| catch (Exception e) { |
| e.printStackTrace(); |
| System.exit(1); |
| } |
| } |
| } |
| |
| |
| } |