diff --git a/HTMLKit/HTMLToken.h b/HTMLKit/HTMLToken.h
index 6687c5a..05fe800 100644
--- a/HTMLKit/HTMLToken.h
+++ b/HTMLKit/HTMLToken.h
@@ -8,6 +8,13 @@
#import
+@class HTMLDOCTYPEToken;
+@class HTMLStartTagToken;
+@class HTMLEndTagToken;
+@class HTMLCommentToken;
+@class HTMLCharacterToken;
+@class HTMLParseErrorToken;
+
NS_INLINE BOOL nilOrEqual(id first, id second) {
return (first == nil && second == nil) || ([first isEqual:second]);
}
@@ -35,4 +42,11 @@ typedef NS_ENUM(NSUInteger, HTMLTokenType)
- (BOOL)isEOFToken;
- (BOOL)isParseError;
+- (HTMLDOCTYPEToken *)asDoctypeToken;
+- (HTMLStartTagToken *)asStartTagToken;
+- (HTMLEndTagToken *)asEndTagToken;
+- (HTMLCommentToken *)asCommentToken;
+- (HTMLCharacterToken *)asCharacterToken;
+- (HTMLParseErrorToken *)asParseError;
+
@end
diff --git a/HTMLKit/HTMLToken.m b/HTMLKit/HTMLToken.m
index 878acfa..678c9bd 100644
--- a/HTMLKit/HTMLToken.m
+++ b/HTMLKit/HTMLToken.m
@@ -53,4 +53,34 @@
return _type == HTMLTokenTypeParseError;
}
+- (HTMLDOCTYPEToken *)asDoctypeToken
+{
+ return (HTMLDOCTYPEToken *)self;
+}
+
+- (HTMLStartTagToken *)asStartTagToken
+{
+ return (HTMLStartTagToken *)self;
+}
+
+- (HTMLEndTagToken *)asEndTagToken
+{
+ return (HTMLEndTagToken *)self;
+}
+
+- (HTMLCommentToken *)asCommentToken
+{
+ return (HTMLCommentToken *)self;
+}
+
+- (HTMLCharacterToken *)asCharacterToken
+{
+ return (HTMLCharacterToken *)self;
+}
+
+- (HTMLParseErrorToken *)asParseError
+{
+ return (HTMLParseErrorToken *)self;
+}
+
@end