| 1644 |
redo X; |
redo X; |
| 1645 |
} elsif (not defined $code) { # no hexadecimal digit |
} elsif (not defined $code) { # no hexadecimal digit |
| 1646 |
!!!parse-error (type => 'bare hcro'); |
!!!parse-error (type => 'bare hcro'); |
| 1647 |
|
!!!back-next-input-character ($x_char, $self->{next_input_character}); |
| 1648 |
$self->{next_input_character} = 0x0023; # # |
$self->{next_input_character} = 0x0023; # # |
|
!!!back-next-input-character ($x_char); |
|
| 1649 |
return undef; |
return undef; |
| 1650 |
} elsif ($self->{next_input_character} == 0x003B) { # ; |
} elsif ($self->{next_input_character} == 0x003B) { # ; |
| 1651 |
!!!next-input-character; |
!!!next-input-character; |
| 1717 |
!!!next-input-character; |
!!!next-input-character; |
| 1718 |
|
|
| 1719 |
my $value = $entity_name; |
my $value = $entity_name; |
| 1720 |
my $match; |
my $match = 0; |
| 1721 |
require Whatpm::_NamedEntityList; |
require Whatpm::_NamedEntityList; |
| 1722 |
our $EntityChar; |
our $EntityChar; |
| 1723 |
|
|
| 1737 |
$match = 1; |
$match = 1; |
| 1738 |
!!!next-input-character; |
!!!next-input-character; |
| 1739 |
last; |
last; |
| 1740 |
} elsif (not $in_attr) { |
} else { |
| 1741 |
$value = $EntityChar->{$entity_name}; |
$value = $EntityChar->{$entity_name}; |
| 1742 |
$match = -1; |
$match = -1; |
| 1743 |
} else { |
!!!next-input-character; |
|
$value .= chr $self->{next_input_character}; |
|
| 1744 |
} |
} |
| 1745 |
} else { |
} else { |
| 1746 |
$value .= chr $self->{next_input_character}; |
$value .= chr $self->{next_input_character}; |
| 1747 |
|
$match *= 2; |
| 1748 |
|
!!!next-input-character; |
| 1749 |
} |
} |
|
!!!next-input-character; |
|
| 1750 |
} |
} |
| 1751 |
|
|
| 1752 |
if ($match > 0) { |
if ($match > 0) { |
| 1753 |
return {type => 'character', data => $value}; |
return {type => 'character', data => $value}; |
| 1754 |
} elsif ($match < 0) { |
} elsif ($match < 0) { |
| 1755 |
!!!parse-error (type => 'no refc'); |
!!!parse-error (type => 'no refc'); |
| 1756 |
return {type => 'character', data => $value}; |
if ($in_attr and $match < -1) { |
| 1757 |
|
return {type => 'character', data => '&'.$entity_name}; |
| 1758 |
|
} else { |
| 1759 |
|
return {type => 'character', data => $value}; |
| 1760 |
|
} |
| 1761 |
} else { |
} else { |
| 1762 |
!!!parse-error (type => 'bare ero'); |
!!!parse-error (type => 'bare ero'); |
| 1763 |
## NOTE: No characters are consumed in the spec. |
## NOTE: No characters are consumed in the spec. |