@@ -63,7 +63,6 @@ var DATA_STATE = 'DATA_STATE',
6363 AFTER_ATTRIBUTE_VALUE_QUOTED_STATE = 'AFTER_ATTRIBUTE_VALUE_QUOTED_STATE' ,
6464 SELF_CLOSING_START_TAG_STATE = 'SELF_CLOSING_START_TAG_STATE' ,
6565 BOGUS_COMMENT_STATE = 'BOGUS_COMMENT_STATE' ,
66- BOGUS_COMMENT_STATE_CONTINUATION = 'BOGUS_COMMENT_STATE_CONTINUATION' ,
6766 MARKUP_DECLARATION_OPEN_STATE = 'MARKUP_DECLARATION_OPEN_STATE' ,
6867 COMMENT_START_STATE = 'COMMENT_START_STATE' ,
6968 COMMENT_START_DASH_STATE = 'COMMENT_START_DASH_STATE' ,
@@ -724,8 +723,10 @@ _[TAG_OPEN_STATE] = function tagOpenState(cp) {
724723 this . _reconsumeInState ( TAG_NAME_STATE ) ;
725724 }
726725
727- else if ( cp === $ . QUESTION_MARK )
726+ else if ( cp === $ . QUESTION_MARK ) {
727+ this . _createCommentToken ( ) ;
728728 this . _reconsumeInState ( BOGUS_COMMENT_STATE ) ;
729+ }
729730
730731 else {
731732 this . _emitChar ( '<' ) ;
@@ -751,8 +752,10 @@ _[END_TAG_OPEN_STATE] = function endTagOpenState(cp) {
751752 this . _emitChar ( '/' ) ;
752753 }
753754
754- else
755+ else {
756+ this . _createCommentToken ( ) ;
755757 this . _reconsumeInState ( BOGUS_COMMENT_STATE ) ;
758+ }
756759} ;
757760
758761
@@ -1554,38 +1557,22 @@ _[SELF_CLOSING_START_TAG_STATE] = function selfClosingStartTagState(cp) {
15541557
15551558//12.2.4.44 Bogus comment state
15561559//------------------------------------------------------------------
1557- _ [ BOGUS_COMMENT_STATE ] = function bogusCommentState ( ) {
1558- this . _createCommentToken ( ) ;
1559- this . _reconsumeInState ( BOGUS_COMMENT_STATE_CONTINUATION ) ;
1560- } ;
1561-
1562- //HACK: to support streaming and make BOGUS_COMMENT_STATE reentrant we've
1563- //introduced BOGUS_COMMENT_STATE_CONTINUATION state which will not produce
1564- //comment token on each call.
1565- _ [ BOGUS_COMMENT_STATE_CONTINUATION ] = function bogusCommentStateContinuation ( cp ) {
1566- while ( true ) {
1567- if ( cp === $ . GREATER_THAN_SIGN ) {
1568- this . state = DATA_STATE ;
1569- break ;
1570- }
1571-
1572- else if ( cp === $ . EOF ) {
1573- this . _reconsumeInState ( DATA_STATE ) ;
1574- break ;
1575- }
1576-
1577- else {
1578- this . currentToken . data += cp === $ . NULL ? UNICODE . REPLACEMENT_CHARACTER : toChar ( cp ) ;
1579-
1580- this . _hibernationSnapshot ( ) ;
1581- cp = this . _consume ( ) ;
1560+ _ [ BOGUS_COMMENT_STATE ] = function bogusCommentState ( cp ) {
1561+ if ( cp === $ . GREATER_THAN_SIGN ) {
1562+ this . state = DATA_STATE ;
1563+ this . _emitCurrentToken ( ) ;
1564+ }
15821565
1583- if ( this . _ensureHibernation ( ) )
1584- return ;
1585- }
1566+ else if ( cp === $ . EOF ) {
1567+ this . _reconsumeInState ( DATA_STATE ) ;
1568+ this . _emitCurrentToken ( ) ;
15861569 }
15871570
1588- this . _emitCurrentToken ( ) ;
1571+ else if ( cp === $ . NULL )
1572+ this . currentToken . data += UNICODE . REPLACEMENT_CHARACTER ;
1573+
1574+ else
1575+ this . currentToken . data += toChar ( cp ) ;
15891576} ;
15901577
15911578//12.2.4.45 Markup declaration open state
@@ -1609,8 +1596,10 @@ _[MARKUP_DECLARATION_OPEN_STATE] = function markupDeclarationOpenState(cp) {
16091596 else if ( cdataMatch )
16101597 this . state = CDATA_SECTION_STATE ;
16111598
1612- else
1599+ else {
1600+ this . _createCommentToken ( ) ;
16131601 this . _reconsumeInState ( BOGUS_COMMENT_STATE ) ;
1602+ }
16141603 }
16151604} ;
16161605
0 commit comments