| 4230 |
while ($self->{open_elements}->[-1]->[1] ne 'table' and |
while ($self->{open_elements}->[-1]->[1] ne 'table' and |
| 4231 |
$self->{open_elements}->[-1]->[1] ne 'html') { |
$self->{open_elements}->[-1]->[1] ne 'html') { |
| 4232 |
!!!cp ('t201'); |
!!!cp ('t201'); |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
|
| 4233 |
pop @{$self->{open_elements}}; |
pop @{$self->{open_elements}}; |
| 4234 |
} |
} |
| 4235 |
|
|
| 4250 |
}->{$self->{open_elements}->[-1]->[1]}) { |
}->{$self->{open_elements}->[-1]->[1]}) { |
| 4251 |
!!!cp ('t203'); |
!!!cp ('t203'); |
| 4252 |
## ISSUE: Can this case be reached? |
## ISSUE: Can this case be reached? |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
|
| 4253 |
pop @{$self->{open_elements}}; |
pop @{$self->{open_elements}}; |
| 4254 |
} |
} |
| 4255 |
|
|
| 4273 |
tr => 1, html => 1, |
tr => 1, html => 1, |
| 4274 |
}->{$self->{open_elements}->[-1]->[1]}) { |
}->{$self->{open_elements}->[-1]->[1]}) { |
| 4275 |
!!!cp ('t207'); |
!!!cp ('t207'); |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
|
| 4276 |
pop @{$self->{open_elements}}; |
pop @{$self->{open_elements}}; |
| 4277 |
} |
} |
| 4278 |
|
|
| 4323 |
}->{$self->{open_elements}->[-1]->[1]}) { |
}->{$self->{open_elements}->[-1]->[1]}) { |
| 4324 |
!!!cp ('t211'); |
!!!cp ('t211'); |
| 4325 |
## ISSUE: Can this case be reached? |
## ISSUE: Can this case be reached? |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
|
| 4326 |
pop @{$self->{open_elements}}; |
pop @{$self->{open_elements}}; |
| 4327 |
} |
} |
| 4328 |
|
|
| 4371 |
}->{$self->{open_elements}->[-1]->[1]}) { |
}->{$self->{open_elements}->[-1]->[1]}) { |
| 4372 |
!!!cp ('t217'); |
!!!cp ('t217'); |
| 4373 |
## ISSUE: Can this state be reached? |
## ISSUE: Can this state be reached? |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
|
| 4374 |
pop @{$self->{open_elements}}; |
pop @{$self->{open_elements}}; |
| 4375 |
} |
} |
| 4376 |
|
|
| 4394 |
$self->{open_elements}->[-1]->[1] ne 'html') { |
$self->{open_elements}->[-1]->[1] ne 'html') { |
| 4395 |
!!!cp ('t219'); |
!!!cp ('t219'); |
| 4396 |
## ISSUE: Can this state be reached? |
## ISSUE: Can this state be reached? |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
|
| 4397 |
pop @{$self->{open_elements}}; |
pop @{$self->{open_elements}}; |
| 4398 |
} |
} |
| 4399 |
|
|
| 4411 |
$self->{open_elements}->[-1]->[1] ne 'html') { |
$self->{open_elements}->[-1]->[1] ne 'html') { |
| 4412 |
!!!cp ('t220'); |
!!!cp ('t220'); |
| 4413 |
## ISSUE: Can this state be reached? |
## ISSUE: Can this state be reached? |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
|
| 4414 |
pop @{$self->{open_elements}}; |
pop @{$self->{open_elements}}; |
| 4415 |
} |
} |
| 4416 |
|
|
| 4522 |
}->{$self->{open_elements}->[-1]->[1]}) { |
}->{$self->{open_elements}->[-1]->[1]}) { |
| 4523 |
!!!cp ('t231'); |
!!!cp ('t231'); |
| 4524 |
## ISSUE: Can this state be reached? |
## ISSUE: Can this state be reached? |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
|
| 4525 |
pop @{$self->{open_elements}}; |
pop @{$self->{open_elements}}; |
| 4526 |
} |
} |
| 4527 |
|
|
| 4562 |
}->{$self->{open_elements}->[-1]->[1]}) { |
}->{$self->{open_elements}->[-1]->[1]}) { |
| 4563 |
!!!cp ('t236'); |
!!!cp ('t236'); |
| 4564 |
## ISSUE: Can this state be reached? |
## ISSUE: Can this state be reached? |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
|
| 4565 |
pop @{$self->{open_elements}}; |
pop @{$self->{open_elements}}; |
| 4566 |
} |
} |
| 4567 |
|
|
| 4601 |
tbody => 1, tfoot => 1, thead => 1, html => 1, |
tbody => 1, tfoot => 1, thead => 1, html => 1, |
| 4602 |
}->{$self->{open_elements}->[-1]->[1]}) { |
}->{$self->{open_elements}->[-1]->[1]}) { |
| 4603 |
!!!cp ('t240'); |
!!!cp ('t240'); |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
|
| 4604 |
pop @{$self->{open_elements}}; |
pop @{$self->{open_elements}}; |
| 4605 |
} |
} |
| 4606 |
|
|
| 4616 |
## reprocess in the "in table" insertion mode... |
## reprocess in the "in table" insertion mode... |
| 4617 |
} |
} |
| 4618 |
|
|
| 4619 |
|
## NOTE: </table> in the "in table" insertion mode. |
| 4620 |
|
## When you edit the code fragment below, please ensure that |
| 4621 |
|
## the code for <table> in the "in table" insertion mode |
| 4622 |
|
## is synced with it. |
| 4623 |
|
|
| 4624 |
## have a table element in table scope |
## have a table element in table scope |
| 4625 |
my $i; |
my $i; |
| 4626 |
INSCOPE: for (reverse 0..$#{$self->{open_elements}}) { |
INSCOPE: for (reverse 0..$#{$self->{open_elements}}) { |
| 4643 |
!!!next-token; |
!!!next-token; |
| 4644 |
redo B; |
redo B; |
| 4645 |
} |
} |
|
|
|
|
## generate implied end tags |
|
|
while ({ |
|
|
dd => 1, dt => 1, li => 1, p => 1, |
|
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
|
!!!cp ('t244'); |
|
|
## ISSUE: Can this case be reached? |
|
|
pop @{$self->{open_elements}}; |
|
|
} |
|
|
|
|
|
if ($self->{open_elements}->[-1]->[1] ne 'table') { |
|
|
!!!cp ('t245'); |
|
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
|
|
} else { |
|
|
!!!cp ('t246'); |
|
|
} |
|
| 4646 |
|
|
| 4647 |
splice @{$self->{open_elements}}, $i; |
splice @{$self->{open_elements}}, $i; |
| 4648 |
|
|
| 4708 |
}->{$self->{open_elements}->[-1]->[1]}) { |
}->{$self->{open_elements}->[-1]->[1]}) { |
| 4709 |
!!!cp ('t253'); |
!!!cp ('t253'); |
| 4710 |
## ISSUE: Can this case be reached? |
## ISSUE: Can this case be reached? |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
|
| 4711 |
pop @{$self->{open_elements}}; |
pop @{$self->{open_elements}}; |
| 4712 |
} |
} |
| 4713 |
|
|
| 4745 |
}->{$self->{open_elements}->[-1]->[1]}) { |
}->{$self->{open_elements}->[-1]->[1]}) { |
| 4746 |
!!!cp ('t257'); |
!!!cp ('t257'); |
| 4747 |
## ISSUE: Can this case be reached? |
## ISSUE: Can this case be reached? |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
|
| 4748 |
pop @{$self->{open_elements}}; |
pop @{$self->{open_elements}}; |
| 4749 |
} |
} |
| 4750 |
|
|
| 6021 |
!!!next-token; |
!!!next-token; |
| 6022 |
redo B; |
redo B; |
| 6023 |
} elsif ($token->{tag_name} eq 'form') { |
} elsif ($token->{tag_name} eq 'form') { |
| 6024 |
|
undef $self->{form_element}; |
| 6025 |
|
|
| 6026 |
## has an element in scope |
## has an element in scope |
| 6027 |
|
my $i; |
| 6028 |
INSCOPE: for (reverse 0..$#{$self->{open_elements}}) { |
INSCOPE: for (reverse 0..$#{$self->{open_elements}}) { |
| 6029 |
my $node = $self->{open_elements}->[$_]; |
my $node = $self->{open_elements}->[$_]; |
| 6030 |
if ($node->[1] eq $token->{tag_name}) { |
if ($node->[1] eq $token->{tag_name}) { |
|
## generate implied end tags |
|
|
while ({ |
|
|
dd => 1, dt => 1, li => 1, p => 1, |
|
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
|
!!!cp ('t417'); |
|
|
pop @{$self->{open_elements}}; |
|
|
} |
|
|
|
|
| 6031 |
!!!cp ('t418'); |
!!!cp ('t418'); |
| 6032 |
|
$i = $_; |
| 6033 |
last INSCOPE; |
last INSCOPE; |
| 6034 |
} elsif ({ |
} elsif ({ |
| 6035 |
table => 1, caption => 1, td => 1, th => 1, |
table => 1, caption => 1, td => 1, th => 1, |
| 6039 |
last INSCOPE; |
last INSCOPE; |
| 6040 |
} |
} |
| 6041 |
} # INSCOPE |
} # INSCOPE |
| 6042 |
|
|
| 6043 |
if ($self->{open_elements}->[-1]->[1] eq $token->{tag_name}) { |
unless (defined $i) { # has an element in scope |
|
!!!cp ('t420'); |
|
|
pop @{$self->{open_elements}}; |
|
|
} else { |
|
| 6044 |
!!!cp ('t421'); |
!!!cp ('t421'); |
| 6045 |
!!!parse-error (type => 'unmatched end tag:'.$token->{tag_name}); |
!!!parse-error (type => 'unmatched end tag:'.$token->{tag_name}); |
| 6046 |
|
} else { |
| 6047 |
|
## Step 1. generate implied end tags |
| 6048 |
|
while ({ |
| 6049 |
|
dd => 1, dt => 1, li => 1, p => 1, |
| 6050 |
|
}->{$self->{open_elements}->[-1]->[1]}) { |
| 6051 |
|
!!!cp ('t417'); |
| 6052 |
|
pop @{$self->{open_elements}}; |
| 6053 |
|
} |
| 6054 |
|
|
| 6055 |
|
## Step 2. |
| 6056 |
|
if ($self->{open_elements}->[-1]->[1] ne $token->{tag_name}) { |
| 6057 |
|
!!!cp ('t417.1'); |
| 6058 |
|
!!!parse-error (type => 'not closed:'.$self->{open_elements}->[-1]->[1]); |
| 6059 |
|
} else { |
| 6060 |
|
!!!cp ('t420'); |
| 6061 |
|
} |
| 6062 |
|
|
| 6063 |
|
## Step 3. |
| 6064 |
|
splice @{$self->{open_elements}}, $i; |
| 6065 |
} |
} |
| 6066 |
|
|
|
undef $self->{form_element}; |
|
| 6067 |
!!!next-token; |
!!!next-token; |
| 6068 |
redo B; |
redo B; |
| 6069 |
} elsif ({ |
} elsif ({ |
| 6076 |
if ({ |
if ({ |
| 6077 |
h1 => 1, h2 => 1, h3 => 1, h4 => 1, h5 => 1, h6 => 1, |
h1 => 1, h2 => 1, h3 => 1, h4 => 1, h5 => 1, h6 => 1, |
| 6078 |
}->{$node->[1]}) { |
}->{$node->[1]}) { |
|
## generate implied end tags |
|
|
while ({ |
|
|
dd => 1, dt => 1, li => 1, p => 1, |
|
|
}->{$self->{open_elements}->[-1]->[1]}) { |
|
|
!!!cp ('t422'); |
|
|
pop @{$self->{open_elements}}; |
|
|
} |
|
|
|
|
| 6079 |
!!!cp ('t423'); |
!!!cp ('t423'); |
| 6080 |
$i = $_; |
$i = $_; |
| 6081 |
last INSCOPE; |
last INSCOPE; |
| 6087 |
last INSCOPE; |
last INSCOPE; |
| 6088 |
} |
} |
| 6089 |
} # INSCOPE |
} # INSCOPE |
| 6090 |
|
|
| 6091 |
if ($self->{open_elements}->[-1]->[1] ne $token->{tag_name}) { |
unless (defined $i) { # has an element in scope |
| 6092 |
!!!cp ('t425'); |
!!!cp ('t425.1'); |
| 6093 |
!!!parse-error (type => 'unmatched end tag:'.$token->{tag_name}); |
!!!parse-error (type => 'unmatched end tag:'.$token->{tag_name}); |
| 6094 |
} else { |
} else { |
| 6095 |
!!!cp ('t426'); |
## Step 1. generate implied end tags |
| 6096 |
|
while ({ |
| 6097 |
|
dd => 1, dt => 1, li => 1, p => 1, |
| 6098 |
|
}->{$self->{open_elements}->[-1]->[1]}) { |
| 6099 |
|
!!!cp ('t422'); |
| 6100 |
|
pop @{$self->{open_elements}}; |
| 6101 |
|
} |
| 6102 |
|
|
| 6103 |
|
## Step 2. |
| 6104 |
|
if ($self->{open_elements}->[-1]->[1] ne $token->{tag_name}) { |
| 6105 |
|
!!!cp ('t425'); |
| 6106 |
|
!!!parse-error (type => 'unmatched end tag:'.$token->{tag_name}); |
| 6107 |
|
} else { |
| 6108 |
|
!!!cp ('t426'); |
| 6109 |
|
} |
| 6110 |
|
|
| 6111 |
|
## Step 3. |
| 6112 |
|
splice @{$self->{open_elements}}, $i; |
| 6113 |
} |
} |
| 6114 |
|
|
|
splice @{$self->{open_elements}}, $i if defined $i; |
|
| 6115 |
!!!next-token; |
!!!next-token; |
| 6116 |
redo B; |
redo B; |
| 6117 |
} elsif ($token->{tag_name} eq 'p') { |
} elsif ($token->{tag_name} eq 'p') { |