default :
case SLASH: value = next; optional(WS);   next = getTokenAhead(); if (bQUOTING.get(next.kind)) { hTag = next; error("The value without opening quote is closed with '" + next.getImage() + "'"); attrValue = value.getImage(); } else if (next.kind == NUMTOKEN || next.kind == SLASH)    { StringBuffer image = new StringBuffer(value.getImage()); while (next.kind == NUMTOKEN || next.kind == SLASH) { image.append(getNextToken().getImage()); next = getTokenAhead(); } attrValue = image.toString(); } else attrValue = value.getImage(); break; default:
  protected void readAttributes(String element)  {    Token name;    Token value;    Token next;    String attrValue;    attributes = new htmlAttributeSet();    optional(WS);    attributeReading:     while (getTokenAhead().kind == NUMTOKEN)      {        name = getNextToken();        optional(WS);        next = getTokenAhead();        if (next.kind == EQ)          {            mustBe(EQ);            optional(WS);            next = getNextToken();            switch (next.kind)              {                case QUOT :                  // read "quoted" attribute.                  buffer.setLength(0);                  readTillTokenE(QUOT);                  attrValue = buffer.toString();                  break;                case AP :                  // read 'quoted' attribute.                  buffer.setLength(0);                  readTillTokenE(AP);                  attrValue = buffer.toString();                  break;                // read unquoted attribute.                case NUMTOKEN :                  value = next;                  optional(WS);                  // Check maybe the opening quote is missing.                  next = getTokenAhead();                  if (bQUOTING.get(next.kind))                    {                      hTag = next;                      error("The value without opening quote is closed with '" +                            next.getImage() + "'"                           );                      attrValue = value.getImage();                    }                  else if (next.kind == SLASH)                    // The slash in this context is treated as the ordinary                    // character, not as a token. The slash may be part of                    // the unquoted URL.                    {                      StringBuffer image = new StringBuffer(value.getImage());                      while (next.kind == NUMTOKEN || next.kind == SLASH)                        {                          image.append(getNextToken().getImage());                          next = getTokenAhead();                        }                      attrValue = image.toString();                    }                  else                  attrValue = value.getImage();                  break;                default :                  break attributeReading;              }            attributes.addAttribute(name.getImage(), attrValue);            optional(WS);          }        else // The '=' is missing: attribute without value.          {            noValueAttribute(element, name.getImage());          }      }  }