@ -3,6 +3,8 @@ declare(strict_types=1);
namespace dW\HTML5;
class Tokenizer {
use ParseErrorEmitter;
public $state;
protected $data;
@ -148,10 +150,11 @@ class Tokenizer {
const CTYPE_ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
const CTYPE_UPPER = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
public function __construct(Data $data, OpenElementsStack $stack) {
public function __construct(Data $data, OpenElementsStack $stack, ParseError $errorHandler ) {
$this->state = self::DATA_STATE;
$this->data = $data;
$this->stack = $stack;
$this->errorHandler = $errorHandler;
}
public function createToken(): Token {
@ -369,9 +372,9 @@ class Tokenizer {
// Making errors more expressive.
if ($char !== '') {
ParseError::trigge r(ParseError::TAG_NAME_EXPECTED);
$this->erro r(ParseError::TAG_NAME_EXPECTED);
} else {
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
}
$this->state = self::BOGUS_COMMENT_STATE;
@ -383,9 +386,9 @@ class Tokenizer {
// Making errors more expressive.
if ($char !== '') {
ParseError::trigge r(ParseError::TAG_NAME_EXPECTED);
$this->erro r(ParseError::TAG_NAME_EXPECTED);
} else {
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
}
$this->state = self::DATA_STATE;
@ -423,7 +426,7 @@ class Tokenizer {
# ">" (U+003E)
elseif ($char === '>') {
# Parse error. Switch to the data state.
ParseError::trigge r(ParseError::TAG_NAME_EXPECTED);
$this->erro r(ParseError::TAG_NAME_EXPECTED);
$this->state = self::DATA_STATE;
}
# EOF
@ -431,7 +434,7 @@ class Tokenizer {
# Parse error. Switch to the data state. Emit a U+003C LESS-THAN SIGN character
# token and a U+002F SOLIDUS character token. Reconsume the EOF character.
// Making errors more expressive.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
return new CharacterToken('< /');
@ -439,7 +442,7 @@ class Tokenizer {
# Anything else
else {
# Parse error. Switch to the bogus comment state.
ParseError::trigge r(ParseError::TAG_NAME_EXPECTED);
$this->erro r(ParseError::TAG_NAME_EXPECTED);
$this->state = self::BOGUS_COMMENT_STATE;
}
@ -485,9 +488,9 @@ class Tokenizer {
// Making errors more expressive.
if ($char !== '') {
ParseError::trigge r(ParseError::TAG_NAME_EXPECTED, $char);
$this->erro r(ParseError::TAG_NAME_EXPECTED, $char);
} else {
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
}
$this->state = self::DATA_STATE;
@ -1012,7 +1015,7 @@ class Tokenizer {
elseif ($char === '') {
# Switch to the data state. Parse error. Reconsume the EOF character.
$this->state = self::DATA_STATE;
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->data->unconsume();
}
# Anything else
@ -1047,7 +1050,7 @@ class Tokenizer {
elseif ($char === '') {
# Switch to the data state. Parse error. Reconsume the EOF character.
$this->state = self::DATA_STATE;
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->data->unconsume();
}
# Anything else
@ -1087,7 +1090,7 @@ class Tokenizer {
elseif ($char === '') {
# Switch to the data state. Parse error. Reconsume the EOF character.
$this->state = self::DATA_STATE;
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->data->unconsume();
}
# Anything else
@ -1296,7 +1299,7 @@ class Tokenizer {
# EOF
elseif ($char === '') {
# Parse error. Switch to the data state. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
}
@ -1429,7 +1432,7 @@ class Tokenizer {
# EOF
elseif ($char === '') {
# Parse error. Switch to the data state. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
}
@ -1447,7 +1450,7 @@ class Tokenizer {
# attribute name state.
if ($char === '"' || $char === "'" || $char === '< ' || $char === '=') {
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
}
// Need to add the current attribute to the token, if necessary.
@ -1477,7 +1480,7 @@ class Tokenizer {
# EOF
if ($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ' || $char === '/' || $char === '>' || $char === '') {
if ($token->hasAttribute($attribute->name)) {
ParseError::trigge r(ParseError::ATTRIBUTE_EXISTS, $attribute->name);
$this->erro r(ParseError::ATTRIBUTE_EXISTS, $attribute->name);
}
# Reconsume in the after attribute name state.
@ -1487,7 +1490,7 @@ class Tokenizer {
# "=" (U+003D)
elseif ($char === '=') {
if ($token instanceof StartTagToken & & $token->hasAttribute($attribute->name)) {
ParseError::trigge r(ParseError::ATTRIBUTE_EXISTS, $attribute->name);
$this->erro r(ParseError::ATTRIBUTE_EXISTS, $attribute->name);
}
# Switch to the before attribute value state.
@ -1513,7 +1516,7 @@ class Tokenizer {
# Append the current input character to the current attribute's name.
if ($char === '"' || $char === "'" || $char === '< ' || $char === '=') {
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
}
// OPTIMIZATION: Will just check for alpha characters and strtolower the
@ -1588,7 +1591,7 @@ class Tokenizer {
# EOF
elseif ($char === '') {
# Parse error. Switch to the data state. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
}
@ -1606,7 +1609,7 @@ class Tokenizer {
# attribute name state.
if ($char === '"' || $char === "'" || $char === '< ' || $char === '=') {
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
}
// Need to add the current attribute to the token, if necessary.
@ -1654,7 +1657,7 @@ class Tokenizer {
# ">" (U+003E)
elseif ($char === '>') {
# Parse error. Switch to the data state. Emit the current tag token.
ParseError::trigge r(ParseError::UNEXPECTED_END_OF_TAG);
$this->erro r(ParseError::UNEXPECTED_END_OF_TAG);
$this->state = self::DATA_STATE;
// Need to add the current attribute to the token, if necessary.
@ -1668,7 +1671,7 @@ class Tokenizer {
# EOF
elseif ($char === '') {
# Parse error. Switch to the data state. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
}
@ -1684,7 +1687,7 @@ class Tokenizer {
# the attribute value (unquoted) state.
if ($char === '< ' || $char === '=' || $char === '`') {
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
}
$attribute->value .= $char;
@ -1723,7 +1726,7 @@ class Tokenizer {
# EOF
elseif ($char === '') {
# Parse error. Switch to the data state. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
}
@ -1768,7 +1771,7 @@ class Tokenizer {
# EOF
elseif ($char === '') {
# Parse error. Switch to the data state. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
}
@ -1832,7 +1835,7 @@ class Tokenizer {
}
# Parse error. Switch to the data state. Reconsume the EOF character.
elseif ($char === '') {
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
}
@ -1849,7 +1852,7 @@ class Tokenizer {
# Append the current input character to the current attribute's value.
if ($char === '"' || $char === "'" || $char === '< ' || $char === '=' || $char === '`') {
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
}
// OPTIMIZATION: Consume all characters that aren't listed above to prevent having
@ -1894,14 +1897,14 @@ class Tokenizer {
# EOF
elseif ($char === '') {
# Parse error. Switch to the data state. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
}
# Anything else
else {
# Parse error. Switch to the before attribute name state. Reconsume the character.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->state = self::BEFORE_ATTRIBUTE_NAME_STATE;
$this->data->unconsume();
}
@ -1932,14 +1935,14 @@ class Tokenizer {
# EOF
elseif ($char === '') {
# Parse error. Switch to the data state. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
}
# Anything else
else {
# Parse error. Switch to the before attribute name state. Reconsume the character.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->state = self::BEFORE_ATTRIBUTE_NAME_STATE;
$this->data->unconsume();
}
@ -2007,9 +2010,9 @@ class Tokenizer {
else {
$char = $this->data->consume();
if ($char !== '') {
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
} else {
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
}
$this->state = self::BOGUS_COMMENT_STATE;
@ -2032,7 +2035,7 @@ class Tokenizer {
# ">" (U+003E)
elseif ($char === '>') {
# Parse error. Switch to the data state. Emit the comment token.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->state = self::DATA_STATE;
return $token;
}
@ -2040,7 +2043,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Emit the comment token. Reconsume the EOF
# character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
return $token;
@ -2069,7 +2072,7 @@ class Tokenizer {
# ">" (U+003E)
elseif ($char === '>') {
# Parse error. Switch to the data state. Emit the comment token.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->state = self::DATA_STATE;
return $token;
}
@ -2077,7 +2080,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Emit the comment token. Reconsume the EOF
# character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
return $token;
@ -2107,7 +2110,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Emit the comment token. Reconsume the EOF
# character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
return $token;
@ -2138,7 +2141,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Emit the comment token. Reconsume the EOF
# character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
return $token;
@ -2168,7 +2171,7 @@ class Tokenizer {
# "!" (U+0021)
elseif ($char === '!') {
# Parse error. Switch to the comment end bang state.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '!');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '!');
$this->state = self::COMMENT_END_BANG_STATE;
}
# "-" (U+002D)
@ -2179,7 +2182,7 @@ class Tokenizer {
// here every single time.
$char .= $this->data->consumeWhile('-');
for ($i = 0; $i < strlen ( $ char ) ; $ i + + ) {
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '-');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '-');
}
$token->data .= $char;
@ -2188,7 +2191,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Emit the comment token. Reconsume the EOF
# character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
return $token;
@ -2197,7 +2200,7 @@ class Tokenizer {
else {
# Parse error. Append two "-" (U+002D) characters and the current input character
# to the comment token's data. Switch to the comment state.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
$token->data .= '--'.$char;
$this->state = self::COMMENT_STATE;
}
@ -2227,7 +2230,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Emit the comment token. Reconsume the EOF
# character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$this->data->unconsume();
return $token;
@ -2264,7 +2267,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Create a new DOCTYPE token. Set its
# force-quirks flag to on. Emit the token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token = new DOCTYPEToken();
$token->forceQuirks = true;
@ -2274,7 +2277,7 @@ class Tokenizer {
# Anything else
else {
# Parse error. Switch to the before DOCTYPE name state. Reconsume the character.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->state = self::DOCTYPE_NAME_STATE;
$this->data->unconsume();
}
@ -2306,7 +2309,7 @@ class Tokenizer {
elseif ($char === '>') {
# Parse error. Create a new DOCTYPE token. Set its force-quirks flag to on. Switch
# to the data state. Emit the token.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '>');
$token = new DOCTYPEToken();
$token->forceQuirks = true;
$this->state = self::DATA_STATE;
@ -2316,7 +2319,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Create a new DOCTYPE token. Set its
# force-quirks flag to on. Emit the token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token = new DOCTYPEToken();
$token->forceQuirks = true;
@ -2368,7 +2371,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Set the DOCTYPE token's force-quirks flag
# to on. Emit that DOCTYPE token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token->forceQuirks = true;
$this->data->unconsume();
@ -2409,7 +2412,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Set the DOCTYPE token's force-quirks flag
# to on. Emit that DOCTYPE token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token->forceQuirks = true;
$this->data->unconsume();
@ -2436,7 +2439,7 @@ class Tokenizer {
else {
// Need to unconsume what was consumed earlier.
$this->data->unconsume(5);
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char[0]);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char[0]);
$token->forceQuirks = true;
$this->state = self::BOGUS_DOCTYPE_STATE;
}
@ -2462,7 +2465,7 @@ class Tokenizer {
elseif ($char === '"') {
# Parse error. Set the DOCTYPE token's public identifier to the empty string (not
# missing), then switch to the DOCTYPE public identifier (double-quoted) state.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '"');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '"');
$token->public = '';
$this->state = self::DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;
}
@ -2470,7 +2473,7 @@ class Tokenizer {
elseif ($char === "'") {
# Parse error. Set the DOCTYPE token's public identifier to the empty string (not
# missing), then switch to the DOCTYPE public identifier (single-quoted) state.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, "'");
$this->erro r(ParseError::UNEXPECTED_CHARACTER, "'");
$token->public = '';
$this->state = self::DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;
}
@ -2478,7 +2481,7 @@ class Tokenizer {
elseif ($char === '>') {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the data
# state. Emit that DOCTYPE token.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '>');
$token->forceQuirks = true;
$this->state = self::DATA_STATE;
return $token;
@ -2487,7 +2490,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Set the DOCTYPE token's force-quirks flag
# to on. Emit that DOCTYPE token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token->forceQuirks = true;
$this->data->unconsume();
@ -2497,7 +2500,7 @@ class Tokenizer {
else {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the
# bogus DOCTYPE state.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
$token->forceQuirks = true;
$this->state = self::BOGUS_DOCTYPE_STATE;
}
@ -2535,7 +2538,7 @@ class Tokenizer {
elseif ($char === '>') {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the data
# state. Emit that DOCTYPE token.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '>');
$token->forceQuirks = true;
$this->state = self::DATA_STATE;
return $token;
@ -2544,7 +2547,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Set the DOCTYPE token's force-quirks flag
# to on. Emit that DOCTYPE token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token->forceQuirks = true;
$this->data->unconsume();
@ -2554,7 +2557,7 @@ class Tokenizer {
else {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the
# bogus DOCTYPE state.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
$token->forceQuirks = true;
$this->state = self::BOGUS_DOCTYPE_STATE;
}
@ -2576,7 +2579,7 @@ class Tokenizer {
elseif ($char === '>') {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the data
# state. Emit that DOCTYPE token.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '>');
$token->forceQuirks = true;
$this->state = self::DATA_STATE;
return $token;
@ -2585,7 +2588,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Set the DOCTYPE token's force-quirks flag
# to on. Emit that DOCTYPE token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token->forceQuirks = true;
$this->data->unconsume();
@ -2617,7 +2620,7 @@ class Tokenizer {
elseif ($char === '>') {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the data
# state. Emit that DOCTYPE token.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->state = self::DATA_STATE;
return $token;
}
@ -2625,7 +2628,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Set the DOCTYPE token's force-quirks flag
# to on. Emit that DOCTYPE token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token->forceQuirks = true;
$this->data->unconsume();
@ -2680,7 +2683,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Set the DOCTYPE token's force-quirks flag
# to on. Emit that DOCTYPE token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token->forceQuirks = true;
$this->data->unconsume();
@ -2690,7 +2693,7 @@ class Tokenizer {
else {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the
# bogus DOCTYPE state.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
$token->forceQuirks = true;
$this->state = self::BOGUS_DOCTYPE_STATE;
}
@ -2734,7 +2737,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Set the DOCTYPE token's force-quirks flag
# to on. Emit that DOCTYPE token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF, 'DOCTYPE public identifier');
$this->erro r(ParseError::UNEXPECTED_EOF, 'DOCTYPE public identifier');
$this->state = self::DATA_STATE;
$token->forceQuirks = true;
$this->data->unconsume();
@ -2744,7 +2747,7 @@ class Tokenizer {
else {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the
# bogus DOCTYPE state.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char, 'DOCTYPE public identifier');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char, 'DOCTYPE public identifier');
$token->forceQuirks = true;
$this->state = self::BOGUS_DOCTYPE_STATE;
}
@ -2769,7 +2772,7 @@ class Tokenizer {
elseif ($char === '"') {
# Parse error. Set the DOCTYPE token's system identifier to the empty string (not
# missing), then switch to the DOCTYPE system identifier (double-quoted) state.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '"');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '"');
$token->system = '';
$this->state = self::DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;
}
@ -2777,7 +2780,7 @@ class Tokenizer {
elseif ($char === "'") {
# Parse error. Set the DOCTYPE token's system identifier to the empty string (not
# missing), then switch to the DOCTYPE system identifier (single-quoted) state.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, "'");
$this->erro r(ParseError::UNEXPECTED_CHARACTER, "'");
$token->system = '';
$this->state = self::DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;
}
@ -2785,7 +2788,7 @@ class Tokenizer {
elseif ($char === '>') {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the data
# state. Emit that DOCTYPE token.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '>');
$token->forceQuirks = true;
$this->state = self::DATA_STATE;
return $token;
@ -2794,7 +2797,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Set the DOCTYPE token's force-quirks flag
# to on. Emit that DOCTYPE token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token->forceQuirks = true;
$this->data->unconsume();
@ -2804,7 +2807,7 @@ class Tokenizer {
else {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the
# bogus DOCTYPE state.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
$token->forceQuirks = true;
$this->state = self::BOGUS_DOCTYPE_STATE;
}
@ -2842,7 +2845,7 @@ class Tokenizer {
elseif ($char === '>') {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the data
# state. Emit that DOCTYPE token.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '>');
$token->forceQuirks = true;
$this->state = self::DATA_STATE;
return $token;
@ -2851,7 +2854,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Set the DOCTYPE token's force-quirks flag
# to on. Emit that DOCTYPE token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token->forceQuirks = true;
$this->data->unconsume();
@ -2861,7 +2864,7 @@ class Tokenizer {
else {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the
# bogus DOCTYPE state.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
$token->forceQuirks = true;
$this->state = self::BOGUS_DOCTYPE_STATE;
}
@ -2883,7 +2886,7 @@ class Tokenizer {
elseif ($char === '>') {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the data
# state. Emit that DOCTYPE token.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->state = self::DATA_STATE;
return $token;
}
@ -2891,7 +2894,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Set the DOCTYPE token's force-quirks flag
# to on. Emit that DOCTYPE token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token->forceQuirks = true;
$this->data->unconsume();
@ -2923,7 +2926,7 @@ class Tokenizer {
elseif ($char === '>') {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the data
# state. Emit that DOCTYPE token.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->erro r(ParseError::UNEXPECTED_CHARACTER, '>');
$this->state = self::DATA_STATE;
return $token;
}
@ -2931,7 +2934,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Set the DOCTYPE token's force-quirks flag
# to on. Emit that DOCTYPE token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token->forceQuirks = true;
$this->data->unconsume();
@ -2986,7 +2989,7 @@ class Tokenizer {
elseif ($char === '') {
# Parse error. Switch to the data state. Set the DOCTYPE token's force-quirks flag
# to on. Emit that DOCTYPE token. Reconsume the EOF character.
ParseError::trigge r(ParseError::UNEXPECTED_EOF);
$this->erro r(ParseError::UNEXPECTED_EOF);
$this->state = self::DATA_STATE;
$token->forceQuirks = true;
$this->data->unconsume();
@ -2996,7 +2999,7 @@ class Tokenizer {
else {
# Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the
# bogus DOCTYPE state.
ParseError::trigge r(ParseError::UNEXPECTED_CHARACTER, $char);
$this->erro r(ParseError::UNEXPECTED_CHARACTER, $char);
$token->forceQuirks = true;
$this->state = self::BOGUS_DOCTYPE_STATE;
}