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

📄 xpathtokenizer.java

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            token = new XPathToken (XPathParser.yyErrorCode);          }      }    return true;  }  public int token ()  {    return token.type;  }  public Object value ()  {    return token.val;  }  XPathToken consume_literal (int delimiter)    throws IOException  {    StringBuffer buf = new StringBuffer ();    while (true)      {        int c = in.read ();        if (c == -1)          {            return new XPathToken (XPathParser.yyErrorCode);          }        else if (c == delimiter)          {            return new XPathToken (XPathParser.LITERAL, buf.toString ());          }        else          {            buf.append ((char) c);          }      }  }  XPathToken consume_digits (int c)    throws IOException  {    StringBuffer buf = new StringBuffer ();    buf.append ((char) c);    while (true)      {        in.mark (1);        c = in.read ();        if (c >= 0x30 && c <= 0x39)          {            buf.append ((char) c);          }        else          {            in.reset ();            return new XPathToken (XPathParser.DIGITS, buf.toString ());          }      }  }  XPathToken consume_name (int c)    throws IOException  {    StringBuffer buf = new StringBuffer ();    buf.append ((char) c);    while (true)      {        in.mark (1);        c = in.read ();        if (isNameChar (c))          {            buf.append ((char) c);          }        else          {            in.reset ();            String name = buf.toString ();            Integer keyword = (Integer) keywords.get (name);            if (keyword == null)              {                return new XPathToken (XPathParser.NAME, name);              }            else              {                int val = keyword.intValue ();                switch (val)                  {                  case XPathParser.NODE:                  case XPathParser.COMMENT:                  case XPathParser.TEXT:                  case XPathParser.PROCESSING_INSTRUCTION:                    // Consume subsequent (                    in.mark (1);                    do                      {                        c = in.read ();                      }                    while (c == 0x20 || c == 0x09);                    if (c != 0x28)                      {                        in.reset ();                        return new XPathToken (XPathParser.NAME, name);                      }                    break;                  case XPathParser.CHILD:                  case XPathParser.PARENT:                  case XPathParser.SELF:                  case XPathParser.DESCENDANT:                  case XPathParser.ANCESTOR:                  case XPathParser.DESCENDANT_OR_SELF:                  case XPathParser.ANCESTOR_OR_SELF:                  case XPathParser.ATTRIBUTE:                  case XPathParser.NAMESPACE:                  case XPathParser.FOLLOWING:                  case XPathParser.FOLLOWING_SIBLING:                  case XPathParser.PRECEDING:                  case XPathParser.PRECEDING_SIBLING:                    // Check that this is an axis specifier                    in.mark(1);                    do                      {                        c = in.read();                      }                    while (c == 0x20 || c == 0x09);                    if (c == 0x3a)                      {                        c = in.read();                        if (c == 0x3a)                          {                            in.reset();                            return new XPathToken(val);                          }                      }                    in.reset();                    return new XPathToken(XPathParser.NAME, name);                  case XPathParser.DIV:                  case XPathParser.MOD:                    // May be a name                    if (lastToken == null)                      {                        return new XPathToken(XPathParser.NAME, name);                      }                    switch (lastToken.type)                      {                      case XPathParser.LP:                      case XPathParser.LB:                      case XPathParser.COMMA:                      case XPathParser.PIPE:                      case XPathParser.EQ:                      case XPathParser.NE:                      case XPathParser.GT:                      case XPathParser.LT:                      case XPathParser.GTE:                      case XPathParser.LTE:                      case XPathParser.PLUS:                      case XPathParser.MINUS:                      case XPathParser.STAR:                      case XPathParser.AT:                      case XPathParser.DOLLAR:                      case XPathParser.COLON:                      case XPathParser.DOUBLE_COLON:                      case XPathParser.DIV:                      case XPathParser.MOD:                      case XPathParser.OR:                      case XPathParser.AND:                      case XPathParser.SLASH:                        return new XPathToken(XPathParser.NAME, name);                      }                    break;                  }                return new XPathToken (val);              }          }      }  }  boolean isNameChar (int c)  {    /* Name */    return (c == 0x5f            || c == 0x2d            || c == 0x2e            || (c >= 0x30 && c <= 0x39)            /* CombiningChar */            || (c >= 0x0300 && c <= 0x0345)            || (c >= 0x0360 && c <= 0x0361)            || (c >= 0x0483 && c <= 0x0486)            || (c >= 0x0591 && c <= 0x05A1)            || (c >= 0x05A3 && c <= 0x05B9)            || (c >= 0x05BB && c <= 0x05BD)            || c == 0x05BF            || (c >= 0x05C1 && c <= 0x05C2)            || c == 0x05C4            || (c >= 0x064B && c <= 0x0652)            || c == 0x0670            || (c >= 0x06D6 && c <= 0x06DC)            || (c >= 0x06DD && c <= 0x06DF)            || (c >= 0x06E0 && c <= 0x06E4)            || (c >= 0x06E7 && c <= 0x06E8)            || (c >= 0x06EA && c <= 0x06ED)            || (c >= 0x0901 && c <= 0x0903)            || c == 0x093C            || (c >= 0x093E && c <= 0x094C)            || c == 0x094D            || (c >= 0x0951 && c <= 0x0954)            || (c >= 0x0962 && c <= 0x0963)            || (c >= 0x0981 && c <= 0x0983)            || c == 0x09BC            || c == 0x09BE            || c == 0x09BF            || (c >= 0x09C0 && c <= 0x09C4)            || (c >= 0x09C7 && c <= 0x09C8)            || (c >= 0x09CB && c <= 0x09CD)            || c == 0x09D7            || (c >= 0x09E2 && c <= 0x09E3)            || c == 0x0A02            || c == 0x0A3C            || c == 0x0A3E            || c == 0x0A3F            || (c >= 0x0A40 && c <= 0x0A42)            || (c >= 0x0A47 && c <= 0x0A48)            || (c >= 0x0A4B && c <= 0x0A4D)            || (c >= 0x0A70 && c <= 0x0A71)            || (c >= 0x0A81 && c <= 0x0A83)            || c == 0x0ABC            || (c >= 0x0ABE && c <= 0x0AC5)            || (c >= 0x0AC7 && c <= 0x0AC9)            || (c >= 0x0ACB && c <= 0x0ACD)            || (c >= 0x0B01 && c <= 0x0B03)            || c == 0x0B3C            || (c >= 0x0B3E && c <= 0x0B43)            || (c >= 0x0B47 && c <= 0x0B48)            || (c >= 0x0B4B && c <= 0x0B4D)            || (c >= 0x0B56 && c <= 0x0B57)            || (c >= 0x0B82 && c <= 0x0B83)            || (c >= 0x0BBE && c <= 0x0BC2)            || (c >= 0x0BC6 && c <= 0x0BC8)            || (c >= 0x0BCA && c <= 0x0BCD)            || c == 0x0BD7            || (c >= 0x0C01 && c <= 0x0C03)            || (c >= 0x0C3E && c <= 0x0C44)            || (c >= 0x0C46 && c <= 0x0C48)            || (c >= 0x0C4A && c <= 0x0C4D)            || (c >= 0x0C55 && c <= 0x0C56)            || (c >= 0x0C82 && c <= 0x0C83)            || (c >= 0x0CBE && c <= 0x0CC4)            || (c >= 0x0CC6 && c <= 0x0CC8)            || (c >= 0x0CCA && c <= 0x0CCD)            || (c >= 0x0CD5 && c <= 0x0CD6)            || (c >= 0x0D02 && c <= 0x0D03)            || (c >= 0x0D3E && c <= 0x0D43)            || (c >= 0x0D46 && c <= 0x0D48)            || (c >= 0x0D4A && c <= 0x0D4D)            || c == 0x0D57            || c == 0x0E31            || (c >= 0x0E34 && c <= 0x0E3A)            || (c >= 0x0E47 && c <= 0x0E4E)            || c == 0x0EB1            || (c >= 0x0EB4 && c <= 0x0EB9)            || (c >= 0x0EBB && c <= 0x0EBC)            || (c >= 0x0EC8 && c <= 0x0ECD)            || (c >= 0x0F18 && c <= 0x0F19)            || c == 0x0F35            || c == 0x0F37            || c == 0x0F39            || c == 0x0F3E            || c == 0x0F3F            || (c >= 0x0F71 && c <= 0x0F84)            || (c >= 0x0F86 && c <= 0x0F8B)            || (c >= 0x0F90 && c <= 0x0F95)            || c == 0x0F97            || (c >= 0x0F99 && c <= 0x0FAD)            || (c >= 0x0FB1 && c <= 0x0FB7)            || c == 0x0FB9            || (c >= 0x20D0 && c <= 0x20DC)            || c == 0x20E1            || (c >= 0x302A && c <= 0x302F)            || c == 0x3099            || c == 0x309A            /* Extender */            || c == 0x00B7            || c == 0x02D0            || c == 0x02D1            || c == 0x0387            || c == 0x0640            || c == 0x0E46            || c == 0x0EC6            || c == 0x3005            || (c >= 0x3031 && c <= 0x3035)            || (c >= 0x309D && c <= 0x309E)            || (c >= 0x30FC && c <= 0x30FE)            /* Name */            || Character.isLetter ((char) c));  }}

⌨️ 快捷键说明

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