354 |
$self->{next_input_character} == 0x0020 or # SP |
$self->{next_input_character} == 0x0020 or # SP |
355 |
$self->{next_input_character} == 0x003E or # > |
$self->{next_input_character} == 0x003E or # > |
356 |
$self->{next_input_character} == 0x002F or # / |
$self->{next_input_character} == 0x002F or # / |
|
$self->{next_input_character} == 0x003C or # < |
|
357 |
$self->{next_input_character} == -1) { |
$self->{next_input_character} == -1) { |
358 |
!!!parse-error (type => 'unmatched end tag'); |
!!!parse-error (type => 'unmatched end tag'); |
359 |
$self->{next_input_character} = shift @next_char; # reconsume |
$self->{next_input_character} = shift @next_char; # reconsume |
437 |
## Stay in this state |
## Stay in this state |
438 |
!!!next-input-character; |
!!!next-input-character; |
439 |
redo A; |
redo A; |
440 |
} elsif ($self->{next_input_character} == 0x003C or # < |
} elsif ($self->{next_input_character} == -1) { |
|
$self->{next_input_character} == -1) { |
|
441 |
!!!parse-error (type => 'unclosed tag'); |
!!!parse-error (type => 'unclosed tag'); |
442 |
if ($self->{current_token}->{type} eq 'start tag') { |
if ($self->{current_token}->{type} eq 'start tag') { |
443 |
$self->{last_emitted_start_tag_name} = $self->{current_token}->{tag_name}; |
$self->{last_emitted_start_tag_name} = $self->{current_token}->{tag_name}; |
523 |
## Stay in the state |
## Stay in the state |
524 |
# next-input-character is already done |
# next-input-character is already done |
525 |
redo A; |
redo A; |
526 |
} elsif ($self->{next_input_character} == 0x003C or # < |
} elsif ($self->{next_input_character} == -1) { |
|
$self->{next_input_character} == -1) { |
|
527 |
!!!parse-error (type => 'unclosed tag'); |
!!!parse-error (type => 'unclosed tag'); |
528 |
if ($self->{current_token}->{type} eq 'start tag') { |
if ($self->{current_token}->{type} eq 'start tag') { |
529 |
$self->{last_emitted_start_tag_name} = $self->{current_token}->{tag_name}; |
$self->{last_emitted_start_tag_name} = $self->{current_token}->{tag_name}; |
614 |
$self->{state} = 'before attribute name'; |
$self->{state} = 'before attribute name'; |
615 |
# next-input-character is already done |
# next-input-character is already done |
616 |
redo A; |
redo A; |
617 |
} elsif ($self->{next_input_character} == 0x003C or # < |
} elsif ($self->{next_input_character} == -1) { |
|
$self->{next_input_character} == -1) { |
|
618 |
!!!parse-error (type => 'unclosed tag'); |
!!!parse-error (type => 'unclosed tag'); |
619 |
$before_leave->(); |
$before_leave->(); |
620 |
if ($self->{current_token}->{type} eq 'start tag') { |
if ($self->{current_token}->{type} eq 'start tag') { |
691 |
$self->{state} = 'before attribute name'; |
$self->{state} = 'before attribute name'; |
692 |
# next-input-character is already done |
# next-input-character is already done |
693 |
redo A; |
redo A; |
694 |
} elsif ($self->{next_input_character} == 0x003C or # < |
} elsif ($self->{next_input_character} == -1) { |
|
$self->{next_input_character} == -1) { |
|
695 |
!!!parse-error (type => 'unclosed tag'); |
!!!parse-error (type => 'unclosed tag'); |
696 |
if ($self->{current_token}->{type} eq 'start tag') { |
if ($self->{current_token}->{type} eq 'start tag') { |
697 |
$self->{last_emitted_start_tag_name} = $self->{current_token}->{tag_name}; |
$self->{last_emitted_start_tag_name} = $self->{current_token}->{tag_name}; |
756 |
undef $self->{current_token}; |
undef $self->{current_token}; |
757 |
|
|
758 |
redo A; |
redo A; |
759 |
} elsif ($self->{next_input_character} == 0x003C or # < |
} elsif ($self->{next_input_character} == -1) { |
|
$self->{next_input_character} == -1) { |
|
760 |
!!!parse-error (type => 'unclosed tag'); |
!!!parse-error (type => 'unclosed tag'); |
761 |
if ($self->{current_token}->{type} eq 'start tag') { |
if ($self->{current_token}->{type} eq 'start tag') { |
762 |
$self->{last_emitted_start_tag_name} = $self->{current_token}->{tag_name}; |
$self->{last_emitted_start_tag_name} = $self->{current_token}->{tag_name}; |
883 |
undef $self->{current_token}; |
undef $self->{current_token}; |
884 |
|
|
885 |
redo A; |
redo A; |
886 |
} elsif ($self->{next_input_character} == 0x003C or # < |
} elsif ($self->{next_input_character} == -1) { |
|
$self->{next_input_character} == -1) { |
|
887 |
!!!parse-error (type => 'unclosed tag'); |
!!!parse-error (type => 'unclosed tag'); |
888 |
if ($self->{current_token}->{type} eq 'start tag') { |
if ($self->{current_token}->{type} eq 'start tag') { |
889 |
$self->{last_emitted_start_tag_name} = $self->{current_token}->{tag_name}; |
$self->{last_emitted_start_tag_name} = $self->{current_token}->{tag_name}; |