From ab1df177d8f0a957773af3205c279e0f1e6dd2ac Mon Sep 17 00:00:00 2001 From: Luke Date: Thu, 11 Jun 2020 02:09:07 +0100 Subject: [PATCH] LibWeb: Fully implement all comment tokenizer states --- Libraries/LibWeb/Parser/HTMLTokenizer.cpp | 43 ++++++++++++++++------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/Libraries/LibWeb/Parser/HTMLTokenizer.cpp b/Libraries/LibWeb/Parser/HTMLTokenizer.cpp index bcdd5a87e2..8d05ce5bc8 100644 --- a/Libraries/LibWeb/Parser/HTMLTokenizer.cpp +++ b/Libraries/LibWeb/Parser/HTMLTokenizer.cpp @@ -172,7 +172,7 @@ do { \ will_switch_to(State::new_state); \ m_state = State::new_state; \ - EMIT_CHARACTER(codepoint); \ + EMIT_CHARACTER(codepoint); \ } while (0) #define SWITCH_TO_AND_EMIT_CURRENT_CHARACTER(new_state) \ @@ -1089,7 +1089,8 @@ _StartOfFunction: } ON('>') { - TODO(); + PARSE_ERROR(); + SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data); } ANYTHING_ELSE { @@ -1106,11 +1107,14 @@ _StartOfFunction: } ON('>') { - TODO(); + PARSE_ERROR(); + SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data); } ON_EOF { - TODO(); + PARSE_ERROR(); + m_queued_tokens.enqueue(m_current_token); + EMIT_EOF; } ANYTHING_ELSE { @@ -1133,11 +1137,15 @@ _StartOfFunction: } ON(0) { - TODO(); + PARSE_ERROR(); + m_current_token.m_comment_or_character.data.append_codepoint(0xFFFD); + continue; } ON_EOF { - TODO(); + PARSE_ERROR(); + m_queued_tokens.enqueue(m_current_token); + EMIT_EOF; } ANYTHING_ELSE { @@ -1164,7 +1172,9 @@ _StartOfFunction: } ON_EOF { - TODO(); + PARSE_ERROR(); + m_queued_tokens.enqueue(m_current_token); + EMIT_EOF; } ANYTHING_ELSE { @@ -1183,11 +1193,14 @@ _StartOfFunction: } ON('>') { - TODO(); + PARSE_ERROR(); + SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data); } ON_EOF { - TODO(); + PARSE_ERROR(); + m_queued_tokens.enqueue(m_current_token); + EMIT_EOF; } ANYTHING_ELSE { @@ -1205,7 +1218,9 @@ _StartOfFunction: } ON_EOF { - TODO(); + PARSE_ERROR(); + m_queued_tokens.enqueue(m_current_token); + EMIT_EOF; } ANYTHING_ELSE { @@ -1255,7 +1270,7 @@ _StartOfFunction: } ANYTHING_ELSE { - RECONSUME_IN(Comment); + RECONSUME_IN(CommentEndDash); } } END_STATE @@ -1264,7 +1279,11 @@ _StartOfFunction: { ON('>') { - SWITCH_TO(CommentEnd); + RECONSUME_IN(CommentEnd); + } + ON_EOF + { + RECONSUME_IN(CommentEnd); } ANYTHING_ELSE {