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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? parser.java

?? JAVA的一些源碼 JAVA2 STANDARD EDITION DEVELOPMENT KIT 5.0
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
		String elemStr = getString(0);		if (!dtd.elementExists(elemStr)) {		    error("end.unrecognized", elemStr);		    // Ignore RE before end tag		    if ((textpos > 0) && (text[textpos-1] == '\n')) {			textpos--;		    }		    elem = dtd.getElement("unknown");		    elem.name = elemStr;		    unknown = true;		} else {		    elem = dtd.getElement(elemStr);		}		break;	    }	    // If the stack is null, we're seeing end tags without any begin	    // tags.  Ignore them.	    if (stack == null) {		error("end.extra.tag", elem.getName());		return;	    }	    // Ignore RE before end tag            if ((textpos > 0) && (text[textpos-1] == '\n')) {		// In a pre tag, if there are blank lines		// we do not want to remove the newline		// before the end tag.  Hence this code.		//		if (stack.pre) {		    if ((textpos > 1) && (text[textpos-2] != '\n')) {			textpos--;		    }		} else {		    textpos--;		}	    }	    // If the end tag is a form, since we did not put it	    // on the tag stack, there is no corresponding start	    // start tag to find. Hence do not touch the tag stack.	    //            /*	    if (!strict && elem.getName().equals("form")) {		if (lastFormSent != null) {		    handleEndTag(lastFormSent);		    return;		} else {		    // do nothing.		    return;		}	    }            */	    if (unknown) {		// we will not see a corresponding start tag		// on the the stack.  If we are seeing an		// end tag, lets send this on as an empty		// tag with the end tag attribute set to		// true.		TagElement t = makeTag(elem);		handleText(t);		attributes.addAttribute(HTML.Attribute.ENDTAG, "true");		handleEmptyTag(makeTag(elem));		unknown = false;		return;	    }	    // find the corresponding start tag	    // A commonly occuring error appears to be the insertion	    // of extra end tags in a table.  The intent here is ignore	    // such extra end tags.	    //	    if (!strict) {		String stackElem = stack.elem.getName();		if (stackElem.equals("table")) {		    // If it isnt a valid end tag ignore it and return		    //		    if (!elem.getName().equals(stackElem)) {			error("tag.ignore", elem.getName());			return;		    }		}		if (stackElem.equals("tr") ||		    stackElem.equals("td")) {		    if ((!elem.getName().equals("table")) &&			(!elem.getName().equals(stackElem))) {			error("tag.ignore", elem.getName());			return;		    }		}	    }	    TagStack sp = stack;	    while ((sp != null) && (elem != sp.elem)) {		sp = sp.next;	    }	    if (sp == null) {		error("unmatched.endtag", elem.getName());		return;	    } 	    // People put font ending tags in the darndest places. 	    // Don't close other contexts based on them being between 	    // a font tag and the corresponding end tag.  Instead, 	    // ignore the end tag like it doesn't exist and allow the end	    // of the document to close us out.	    String elemName = elem.getName(); 	    if (stack != sp &&		(elemName.equals("font") ||		 elemName.equals("center"))) {		// Since closing out a center tag can have real wierd		// effects on the formatting,  make sure that tags		// for which omitting an end tag is legimitate		// get closed out.		//		if (elemName.equals("center")) {		    while(stack.elem.omitEnd() && stack != sp) {			endTag(true);		    }		    if (stack.elem == elem) {			endTag(false);		    }		}		return;	    }	    // People do the same thing with center tags.  In this	    // case we would like to close off the center tag but	    // not necessarily all enclosing tags.	    // end tags	    while (stack != sp) {		endTag(true);	    }	    endTag(false);	    return;	  case -1:	    error("eof");	    return;	}	// start tag [14] 314:1	if (!parseIdentifier(true)) {	    elem = recent;	    if ((ch != '>') || (elem == null)) {		error("expected.tagname");		return;	    }	} else {	    String elemStr = getString(0);	    if (elemStr.equals("image")) {		elemStr = new String("img");	    }	    /* determine if this element is part of the dtd. */	    if (!dtd.elementExists(elemStr)) {		//		parseInvalidTag();		error("tag.unrecognized ", elemStr);		elem = dtd.getElement("unknown");		elem.name = elemStr;		unknown = true;	    } else {		elem = dtd.getElement(elemStr);	    }	}	// Parse attributes	parseAttributeSpecificationList(elem);	switch (ch) {	  case '/':	    net = true;	  case '>':	    ch = readCh();	  case '<':	    break;	  default:	    error("expected", "'>'");	    break;	}	if (!strict) {	  if (elem.getName().equals("script")) {	    error("javascript.unsupported");	  }	}	// ignore RE after start tag	//	if (!elem.isEmpty())  {	    if (ch == '\n') {		ln++;		lfCount++;		ch = readCh();	    } else if (ch == '\r') {		ln++;		if ((ch = readCh()) == '\n') {		    ch = readCh();		    crlfCount++;		}		else {		    crCount++;		}	    }	}	// ensure a legal context for the tag	TagElement tag = makeTag(elem, false);	/** In dealing with forms, we have decided to treat	    them as legal in any context.  Also, even though	    they do have a start and an end tag, we will	    not put this tag on the stack.  This is to deal	    several pages in the web oasis that choose to	    start and end forms in any possible location. **/        /*	if (!strict && elem.getName().equals("form")) {	    if (lastFormSent == null) {		lastFormSent = tag;	    } else {		handleEndTag(lastFormSent);		lastFormSent = tag;	    }	} else {        */	    // Smlly, if a tag is unknown, we will apply	    // no legalTagContext logic to it.	    //	    if (!unknown) {		legalTagContext(tag);		// If skip tag is true,  this implies that		// the tag was illegal and that the error		// recovery strategy adopted is to ignore		// the tag.		if (!strict && skipTag) {		    skipTag = false;		    return;		}	    }            /*	}            */	startTag(tag);	if (!elem.isEmpty()) {	    switch (elem.getType()) {	      case CDATA:		parseLiteral(false);		break;	      case RCDATA:		parseLiteral(true);		break;	      default:		if (stack != null) {		    stack.net = net;		}		break;	    }	}    }    /**     * Parse Content. [24] 320:1     */    void parseContent() throws IOException {	Thread curThread = Thread.currentThread();	for (;;) {	    if (curThread.isInterrupted()) {                curThread.interrupt(); // resignal the interrupt                break;            }	    int c = ch;	    currentBlockStartPos = currentPosition;	    switch (c) {	      case '<':		parseTag();		lastBlockStartPos = currentPosition;		continue;	      case '/':		ch = readCh();		if ((stack != null) && stack.net) {		    // null end tag.		    endTag(false);		    continue;		}		break;	      case -1:		return;	      case '&':		if (textpos == 0) {		    if (!legalElementContext(dtd.pcdata)) {			error("unexpected.pcdata");		    }		    if (last.breaksFlow()) {			space = false;		    }		}		char data[] = parseEntityReference();		if (textpos + data.length + 1 > text.length) {		    char newtext[] = new char[Math.max(textpos + data.length + 128, text.length * 2)];		    System.arraycopy(text, 0, newtext, 0, text.length);		    text = newtext;		}		if (space) {		    space = false;		    text[textpos++] = ' ';		}		System.arraycopy(data, 0, text, textpos, data.length);		textpos += data.length;                ignoreSpace = false;		continue;	      case '\n':		ln++;		lfCount++;		ch = readCh();		if ((stack != null) && stack.pre) {		    break;		}		if (textpos == 0) {		    lastBlockStartPos = currentPosition;		}                if (!ignoreSpace) {                    space = true;                }		continue;	      case '\r':		ln++;		c = '\n';		if ((ch = readCh()) == '\n') {		    ch = readCh();		    crlfCount++;		}		else {		    crCount++;		}		if ((stack != null) && stack.pre) {		    break;		}		if (textpos == 0) {		    lastBlockStartPos = currentPosition;		}                if (!ignoreSpace) {                    space = true;                }		continue;	      case '\t':	      case ' ':		ch = readCh();		if ((stack != null) && stack.pre) {		    break;		}		if (textpos == 0) {		    lastBlockStartPos = currentPosition;		}                if (!ignoreSpace) {                    space = true;                }		continue;	      default:		if (textpos == 0) {		    if (!legalElementContext(dtd.pcdata)) {			error("unexpected.pcdata");		    }		    if (last.breaksFlow()) {			space = false;		    }		}		ch = readCh();		break;	    }	    // enlarge buffer if needed	    if (textpos + 2 > text.length) {		char newtext[] = new char[text.length + 128];		System.arraycopy(text, 0, newtext, 0, text.length);		text = newtext;	    }	    // output pending space	    if (space) {		if (textpos == 0) {		    lastBlockStartPos--;		}		text[textpos++] = ' ';		space = false;	    }	    text[textpos++] = (char)c;            ignoreSpace = false;	}    }    /**     * Returns the end of line string. This will return the end of line     * string that has been encountered the most, one of \r, \n or \r\n.     */    String getEndOfLineString() {	if (crlfCount >= crCount) {	    if (lfCount >= crlfCount) {		return "\n";	    }	    else {		return "\r\n";	    }	}	else {	    if (crCount > lfCount) {		return "\r";	    }	    else {		return "\n";	    }	}    }    /**     * Parse an HTML stream, given a DTD.     */    public synchronized void parse(Reader in) throws IOException {	this.in = in;	this.ln = 1;	seenHtml = false;	seenHead = false;	seenBody = false;	crCount = lfCount = crlfCount = 0;	try {	    try {		ch = readCh();		text = new char[1024];		str = new char[128];		parseContent();		// NOTE: interruption may have occurred.  Control flows out		// of here normally.		while (stack != null) {		    endTag(true);		}	    } finally {		in.close();	    }	} catch (IOException e) {	    errorContext();	    error("ioexception");	    throw e;	} catch (Exception e) {	    errorContext();	    error("exception", e.getClass().getName(), e.getMessage());	    e.printStackTrace();	} catch (ThreadDeath e) {	    errorContext();	    error("terminated");	    e.printStackTrace();	    throw e;	} finally {	    for (; stack != null ; stack = stack.next) {		handleEndTag(stack.tag);	    }	    text = null;	    str = null;	}    }    /*     * Input cache.  This is much faster than calling down to a synchronized     * method of BufferedReader for each byte.  Measurements done 5/30/97     * show that there's no point in having a bigger buffer:  Increasing     * the buffer to 8192 had no measurable impact for a program discarding     * one character at a time (reading from an http URL to a local machine).     * NOTE: If the current encoding is bogus, and we read too much     * (past the content-type) we may suffer a MalformedInputException. For     * this reason the initial size is 1 and when the body is encountered the     * size is adjusted to 256.     */    private char buf[] = new char[1];    private int pos;    private int len;    /*	tracks position relative to the beginning of the	document.    */    private int currentPosition;    private final int readCh() throws IOException {	if (pos >= len) {	    // This loop allows us to ignore interrupts if the flag	    // says so	    for (;;) {		try {		    len = in.read(buf);		    break;		} catch (InterruptedIOException ex) {		    throw ex;		}	    }	    if (len <= 0) {		return -1;	// eof	    }	    pos = 0;	}	++currentPosition;	return buf[pos++];    }    protected int getCurrentPos() {	return currentPosition;    }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区av电影| 欧美一区二区三区免费大片 | 日韩一区中文字幕| 成人久久久精品乱码一区二区三区| 久久蜜桃一区二区| 国产精品一二三四五| 久久精品视频免费观看| 国产精品亚洲一区二区三区在线| 精品国产3级a| 国产成人免费xxxxxxxx| 亚洲视频1区2区| 色综合欧美在线视频区| 亚洲午夜电影在线| 精品日本一线二线三线不卡| 精品一区二区在线视频| 国产视频一区不卡| 91小视频在线观看| 午夜国产不卡在线观看视频| 日韩一区二区免费电影| 国产精品18久久久久久久久久久久 | 中文字幕中文在线不卡住| 94色蜜桃网一区二区三区| 日韩**一区毛片| 国产欧美精品一区二区色综合 | 精品国产伦一区二区三区观看体验 | 久久久精品人体av艺术| av一区二区三区黑人| 亚洲成av人片在www色猫咪| 日韩精品中文字幕在线一区| av电影在线观看一区| 舔着乳尖日韩一区| 欧美激情一区二区三区全黄| 欧美性大战久久| 国产乱国产乱300精品| 亚洲免费电影在线| 久久久综合视频| 欧美日韩另类一区| 国产成人免费视频精品含羞草妖精| 一区二区三区自拍| 欧美精品一区二区三区在线播放| 色噜噜夜夜夜综合网| 久久66热偷产精品| 亚洲综合色噜噜狠狠| 国产色综合一区| 制服丝袜激情欧洲亚洲| 成人av手机在线观看| 日韩国产精品久久| 亚洲欧美日韩国产一区二区三区| 欧美va亚洲va香蕉在线 | 欧美日韩精品三区| 91香蕉国产在线观看软件| 精品在线你懂的| 一区二区免费视频| 国产欧美日韩综合| 日韩欧美国产一区二区在线播放| 色婷婷av一区二区三区之一色屋| 国产在线一区观看| 日韩制服丝袜av| 一区二区三区在线观看欧美| 亚洲国产岛国毛片在线| 久久久久久一二三区| 欧美久久婷婷综合色| 91免费版pro下载短视频| 国产成人av自拍| 九色综合狠狠综合久久| 日本欧美在线看| 视频一区视频二区中文| 亚洲电影一级片| 午夜久久久久久| 日韩av一区二区在线影视| 丝袜a∨在线一区二区三区不卡| 亚洲一区自拍偷拍| 一区二区三区四区乱视频| 亚洲欧美另类图片小说| 亚洲美女在线一区| 一区二区三区日韩精品| 亚洲一线二线三线视频| 亚洲超丰满肉感bbw| 日一区二区三区| 秋霞国产午夜精品免费视频| 日本在线不卡一区| 美女免费视频一区二区| 久久99国产精品免费网站| 精品写真视频在线观看| 国产原创一区二区三区| 高清视频一区二区| 成人黄色免费短视频| 91丨九色丨尤物| 色综合中文字幕国产 | 白白色 亚洲乱淫| 99久久精品国产一区二区三区| 国产一区二区0| 国产在线播放一区二区三区 | 美女视频网站久久| 日韩国产精品91| 亚洲第一电影网| 久久99国内精品| 国产一区二区不卡在线| 国产麻豆一精品一av一免费 | 日本高清成人免费播放| 色婷婷久久久久swag精品| 99r国产精品| 国产91综合一区在线观看| 国产成人亚洲综合a∨婷婷图片| 国产精品99久久久久久宅男| 成人高清视频在线观看| 色综合中文字幕国产 | 欧美三级蜜桃2在线观看| 欧美日韩一区高清| 欧美一级欧美三级在线观看 | 一本久久a久久免费精品不卡| 99国产精品视频免费观看| 91久久久免费一区二区| 欧美乱熟臀69xxxxxx| 在线播放/欧美激情| 国产欧美日韩不卡| 亚洲黄色免费网站| 日日欢夜夜爽一区| 激情五月激情综合网| 粗大黑人巨茎大战欧美成人| 一本一道波多野结衣一区二区| 成人综合婷婷国产精品久久 | 在线免费观看日韩欧美| 欧美精品久久久久久久久老牛影院| 欧美一区二区精品| 国产蜜臀av在线一区二区三区| 中文字幕日本乱码精品影院| 中文字幕亚洲综合久久菠萝蜜| 奇米一区二区三区av| 国产成人午夜精品影院观看视频| 99riav一区二区三区| 制服视频三区第一页精品| 久久久精品国产免大香伊 | 精品少妇一区二区三区在线视频| 国产三级精品三级| 亚洲一二三四久久| 国产在线不卡视频| 91福利国产成人精品照片| 欧美经典三级视频一区二区三区| 亚洲成人三级小说| 国产91精品露脸国语对白| 欧美三级电影在线看| 国产无遮挡一区二区三区毛片日本| 亚洲影院久久精品| 国产精品夜夜嗨| 91精品国产欧美日韩| 亚洲图片另类小说| 国内不卡的二区三区中文字幕| 99久久99久久精品免费观看| 欧美一区二区免费观在线| 国产欧美一区二区在线| 久草在线在线精品观看| 精品视频色一区| 中文字幕在线观看一区| 久久超碰97中文字幕| 精品视频1区2区3区| 中文字幕一区二区三区在线不卡| 日韩va欧美va亚洲va久久| 91亚洲精品乱码久久久久久蜜桃| 精品99一区二区| 性久久久久久久久| 色婷婷综合在线| 中文字幕精品—区二区四季| 国模套图日韩精品一区二区| 在线观看91av| 午夜视频久久久久久| 色婷婷国产精品综合在线观看| 国产日韩欧美一区二区三区乱码 | 欧美性xxxxxx少妇| 国产日韩v精品一区二区| 国精产品一区一区三区mba视频| 91精品国产色综合久久ai换脸 | 国产精品天美传媒沈樵| 激情综合色综合久久综合| 欧美日韩国产综合视频在线观看 | 日本一区二区三区国色天香| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲国产精品久久久久婷婷884| 色综合色狠狠综合色| 中文字幕在线不卡一区二区三区| 国产成人在线视频免费播放| 日韩欧美一级精品久久| 九九精品视频在线看| 欧美大片日本大片免费观看| 日韩电影在线一区| 欧美日韩国产免费| 亚洲成va人在线观看| 欧美区视频在线观看| 蜜桃久久久久久| 欧美大尺度电影在线| 精品一区二区三区蜜桃| 久久综合久久鬼色中文字| 国产在线精品一区二区夜色| 久久婷婷成人综合色| 99vv1com这只有精品| 亚洲国产精品久久久久秋霞影院 | 91猫先生在线| 亚洲一区在线播放| 制服丝袜亚洲色图| 国产一区二区网址|