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