private Token CloseTag() { Match('['); Match('/'); Mark(); while (IsTagNameChar()) { Consume(); } Token token = new Token(GetMark(), TokenEndTag); Match(']'); return token; }
private Token Attribute() { Match('='); while (IsInRange(WhitespaceChars)) { Consume(); } Token token; if (IsInRange(QuoteChars)) { Consume(); Mark(); while (!IsInRange(QuoteChars)) { Consume(); } token = new Token(GetMark(), TokenAttribute); Consume(); } else { Mark(); while (!IsInRange(WhitespaceChars) && LA(1) != ']' && LA(1) != char.MaxValue) { Consume(); } token = new Token(GetMark(), TokenAttribute); } while (IsInRange(WhitespaceChars)) { Consume(); } return token; }