private Token ScanDoctype1()
{
switch (_chars[_curPos])
{
case 'P':
if (!EatPublicKeyword())
{
Throw(_curPos, SR.Xml_ExpectExternalOrClose);
}
_nextScaningFunction = ScanningFunction.Doctype2;
_scanningFunction = ScanningFunction.PublicId1;
return Token.PUBLIC;
case 'S':
if (!EatSystemKeyword())
{
Throw(_curPos, SR.Xml_ExpectExternalOrClose);
}
_nextScaningFunction = ScanningFunction.Doctype2;
_scanningFunction = ScanningFunction.SystemId;
return Token.SYSTEM;
case '[':
_curPos++;
_scanningFunction = ScanningFunction.SubsetContent;
return Token.LeftBracket;
case '>':
_curPos++;
_scanningFunction = ScanningFunction.SubsetContent;
return Token.GreaterThan;
default:
Throw(_curPos, SR.Xml_ExpectExternalOrClose);
return Token.None;
}
}