void () { assert token() == XmlTokenType.XML_PI_START; final PsiBuilder.Marker pi = mark(); advance(); if (token() == XmlTokenType.XML_NAME || token() == XmlTokenType.XML_PI_TARGET) { advance(); } while (token() == XmlTokenType.XML_NAME) { advance(); if (token() == XmlTokenType.XML_EQ) { advance(); } else { error(XmlPsiBundle.message("xml.parsing.expected.attribute.eq.sign")); } parseAttributeValue(); } if (token() == XmlTokenType.XML_PI_END) { advance(); } else { error(XmlPsiBundle.message("xml.parsing.unterminated.processing.instruction")); } pi.done(XmlElementType.XML_PROCESSING_INSTRUCTION); }