亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? scanner.java

?? XML的DTD的解析、對XML文件作用的JAVA源代碼。
?? JAVA
字號:
package com.wutka.dtd;

import java.io.*;
import java.util.*;

/** Lexical scanner for DTD's
 *
 * @author Mark Wutka
 * @version $Revision: 1.19 $ $Date: 2002/07/31 00:19:10 $ by $Author: wutka $
 */

class Scanner
{
	public static final TokenType LTQUES = new TokenType(0, "LTQUES");
	public static final TokenType IDENTIFIER = new TokenType(1, "IDENTIFIER");
	public static final TokenType EQUAL = new TokenType(2, "EQUAL");
	public static final TokenType LPAREN = new TokenType(3, "LPAREN");
	public static final TokenType RPAREN = new TokenType(4, "RPAREN");
	public static final TokenType COMMA = new TokenType(5, "COMMA");
	public static final TokenType STRING = new TokenType(6, "STRING");
	public static final TokenType QUESGT = new TokenType(7, "QUESGT");
	public static final TokenType LTBANG = new TokenType(8, "LTBANG");
	public static final TokenType GT = new TokenType(9, "GT");
	public static final TokenType PIPE = new TokenType(10, "PIPE");
	public static final TokenType QUES = new TokenType(11, "QUES");
	public static final TokenType PLUS = new TokenType(12, "PLUS");
	public static final TokenType ASTERISK = new TokenType(13, "ASTERISK");
	public static final TokenType LT = new TokenType(14, "LT");
	public static final TokenType EOF = new TokenType(15, "EOF");
	public static final TokenType COMMENT = new TokenType(16, "COMMENT");
	public static final TokenType PERCENT = new TokenType(17, "PERCENT");
	public static final TokenType CONDITIONAL =
        new TokenType(18, "CONDITIONAL");
	public static final TokenType ENDCONDITIONAL =
        new TokenType(19, "ENDCONDITIONAL");
    public static final TokenType NMTOKEN = new TokenType(20, "NMTOKEN");

    protected class StreamInfo
    {
        String      id;
        Reader      in;
        int         lineNumber = 1;
        int         column = 1;

        StreamInfo(String id, Reader in)
        {
            this.id = id;
            this.in = in;
        }
    };

    protected StreamInfo in;
    protected Stack inputStreams;
	protected Token nextToken;
	protected int nextChar;
    protected boolean atEOF;
    protected boolean trace;
    protected char[] expandBuffer;
    protected int expandPos;
    protected Hashtable entityExpansion;
    protected EntityExpansion expander;

	public Scanner(Reader inReader, EntityExpansion anExpander)
	{
        this(inReader, false, anExpander);
	}

	public Scanner(Reader inReader, boolean doTrace, EntityExpansion anExpander)
    {
        in = new StreamInfo("", inReader);
        atEOF = false;
        trace = doTrace;
        expandBuffer = null;
        entityExpansion = new Hashtable();
        expander = anExpander;
    }

	public Token peek()
		throws IOException
	{
		if (nextToken == null)
		{
			nextToken = readNextToken();
		}

		return nextToken;
	}

	public Token get()
		throws IOException
	{
		if (nextToken == null)
		{
			nextToken = readNextToken();
		}

		Token retval = nextToken;
		nextToken = null;

		return retval;
	}

    protected int readNextChar()
        throws IOException
    {
        int ch = in.in.read();

        if (ch < 0)
        {
            if ((inputStreams != null) && (!inputStreams.empty()))
            {
                in.in.close();
                in = (StreamInfo) inputStreams.pop();
                return readNextChar();
            }
        }
        return ch;
    }

	protected int peekChar()
		throws IOException
	{
        if (expandBuffer != null)
        {
            return (int) expandBuffer[expandPos];
        }

		if (nextChar == 0)
		{
			nextChar = readNextChar();
            in.column++;
            if (nextChar == '\n')
            {
                in.lineNumber++;
                in.column=1;
            }
		}

		return nextChar;
	}

	protected int read()
		throws IOException
	{
        if (expandBuffer != null)
        {
            int expNextChar = expandBuffer[expandPos++];
            if (expandPos >= expandBuffer.length)
            {
                expandPos = -1;
                expandBuffer = null;
            }
            if (trace)
            {
                System.out.print((char) expNextChar);
            }
            return expNextChar;
        }
		if (nextChar == 0)
		{
			peekChar();
		}

		int retval = nextChar;
		nextChar = 0;

        if (trace)
        {
            System.out.print((char) retval);
        }
		return retval;
	}

    public String getUntil(char stopChar)
        throws IOException
    {
        StringBuffer out = new StringBuffer();

        int ch;

        while ((ch = read()) >= 0)
        {
            if (ch == stopChar)
            {
                return out.toString();
            }
            out.append((char) ch);
        }
        return out.toString();
    }

    public void skipUntil(char stopChar)
        throws IOException
    {
        int ch;

        while ((ch = read()) >= 0)
        {
            if (ch == stopChar)
            {
                return;
            }
        }
        return;
    }

	protected Token readNextToken()
		throws IOException
	{
		for (;;)
		{
			int ch = read();

			if (ch == '<')
			{
				ch = peekChar();
				if (ch == '!')
				{
					read();

                    if (peekChar() == '[')
                    {
                        read();

                        return new Token(CONDITIONAL);
                    }

					if (peekChar() != '-')
					{
						return new Token(LTBANG);
					}
					else
					{
						read();
						if (peekChar() != '-')
						{
                            throw new DTDParseException(getUriId(),
								"Invalid character sequence <!-"+read(),
                                getLineNumber(), getColumn());
						}
						read();

						StringBuffer buff = new StringBuffer();
						for (;;)
						{
                            if (peekChar() < 0)
                            {
                                throw new DTDParseException(getUriId(),
                                    "Unterminated comment: <!--"+
                                    buff.toString(),
                                    getLineNumber(), getColumn());
                            }

							if (peekChar() != '-')
							{
								buff.append((char) read());
							}
							else
							{
								read();
                                if (peekChar() < 0)
                                {
                                    throw new DTDParseException(getUriId(),
                                        "Unterminated comment: <!--"+
                                        buff.toString(),
                                        getLineNumber(), getColumn());
                                }
								if (peekChar() == '-')
								{
									read();
									if (peekChar() != '>')
									{
                                        throw new DTDParseException(getUriId(),
											"Invalid character sequence --"+
											read(), getLineNumber(), getColumn());
									}
									read();
									return new Token(COMMENT, buff.toString());
								}
								else
								{
									buff.append('-');
								}
							}
						}
					}
				}
				else if (ch == '?')
				{
					read();
					return new Token(LTQUES);
				}
				else
				{
					return new Token(LT);
				}
			}
			else if (ch == '?')
			{
// Need to treat ?> as two separate tokens because
// <!ELEMENT blah (foo)?> needs the ? as a QUES, not QUESGT
/*				ch = peekChar();

				if (ch == '>')
				{
					read();
					return new Token(QUESGT);
				}
				else
				{
					return new Token(QUES);
				}*/
				return new Token(QUES);
			}
			else if ((ch == '"') || (ch == '\''))
			{
				int quoteChar = ch;

				StringBuffer buff = new StringBuffer();
				while (peekChar() != quoteChar)
				{
					ch = read();
					if (ch == '\\')
					{
						buff.append((char) read());
					}                    else if (ch < 0)                    {                        break;  // IF EOF before getting end quote                    }
					else
					{
						buff.append((char) ch);
					}
				}
				read();
				return new Token(STRING, buff.toString());
			}
			else if (ch == '(')
			{
				return new Token(LPAREN);
			}
			else if (ch == ')')
			{
				return new Token(RPAREN);
			}
			else if (ch == '|')
			{
				return new Token(PIPE);
			}
			else if (ch == '>')
			{
				return new Token(GT);
			}
			else if (ch == '=')
			{
				return new Token(EQUAL);
			}
			else if (ch == '*')
			{
				return new Token(ASTERISK);
			}
            else if (ch == ']')
            {
                if (read() != ']')
                {
                    throw new DTDParseException(getUriId(),
                        "Illegal character in input stream: "+ch,
                        getLineNumber(), getColumn());
                }
                if (read() != '>')
                {
                    throw new DTDParseException(getUriId(),
                        "Illegal character in input stream: "+ch,
                        getLineNumber(), getColumn());
                }

                return new Token(ENDCONDITIONAL);
            }
			else if (ch == '#')
			{
				StringBuffer buff = new StringBuffer();
				buff.append((char) ch);

                if (isIdentifierChar((char) peekChar()))                {                    buff.append((char) read());				    while (isNameChar((char) peekChar()))
				    {
					    buff.append((char) read());
				    }
                }				return new Token(IDENTIFIER, buff.toString());
			}
			else if ((ch == '&') || (ch == '%'))
			{
                if ((ch == '%') && Character.isWhitespace((char)peekChar()))
                {
                    return new Token(PERCENT);
                }

                boolean peRef = (ch == '%');

				StringBuffer buff = new StringBuffer();
				buff.append((char) ch);

                if (isIdentifierChar((char) peekChar()))                {                    buff.append((char) read());				    while (isNameChar((char) peekChar()))
				    {
					    buff.append((char) read());
				    }
                }
				if (read() != ';')
				{
                    throw new DTDParseException(getUriId(),
                                "Expected ';' after reference "+
                                buff.toString()+", found '"+ch+"'",
                                getLineNumber(), getColumn());
				}
                buff.append(';');

                if (peRef)
                {                    if (expandEntity(buff.toString()))                    {
                        continue;                    }                    else                    {                        // MAW: Added version 1.17                        // If the entity can't be expanded, don't return it, skip it                        continue;                    }
                }
				return new Token(IDENTIFIER, buff.toString());
			}
			else if (ch == '+')
			{
				return new Token(PLUS);
			}
			else if (ch == ',')
			{
				return new Token(COMMA);
			}
			else if (isIdentifierChar((char) ch))
			{
				StringBuffer buff = new StringBuffer();
				buff.append((char) ch);

				while (isNameChar((char) peekChar()))
				{
					buff.append((char) read());
				}
				return new Token(IDENTIFIER, buff.toString());
			}
			else if (isNameChar((char) ch))
			{
				StringBuffer buff = new StringBuffer();
				buff.append((char) ch);

				while (isNameChar((char) peekChar()))
				{
					buff.append((char) read());
				}
				return new Token(NMTOKEN, buff.toString());
			}
			else if (ch < 0)
			{
                if (atEOF)
                {
                    throw new IOException("Read past EOF");
                }
                atEOF = true;
				return new Token(EOF);
			}
			else if (Character.isWhitespace((char) ch))
			{
				continue;
			}
			else
			{
                throw new DTDParseException(getUriId(),
                                "Illegal character in input stream: "+ch,
                                getLineNumber(), getColumn());
			}
		}
	}

    public void skipConditional()
        throws IOException
    {
// 070401 MAW: Fix for nested conditionals provided by Noah Fike
        // BEGIN CHANGE
        int ch = 0;
        int nestingDepth = 0; // Add nestingDepth parameter

//    Everything is ignored within an ignored section, except the
//    sub-section delimiters '<![' and ']]>'. These must be balanced,
//    but no section keyword is required:
//    Conditional Section
//[61] conditionalSect ::= 爄ncludeSect | ignoreSect
//[62] includeSect ::= 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品乱码久久久久久| 综合婷婷亚洲小说| 国产欧美视频一区二区三区| 亚洲成av人综合在线观看| 狠狠色狠狠色综合系列| 欧美日韩亚州综合| 中文字幕在线一区二区三区| 精品一区二区三区免费视频| 欧美吞精做爰啪啪高潮| 国产精品理伦片| 国产精品自拍av| 欧美电视剧免费观看| 尤物在线观看一区| www.欧美日韩| 中文字幕av资源一区| 麻豆91精品视频| 91麻豆精品国产自产在线观看一区 | 久久综合九色综合久久久精品综合| 成人伦理片在线| 精品国产露脸精彩对白| 亚洲日韩欧美一区二区在线| 国产传媒日韩欧美成人| 精品国产一区二区三区久久久蜜月| 欧美一区二区三区公司| 亚洲一区视频在线观看视频| 色婷婷综合久久| 自拍偷拍亚洲综合| 国产激情91久久精品导航 | 精品少妇一区二区| 亚洲成国产人片在线观看| 日本道色综合久久| 亚洲美女淫视频| 在线免费观看不卡av| 亚洲欧美二区三区| 在线一区二区视频| 一区二区三区视频在线观看| 在线观看网站黄不卡| 亚洲国产欧美一区二区三区丁香婷| 视频一区二区欧美| 91精品国产色综合久久不卡蜜臀 | 国产亚洲视频系列| 韩国女主播成人在线| 精品精品国产高清a毛片牛牛| 最新热久久免费视频| www.性欧美| 夜夜嗨av一区二区三区四季av| 久久电影网电视剧免费观看| 日韩一级完整毛片| 亚洲天堂久久久久久久| 欧美少妇bbb| 老司机精品视频线观看86| 26uuu欧美日本| av高清久久久| 午夜精品福利在线| 久久美女艺术照精彩视频福利播放| 亚洲综合色噜噜狠狠| 欧美日韩午夜在线| 久久国产精品99精品国产| 国产欧美一区二区精品忘忧草| 日本免费新一区视频| 久久久久成人黄色影片| 99热精品国产| 日韩一区欧美二区| 中文字幕乱码久久午夜不卡| 在线视频国内自拍亚洲视频| 免费高清在线一区| 日本一区二区三区国色天香| 91激情在线视频| 久久国产婷婷国产香蕉| 中文字幕制服丝袜成人av | 99久久精品一区二区| 亚洲成a人片在线不卡一二三区| 国产乱子伦视频一区二区三区| 欧美性猛交xxxx乱大交退制版| 国产午夜精品一区二区三区嫩草| 丝袜亚洲另类欧美综合| 国产亚洲精久久久久久| 欧美中文字幕一二三区视频| 国产精品综合av一区二区国产馆| 日韩欧美第一区| 一本久道中文字幕精品亚洲嫩| 中文字幕第一区第二区| 在线不卡的av| 色偷偷一区二区三区| 久久精品999| 日韩在线a电影| 亚洲精品成人少妇| 国产日韩欧美制服另类| 日韩一级精品视频在线观看| 在线日韩av片| 99久久综合99久久综合网站| 国内精品视频666| 婷婷国产在线综合| 亚洲精品国产一区二区三区四区在线 | 成人av午夜影院| 经典一区二区三区| 日韩av一区二区三区四区| 亚洲人一二三区| 天涯成人国产亚洲精品一区av| 欧美色图一区二区三区| 99re热视频精品| 成人高清在线视频| 高清成人在线观看| 国产乱码一区二区三区| 另类小说一区二区三区| 午夜天堂影视香蕉久久| 亚洲国产一二三| 亚洲综合自拍偷拍| 亚洲精品国产视频| 亚洲视频网在线直播| 国产精品理论在线观看| 国产精品拍天天在线| 国产欧美视频一区二区| 国产日韩欧美综合一区| 国产精品欧美久久久久无广告| 91福利精品视频| 91久久国产最好的精华液| 色欧美88888久久久久久影院| 午夜精品福利视频网站| 调教+趴+乳夹+国产+精品| 亚洲成va人在线观看| 亚洲国产一区视频| 香蕉影视欧美成人| 免费成人你懂的| 狠狠狠色丁香婷婷综合久久五月| 亚洲精品免费在线观看| 一区二区在线观看av| 亚洲国产日日夜夜| 日韩av一区二区在线影视| 久久超级碰视频| 丁香啪啪综合成人亚洲小说 | 日本一区二区三区国色天香 | 亚洲美女区一区| 亚洲国产综合视频在线观看| 亚洲第一搞黄网站| 久久精品国产网站| 国产成人高清视频| 色婷婷精品久久二区二区蜜臂av | 亚洲精品中文在线影院| 亚洲第一主播视频| 激情欧美一区二区三区在线观看| 亚洲三级理论片| 视频在线观看一区| 国产一区二区三区香蕉| 欧美一卡二卡三卡| 久久综合久久久久88| 亚洲色图另类专区| 日本va欧美va精品发布| 国产成人免费在线观看| 91麻豆视频网站| 欧美电影一区二区| 国产欧美日韩在线| 亚洲人被黑人高潮完整版| 日韩avvvv在线播放| 福利一区二区在线| 欧美另类久久久品| 国产人成亚洲第一网站在线播放| 3d动漫精品啪啪一区二区竹菊| 日本韩国欧美在线| 久久综合av免费| 亚洲综合小说图片| 国产超碰在线一区| 欧美自拍偷拍午夜视频| 日本一区二区不卡视频| 天天操天天色综合| 91蜜桃网址入口| 久久综合色8888| 日韩高清不卡一区二区三区| av中文字幕一区| 久久久久九九视频| 日本色综合中文字幕| 色综合久久久网| 中文字幕av一区二区三区高| 蜜桃视频在线观看一区二区| 日本丰满少妇一区二区三区| 国产亚洲成av人在线观看导航| 欧美国产综合一区二区| 卡一卡二国产精品| 欧美精品在线一区二区| 亚洲另类色综合网站| 成人福利视频网站| 久久精品一区二区| 紧缚捆绑精品一区二区| 91麻豆精品久久久久蜜臀| 亚洲v中文字幕| 欧美日韩一区二区在线观看| 亚洲人吸女人奶水| 粉嫩av一区二区三区在线播放| av激情综合网| 国产精品国产三级国产| 国产在线精品一区二区三区不卡| 国产91丝袜在线播放九色| www激情久久| 麻豆极品一区二区三区| 91精品国产综合久久小美女| 日韩专区在线视频| 欧美一区日韩一区| 男女性色大片免费观看一区二区| 国产精品白丝jk白祙喷水网站| 99r精品视频|