?? htmlparser.java
字號:
/* Generated By:JavaCC: Do not edit this line. HtmlParser.java */package com.quiotix.html.parser;public class HtmlParser implements HtmlParserConstants { final static String NL = System.getProperty("line.separator"); private static String getTokenText(Token first, Token cur) { Token t; StringBuffer sb = new StringBuffer(); for (t=first; t != cur.next; t = t.next) { if (t.specialToken != null) { Token tt=t.specialToken; while (tt.specialToken != null) tt = tt.specialToken; for (; tt != null; tt = tt.next) sb.append(tt.image); }; sb.append(t.image); }; return sb.toString(); } public static void main(String[] args) throws ParseException { HtmlParser parser = new HtmlParser(System.in); HtmlDocument doc = parser.HtmlDocument(); doc.accept(new HtmlDumper(System.out)); System.exit(0); } final public HtmlDocument HtmlDocument() throws ParseException { HtmlDocument.ElementSequence s; s = ElementSequence(); jj_consume_token(0); {if (true) return new HtmlDocument(s);} throw new Error("Missing return statement in function"); } final public HtmlDocument.ElementSequence ElementSequence() throws ParseException { HtmlDocument.ElementSequence s = new HtmlDocument.ElementSequence(); HtmlDocument.HtmlElement h; label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case EOL: case TAG_START: case ENDTAG_START: case COMMENT_START: case DECL_START: case PCDATA: case PCDATA_QS: case PCDATA_Q: ; break; default: jj_la1[0] = jj_gen; break label_1; } h = Element(); s.addElement(h); } {if (true) return s;} throw new Error("Missing return statement in function"); } final public HtmlDocument.HtmlElement Element() throws ParseException { HtmlDocument.HtmlElement e; Token text; if (jj_2_1(2)) { e = Tag(); {if (true) return e;} } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ENDTAG_START: e = EndTag(); {if (true) return e;} break; case COMMENT_START: e = CommentTag(); {if (true) return e;} break; case DECL_START: e = DeclTag(); {if (true) return e;} break; default: jj_la1[1] = jj_gen; if (jj_2_2(2)) { e = ScriptBlock(); {if (true) return e;} } else if (jj_2_3(2)) { e = StyleBlock(); {if (true) return e;} } else if (jj_2_4(2)) { jj_consume_token(TAG_START); text = jj_consume_token(LST_ERROR); {if (true) return new HtmlDocument.Text("<" + text.image);} } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PCDATA: text = jj_consume_token(PCDATA); {if (true) return new HtmlDocument.Text(text.image);} break; case PCDATA_QS: text = jj_consume_token(PCDATA_QS); {if (true) return new HtmlDocument.Text(text.image);} break; case PCDATA_Q: text = jj_consume_token(PCDATA_Q); {if (true) return new HtmlDocument.Text(text.image);} break; case EOL: jj_consume_token(EOL); {if (true) return new HtmlDocument.Newline();} break; default: jj_la1[2] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } } } throw new Error("Missing return statement in function"); } final public HtmlDocument.Attribute Attribute() throws ParseException { HtmlDocument.Attribute a; Token t1, t2=null; t1 = jj_consume_token(ATTR_NAME); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ATTR_EQ: jj_consume_token(ATTR_EQ); t2 = jj_consume_token(ATTR_VAL); break; default: jj_la1[3] = jj_gen; ; } if (t2 == null) {if (true) return new HtmlDocument.Attribute(t1.image);} else {if (true) return new HtmlDocument.Attribute(t1.image, t2.image);} throw new Error("Missing return statement in function"); } final public HtmlDocument.AttributeList AttributeList() throws ParseException { HtmlDocument.AttributeList alist = new HtmlDocument.AttributeList(); HtmlDocument.Attribute a; label_2: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ATTR_NAME: ; break; default: jj_la1[4] = jj_gen; break label_2; } a = Attribute(); alist.addAttribute(a); } {if (true) return alist;} throw new Error("Missing return statement in function"); } final public HtmlDocument.HtmlElement Tag() throws ParseException { Token t, et; HtmlDocument.AttributeList alist; Token firstToken = getToken(1); try { jj_consume_token(TAG_START); t = jj_consume_token(TAG_NAME); alist = AttributeList(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case TAG_END: et = jj_consume_token(TAG_END); break; case TAG_SLASHEND: et = jj_consume_token(TAG_SLASHEND); break; default: jj_la1[5] = jj_gen; jj_consume_token(-1); throw new ParseException(); } HtmlDocument.Tag tag = new HtmlDocument.Tag(t.image, alist); if (et.kind == TAG_SLASHEND) tag.setEmpty(true); {if (true) return tag;} } catch (ParseException ex) { token_source.SwitchTo(DEFAULT); String s = getTokenText(firstToken, getNextToken()); {if (true) return new HtmlDocument.Text(s);} } throw new Error("Missing return statement in function"); } final public HtmlDocument.ElementSequence BlockContents() throws ParseException { Token t; StringBuffer s = new StringBuffer(); HtmlDocument.ElementSequence e = new HtmlDocument.ElementSequence(); label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLOCK_EOL: case BLOCK_LBR: case BLOCK_WORD: ; break; default: jj_la1[6] = jj_gen; break label_3; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BLOCK_EOL: jj_consume_token(BLOCK_EOL); if (s.length() > 0) { e.addElement(new HtmlDocument.Text(s.toString())); s.setLength(0); }; e.addElement(new HtmlDocument.Newline()); break; case BLOCK_WORD: t = jj_consume_token(BLOCK_WORD); s.append(t.image); break; case BLOCK_LBR: t = jj_consume_token(BLOCK_LBR); s.append(t.image); break; default: jj_la1[7] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } if (s.length() > 0) e.addElement(new HtmlDocument.Text(s.toString())); e.addElement(new HtmlDocument.Newline()); {if (true) return e;} throw new Error("Missing return statement in function"); } final public HtmlDocument.HtmlElement ScriptBlock() throws ParseException { HtmlDocument.AttributeList alist; HtmlDocument.ElementSequence e; Token firstToken = getToken(1); try { jj_consume_token(TAG_START); jj_consume_token(TAG_SCRIPT); alist = AttributeList(); jj_consume_token(TAG_END); token_source.SwitchTo(LexScript); e = BlockContents(); jj_consume_token(SCRIPT_END); {if (true) return new HtmlDocument.TagBlock("SCRIPT", alist, e);} } catch (ParseException ex) { token_source.SwitchTo(DEFAULT); String s = getTokenText(firstToken, getNextToken()); {if (true) return new HtmlDocument.Text(s);} } throw new Error("Missing return statement in function"); } final public HtmlDocument.HtmlElement StyleBlock() throws ParseException { HtmlDocument.AttributeList alist; HtmlDocument.ElementSequence e; Token firstToken = getToken(1); try { jj_consume_token(TAG_START); jj_consume_token(TAG_STYLE); alist = AttributeList(); jj_consume_token(TAG_END); token_source.SwitchTo(LexStyle); e = BlockContents(); jj_consume_token(STYLE_END); {if (true) return new HtmlDocument.TagBlock("STYLE", alist, e);} } catch (ParseException ex) { token_source.SwitchTo(DEFAULT); String s = getTokenText(firstToken, getNextToken()); {if (true) return new HtmlDocument.Text(s);} } throw new Error("Missing return statement in function"); } final public HtmlDocument.HtmlElement EndTag() throws ParseException { Token t; Token firstToken = getToken(1); try { jj_consume_token(ENDTAG_START); t = jj_consume_token(TAG_NAME); jj_consume_token(TAG_END); {if (true) return new HtmlDocument.EndTag(t.image);} } catch (ParseException ex) { token_source.SwitchTo(DEFAULT); String s = getTokenText(firstToken, getNextToken()); {if (true) return new HtmlDocument.Text(s);} } throw new Error("Missing return statement in function"); } final public HtmlDocument.Comment CommentTag() throws ParseException { Token t; StringBuffer s = new StringBuffer("--"); jj_consume_token(COMMENT_START); label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DASH: case COMMENT_EOL: case COMMENT_WORD: ; break; default: jj_la1[8] = jj_gen; break label_4; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DASH: t = jj_consume_token(DASH); s.append(t.image); break; case COMMENT_EOL: jj_consume_token(COMMENT_EOL); s.append(NL); break; case COMMENT_WORD: t = jj_consume_token(COMMENT_WORD); s.append(t.image); break; default: jj_la1[9] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 0: jj_consume_token(0); break; case COMMENT_END: jj_consume_token(COMMENT_END); break; default: jj_la1[10] = jj_gen; jj_consume_token(-1); throw new ParseException(); }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -