int () { if (myBuilder.getTokenType() != XML_ATTRIBUTE_VALUE_START_DELIMITER) { return -1; } PsiBuilder.Marker value = myBuilder.mark(); addToken(); while (true) { if (myBuilder.getTokenType() == XML_ATTRIBUTE_VALUE_TOKEN) { addToken(); } else if (myBuilder.getTokenType() == XML_CHAR_ENTITY_REF) { addToken(); } else if (myBuilder.getTokenType() == XML_ENTITY_REF_TOKEN) { parseEntityRef(); } else { break; } } if (myBuilder.getTokenType() != XML_ATTRIBUTE_VALUE_END_DELIMITER) { value.done(XML_ATTRIBUTE_VALUE); return -1; } int tokenEnd = myBuilder.getCurrentOffset(); addToken(); value.done(XML_ATTRIBUTE_VALUE); return tokenEnd; }