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

📄 sacparser.java

📁 cssparser -- CSS 的语法解析器。采用java语言编写。可用在服务端生成页面。
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        if (len == 3) {            r = Integer.parseInt(t.image.substring(i + 0, i + 1), 16);            g = Integer.parseInt(t.image.substring(i + 1, i + 2), 16);            b = Integer.parseInt(t.image.substring(i + 2, i + 3), 16);            r = (r << 4) | r;            g = (g << 4) | g;            b = (b << 4) | b;        } else if (len == 6) {            r = Integer.parseInt(t.image.substring(i + 0, i + 2), 16);            g = Integer.parseInt(t.image.substring(i + 2, i + 4), 16);            b = Integer.parseInt(t.image.substring(i + 4, i + 6), 16);        } else {            // Error        }        // Turn into an "rgb()"        LexicalUnit lr = LexicalUnitImpl.createNumber(null, r);        LexicalUnit lc1 = LexicalUnitImpl.createComma(lr);        LexicalUnit lg = LexicalUnitImpl.createNumber(lc1, g);        LexicalUnit lc2 = LexicalUnitImpl.createComma(lg);        LexicalUnit lb = LexicalUnitImpl.createNumber(lc2, b);        {if (true) return LexicalUnitImpl.createRgbColor(prev, lr);}    throw new Error("Missing return statement in function");  }  float value(char op, String s) throws ParseException {    return ((op == '-') ? -1 : 1) * Float.parseFloat(s);  }  int getLastNumPos(String s) throws ParseException {    int i;    for (i = 0; i < s.length(); i++) {        if (Character.isLetter(s.charAt(i))) {            break;        }    }    return i - 1;  }  String unescape(String s) throws ParseException {    int len = s.length();    StringBuffer buf = new StringBuffer(len);    int index = 0;    while (index < len) {        char c = s.charAt(index);        if (c == '\\') {            if (++index < len) {                c = s.charAt(index);                switch (c) {                case '0': case '1': case '2': case '3': case '4':                case '5': case '6': case '7': case '8': case '9':                case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':                case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':                    int numValue = Character.digit(c, 16);                    int count = 0;                    int p = 16;                    while (index + 1 < len && count < 6) {                        c = s.charAt(index+1);                        if (Character.digit(c, 16) != -1) {                            numValue = (numValue * 16) + Character.digit(c, 16);                            p *= 16;                            index++;                        } else {                            if (c == ' ') {                                // skip the latest white space                                index++;                            }                            break;                        }                    }                    buf.append((char) numValue);                    break;                    case '\n':                    case '\f':                    break;                    case '\r':                    if (index + 1 < len) {                        if (s.charAt(index + 1) == '\n') {                            index ++;                        }                    }                    break;                default:                    buf.append(c);                }            } else {                throw new CSSParseException("invalid string " + s, getLocator());            }        } else {            buf.append(c);        }        index++;    }    return buf.toString();  }  void skipSelector() throws ParseException {    Token t = getToken(1);    while (t.kind != COMMA && t.kind != SEMICOLON && t.kind != LBRACE && t.kind != EOF ) {        getNextToken();        t = getToken(1);    }  }  String skip() throws ParseException {  StringBuffer sb = new StringBuffer();  int nesting = 0;  Token t = getToken(0);  if (t.image != null) {    sb.append(t.image);  }  do {    t = getNextToken();    if (t.kind == EOF)      break;    sb.append(t.image);    if (t.kind == LBRACE)      nesting++;    else if (t.kind == RBRACE)      nesting--;    else if (t.kind == SEMICOLON && nesting <= 0)      break;  }  while ((t.kind != RBRACE) || (nesting > 0));  return sb.toString();  }  void error_skipblock() throws ParseException {  if (!_quiet) {    ParseException e = generateParseException();    System.err.println( "** error_skipblock **\n" + e.toString() );  }  Token t;  int nesting = 0;  do {    t = getNextToken();    if( t.kind == LBRACE )      nesting++;    else if( t.kind == RBRACE )      nesting--;    else if( t.kind == EOF )      break;  }  while ((t.kind != RBRACE) || (nesting > 0));  }  void error_skipdecl() throws ParseException {  if (!_quiet) {    ParseException e = generateParseException();    System.err.println("** error_skipdecl **\n" + e.toString());  }  Token t = getToken(1);  while (t.kind != SEMICOLON && t.kind != RBRACE && t.kind != EOF ) {      getNextToken();      t = getToken(1);  }  }  final private boolean jj_2_1(int xla) {    jj_la = xla; jj_lastpos = jj_scanpos = token;    boolean retval = !jj_3_1();    jj_save(0, xla);    return retval;  }  final private boolean jj_2_2(int xla) {    jj_la = xla; jj_lastpos = jj_scanpos = token;    boolean retval = !jj_3_2();    jj_save(1, xla);    return retval;  }  final private boolean jj_3_2() {    if (jj_3R_59()) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    if (jj_3R_60()) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_71() {    if (jj_scan_token(PLUS)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_68() {    Token xsp;    xsp = jj_scanpos;    if (jj_3R_71()) {    jj_scanpos = xsp;    if (jj_3R_72()) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_74() {    if (jj_scan_token(ASTERISK)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_78() {    if (jj_3R_82()) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_63() {    if (jj_scan_token(S)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    Token xsp;    xsp = jj_scanpos;    if (jj_3R_68()) jj_scanpos = xsp;    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_77() {    if (jj_3R_81()) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_62() {    if (jj_scan_token(GT)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    Token xsp;    while (true) {      xsp = jj_scanpos;      if (jj_3R_67()) { jj_scanpos = xsp; break; }      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    }    return false;  }  final private boolean jj_3R_76() {    if (jj_3R_80()) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_73() {    if (jj_scan_token(IDENT)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_69() {    Token xsp;    xsp = jj_scanpos;    if (jj_3R_73()) {    jj_scanpos = xsp;    if (jj_3R_74()) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_61() {    if (jj_scan_token(PLUS)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    Token xsp;    while (true) {      xsp = jj_scanpos;      if (jj_3R_66()) { jj_scanpos = xsp; break; }      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    }    return false;  }  final private boolean jj_3R_75() {    if (jj_3R_79()) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_70() {    Token xsp;    xsp = jj_scanpos;    if (jj_3R_75()) {    jj_scanpos = xsp;    if (jj_3R_76()) {    jj_scanpos = xsp;    if (jj_3R_77()) {    jj_scanpos = xsp;    if (jj_3R_78()) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_58() {    if (jj_scan_token(S)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_59() {    Token xsp;    xsp = jj_scanpos;    if (jj_3R_61()) {    jj_scanpos = xsp;    if (jj_3R_62()) {    jj_scanpos = xsp;    if (jj_3R_63()) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_65() {    Token xsp;    if (jj_3R_70()) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    while (true) {      xsp = jj_scanpos;      if (jj_3R_70()) { jj_scanpos = xsp; break; }      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    }    return false;  }  final private boolean jj_3R_80() {    if (jj_scan_token(DOT)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_64() {    if (jj_3R_69()) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_72() {    if (jj_scan_token(GT)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_82() {    if (jj_scan_token(COLON)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_60() {    Token xsp;    xsp = jj_scanpos;    if (jj_3R_64()) {    jj_scanpos = xsp;    if (jj_3R_65()) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_81() {    if (jj_scan_token(LSQUARE)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_66() {    if (jj_scan_token(S)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_67() {    if (jj_scan_token(S)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3R_79() {    if (jj_scan_token(HASH)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    return false;  }  final private boolean jj_3_1() {    if (jj_scan_token(IDENT)) return true;    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    Token xsp;    while (true) {      xsp = jj_scanpos;      if (jj_3R_58()) { jj_scanpos = xsp; break; }      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;    }    return false;  }  public SACParserTokenManager token_source;  public Token token, jj_nt;  private int jj_ntk;  private Token jj_scanpos, jj_lastpos;  private int jj_la;  public boolean lookingAhead = false;  private boolean jj_semLA;  private int jj_gen;  final private int[] jj_la1 = new int[95];  final private int[] jj_la1_0 = {0x0,0x3000002,0x3000002,0x10000000,0x3000002,0x3000002,0xe00a0d00,0xe00a0d00,0x3000002,0x3000002,0xf00a0d00,0x2,0x2,0x2,0x900000,0x2,0x0,0x2,0x2,0x200a0d00,0x80,0x2,0x200a0d00,0x2,0x200a0d00,0x200a0d00,0x2,0x2,0x2,0x2,0x2,0x400,0x400,0x2,0x0,0x200,0x2,0x0,0x2,0x2,0x0,0x200,0x2,0x0,0x2,0x2,0x1080,0x2,0x2,0x12000,0x2,0x12000,0x12002,0x6000,0x2,0x2,0x0,0x200,0x2,0x0,0x80,0x2,0x2,0xa0500,0xa0500,0xa0500,0xa0500,0xa0d00,0x800,0x2,0x2,0xc008000,0x2,0x100000,0x2,0xc008000,0x2,0x2,0x0,0x2,0x0,0x200,0x2,0x0,0x2,0x0,0x2,0x987080,0x1080,0x6000,0x0,0x980000,0x2,0x2,0x2,};  final private int[] jj_la1_1 = {0x1,0x0,0x0,0x0,0x0,0x0,0x1000002,0x1000002,0x0,0x0,0x1000003,0x0,0x0,0x0,0x0,0x0,0x1000000,0x0,0x0,0x1000002,0x0,0x0,0x1000002,0x0,0x1000002,0x1000002,0x0,0x0,0x0,0x0,0x0,0x1000000,0x1000000,0x0,0x1000000,0x0,0x0,0x1000000,0x0,0x0,0x1000000,0x0,0x0,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x0,0x0,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x1000000,0x0,0x0,0x0,0x0,0x1000000,0x0,0x0,0x0,0x0,0x1800000,0x0,0x1000000,0x0,0x0,0x1000000,0x0,0x4,0x0,0x9fffff8,0x0,0x0,0xb7fff0,0x9fffff8,0x0,0x0,0x0,};  final private int[] jj_la1_2 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};  final private JJCalls[] jj_2_rtns = new JJCalls[2];  private boolean jj_rescan = false;  private int jj_gc = 0;  public SACParser(CharStream stream) {    token_source = new SACParserTokenManager(stream);    token = new Token();    jj_ntk = -1;    jj_gen = 0;    for (int i = 0; i < 95; i++) jj_la1[i] = -1;    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();  }  public void ReInit(CharStream stream) {    token_source.ReInit(stream);    token = new Token();    jj_ntk = -1;    jj_gen = 0;    for (int i = 0; i < 95; i++) jj_la1[i] = -1;    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();  }  public SACParser(SACParserTokenManager tm) {    token_source = tm;    token = new Token();    jj_ntk = -1;    jj_gen = 0;    for (int i = 0; i < 95; i++) jj_la1[i] = -1;    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();  }  public void ReInit(SACParserTokenManager tm) {    token_source = tm;    token = new Token();    jj_ntk = -1;    jj_gen = 0;    for (int i = 0; i < 95; i++) jj_la1[i] = -1;    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();  }  final private Token jj_consume_token(int kind) throws ParseException {    Token oldToken;    if ((oldToken = token).next != null) token = token.next;    else token = token.next = token_source.getNextToken();    jj_ntk = -1;    if (token.kind == kind) {      jj_gen++;      if (++jj_gc > 100) {        jj_gc = 0;        for (int i = 0; i < jj_2_rtns.length; i++) {          JJCalls c = jj_2_rtns[i];          while (c != null) {            if (c.gen < jj_gen) c.first = null;            c = c.next;          }        }      }      return token;    }    token = oldToken;    jj_kind = kind;    throw generateParseException();  }  final private boolean jj_scan_token(int kind) {    if (jj_scanpos == jj_lastpos) {      jj_la--;      if (jj_scanpos.next == null) {        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();      } else {        jj_lastpos = jj_scanpos = jj_scanpos.next;      }    } else {      jj_scanpos = jj_scanpos.next;    }    if (jj_rescan) {      int i = 0; Token tok = token;      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }      if (tok != null) jj_add_error_token(kind, i);    }    return (jj_scanpos.kind != kind);  }  final public Token getNextToken() {    if (token.next != null) token = t

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -