HtmlToken ReadTagOpen ()
{
int nc = Read ();
char c;
if (nc == -1) {
TokenizerState = HtmlTokenizerState.EndOfFile;
var token = CreateDataToken ("<");
return token;
}
c = (char) nc;
// Note: we save the data in case we hit a parse error and have to emit a data token
data.Append ('<');
data.Append (c);
switch ((c = (char) nc)) {
case '!': TokenizerState = HtmlTokenizerState.MarkupDeclarationOpen; break;
case '?': TokenizerState = HtmlTokenizerState.BogusComment; break;
case '/': TokenizerState = HtmlTokenizerState.EndTagOpen; break;
default:
if (IsAsciiLetter (c)) {
TokenizerState = HtmlTokenizerState.TagName;
isEndTag = false;
name.Append (c);
} else {
TokenizerState = HtmlTokenizerState.Data;
}
break;
}
return null;
}