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

📄 htmlparser.java

📁 HTML解释器JAVA源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* 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 + -