| 178 |
#$self->{is_xml} (if XML) |
#$self->{is_xml} (if XML) |
| 179 |
|
|
| 180 |
$self->{state} = DATA_STATE; # MUST |
$self->{state} = DATA_STATE; # MUST |
| 181 |
#$self->{s_kwd}; # state keyword - initialized when used |
$self->{s_kwd} = ''; # state keyword |
| 182 |
#$self->{entity__value}; # initialized when used |
#$self->{entity__value}; # initialized when used |
| 183 |
#$self->{entity__match}; # initialized when used |
#$self->{entity__match}; # initialized when used |
| 184 |
$self->{content_model} = PCDATA_CONTENT_MODEL; # be |
$self->{content_model} = PCDATA_CONTENT_MODEL; # be |
| 362 |
} |
} |
| 363 |
} elsif ($self->{nc} == 0x002D) { # - |
} elsif ($self->{nc} == 0x002D) { # - |
| 364 |
if ($self->{content_model} & CM_LIMITED_MARKUP) { # RCDATA | CDATA |
if ($self->{content_model} & CM_LIMITED_MARKUP) { # RCDATA | CDATA |
| 365 |
$self->{s_kwd} .= '-'; |
if ($self->{s_kwd} eq '<!-') { |
|
|
|
|
if ($self->{s_kwd} eq '<!--') { |
|
| 366 |
|
|
| 367 |
$self->{escape} = 1; # unless $self->{escape}; |
$self->{escape} = 1; # unless $self->{escape}; |
| 368 |
$self->{s_kwd} = '--'; |
$self->{s_kwd} = '--'; |
| 369 |
# |
# |
| 370 |
} elsif ($self->{s_kwd} eq '---') { |
} elsif ($self->{s_kwd} eq '-') { |
| 371 |
|
|
| 372 |
$self->{s_kwd} = '--'; |
$self->{s_kwd} = '--'; |
| 373 |
# |
# |
| 374 |
|
} elsif ($self->{s_kwd} eq '<!' or $self->{s_kwd} eq '-') { |
| 375 |
|
|
| 376 |
|
$self->{s_kwd} .= '-'; |
| 377 |
|
# |
| 378 |
} else { |
} else { |
| 379 |
|
|
| 380 |
|
$self->{s_kwd} = '-'; |
| 381 |
# |
# |
| 382 |
} |
} |
| 383 |
} |
} |
| 423 |
if ($self->{s_kwd} eq '--') { |
if ($self->{s_kwd} eq '--') { |
| 424 |
|
|
| 425 |
delete $self->{escape}; |
delete $self->{escape}; |
| 426 |
|
# |
| 427 |
} else { |
} else { |
| 428 |
|
|
| 429 |
|
# |
| 430 |
} |
} |
| 431 |
|
} elsif ($self->{is_xml} and $self->{s_kwd} eq ']]') { |
| 432 |
|
|
| 433 |
|
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unmatched mse', ## TODO: type |
| 434 |
|
line => $self->{line_prev}, |
| 435 |
|
column => $self->{column_prev} - 1); |
| 436 |
|
# |
| 437 |
} else { |
} else { |
| 438 |
|
|
| 439 |
|
# |
| 440 |
} |
} |
| 441 |
|
|
| 442 |
$self->{s_kwd} = ''; |
$self->{s_kwd} = ''; |
| 443 |
# |
# |
| 444 |
|
} elsif ($self->{nc} == 0x005D) { # ] |
| 445 |
|
if ($self->{s_kwd} eq ']' or $self->{s_kwd} eq '') { |
| 446 |
|
|
| 447 |
|
$self->{s_kwd} .= ']'; |
| 448 |
|
} elsif ($self->{s_kwd} eq ']]') { |
| 449 |
|
|
| 450 |
|
# |
| 451 |
|
} else { |
| 452 |
|
|
| 453 |
|
$self->{s_kwd} = ''; |
| 454 |
|
} |
| 455 |
|
# |
| 456 |
} elsif ($self->{nc} == -1) { |
} elsif ($self->{nc} == -1) { |
| 457 |
|
|
| 458 |
$self->{s_kwd} = ''; |
$self->{s_kwd} = ''; |
| 470 |
data => chr $self->{nc}, |
data => chr $self->{nc}, |
| 471 |
line => $self->{line}, column => $self->{column}, |
line => $self->{line}, column => $self->{column}, |
| 472 |
}; |
}; |
| 473 |
if ($self->{read_until}->($token->{data}, q[-!<>&], |
if ($self->{read_until}->($token->{data}, q{-!<>&\]}, |
| 474 |
length $token->{data})) { |
length $token->{data})) { |
| 475 |
$self->{s_kwd} = ''; |
$self->{s_kwd} = ''; |
| 476 |
} |
} |
| 477 |
|
|
| 478 |
## Stay in the data state. |
## Stay in the data state. |
| 479 |
if ($self->{content_model} == PCDATA_CONTENT_MODEL) { |
if (not $self->{is_xml} and |
| 480 |
|
$self->{content_model} == PCDATA_CONTENT_MODEL) { |
| 481 |
|
|
| 482 |
$self->{state} = PCDATA_STATE; |
$self->{state} = PCDATA_STATE; |
| 483 |
} else { |
} else { |
| 525 |
|
|
| 526 |
## reconsume |
## reconsume |
| 527 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 528 |
|
$self->{s_kwd} = ''; |
| 529 |
return ({type => CHARACTER_TOKEN, data => '<', |
return ({type => CHARACTER_TOKEN, data => '<', |
| 530 |
line => $self->{line_prev}, |
line => $self->{line_prev}, |
| 531 |
column => $self->{column_prev}, |
column => $self->{column_prev}, |
| 567 |
|
|
| 568 |
$self->{ct} |
$self->{ct} |
| 569 |
= {type => START_TAG_TOKEN, |
= {type => START_TAG_TOKEN, |
| 570 |
tag_name => chr ($self->{nc} + 0x0020), |
tag_name => chr ($self->{nc} + ($self->{is_xml} ? 0 : 0x0020)), |
| 571 |
line => $self->{line_prev}, |
line => $self->{line_prev}, |
| 572 |
column => $self->{column_prev}}; |
column => $self->{column_prev}}; |
| 573 |
$self->{state} = TAG_NAME_STATE; |
$self->{state} = TAG_NAME_STATE; |
| 609 |
line => $self->{line_prev}, |
line => $self->{line_prev}, |
| 610 |
column => $self->{column_prev}); |
column => $self->{column_prev}); |
| 611 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 612 |
|
$self->{s_kwd} = ''; |
| 613 |
|
|
| 614 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 615 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 646 |
line => $self->{line_prev}, |
line => $self->{line_prev}, |
| 647 |
column => $self->{column_prev}); |
column => $self->{column_prev}); |
| 648 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 649 |
|
$self->{s_kwd} = ''; |
| 650 |
## reconsume |
## reconsume |
| 651 |
|
|
| 652 |
return ({type => CHARACTER_TOKEN, data => '<', |
return ({type => CHARACTER_TOKEN, data => '<', |
| 675 |
## NOTE: See <http://krijnhoetmer.nl/irc-logs/whatwg/20070626#l-564>. |
## NOTE: See <http://krijnhoetmer.nl/irc-logs/whatwg/20070626#l-564>. |
| 676 |
|
|
| 677 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 678 |
|
$self->{s_kwd} = ''; |
| 679 |
## Reconsume. |
## Reconsume. |
| 680 |
return ({type => CHARACTER_TOKEN, data => '</', |
return ({type => CHARACTER_TOKEN, data => '</', |
| 681 |
line => $l, column => $c, |
line => $l, column => $c, |
| 689 |
|
|
| 690 |
$self->{ct} |
$self->{ct} |
| 691 |
= {type => END_TAG_TOKEN, |
= {type => END_TAG_TOKEN, |
| 692 |
tag_name => chr ($self->{nc} + 0x0020), |
tag_name => chr ($self->{nc} + ($self->{is_xml} ? 0 : 0x0020)), |
| 693 |
line => $l, column => $c}; |
line => $l, column => $c}; |
| 694 |
$self->{state} = TAG_NAME_STATE; |
$self->{state} = TAG_NAME_STATE; |
| 695 |
|
|
| 729 |
line => $self->{line_prev}, ## "<" in "</>" |
line => $self->{line_prev}, ## "<" in "</>" |
| 730 |
column => $self->{column_prev} - 1); |
column => $self->{column_prev} - 1); |
| 731 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 732 |
|
$self->{s_kwd} = ''; |
| 733 |
|
|
| 734 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 735 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 745 |
} elsif ($self->{nc} == -1) { |
} elsif ($self->{nc} == -1) { |
| 746 |
|
|
| 747 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'bare etago'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'bare etago'); |
| 748 |
|
$self->{s_kwd} = ''; |
| 749 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 750 |
# reconsume |
# reconsume |
| 751 |
|
|
| 795 |
} else { |
} else { |
| 796 |
|
|
| 797 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 798 |
|
$self->{s_kwd} = ''; |
| 799 |
## Reconsume. |
## Reconsume. |
| 800 |
return ({type => CHARACTER_TOKEN, |
return ({type => CHARACTER_TOKEN, |
| 801 |
data => '</' . $self->{s_kwd}, |
data => '</' . $self->{s_kwd}, |
| 814 |
|
|
| 815 |
## Reconsume. |
## Reconsume. |
| 816 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 817 |
|
$self->{s_kwd} = ''; |
| 818 |
return ({type => CHARACTER_TOKEN, |
return ({type => CHARACTER_TOKEN, |
| 819 |
data => '</' . $self->{s_kwd}, |
data => '</' . $self->{s_kwd}, |
| 820 |
line => $self->{line_prev}, |
line => $self->{line_prev}, |
| 866 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 867 |
} |
} |
| 868 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 869 |
|
$self->{s_kwd} = ''; |
| 870 |
|
|
| 871 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 872 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 885 |
} elsif (0x0041 <= $self->{nc} and |
} elsif (0x0041 <= $self->{nc} and |
| 886 |
$self->{nc} <= 0x005A) { # A..Z |
$self->{nc} <= 0x005A) { # A..Z |
| 887 |
|
|
| 888 |
$self->{ct}->{tag_name} .= chr ($self->{nc} + 0x0020); |
$self->{ct}->{tag_name} |
| 889 |
|
.= chr ($self->{nc} + ($self->{is_xml} ? 0 : 0x0020)); |
| 890 |
# start tag or end tag |
# start tag or end tag |
| 891 |
## Stay in this state |
## Stay in this state |
| 892 |
|
|
| 919 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 920 |
} |
} |
| 921 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 922 |
|
$self->{s_kwd} = ''; |
| 923 |
# reconsume |
# reconsume |
| 924 |
|
|
| 925 |
return ($self->{ct}); # start tag or end tag |
return ($self->{ct}); # start tag or end tag |
| 990 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 991 |
} |
} |
| 992 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 993 |
|
$self->{s_kwd} = ''; |
| 994 |
|
|
| 995 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 996 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 1010 |
$self->{nc} <= 0x005A) { # A..Z |
$self->{nc} <= 0x005A) { # A..Z |
| 1011 |
|
|
| 1012 |
$self->{ca} |
$self->{ca} |
| 1013 |
= {name => chr ($self->{nc} + 0x0020), |
= {name => chr ($self->{nc} + ($self->{is_xml} ? 0 : 0x0020)), |
| 1014 |
value => '', |
value => '', |
| 1015 |
line => $self->{line}, column => $self->{column}}; |
line => $self->{line}, column => $self->{column}}; |
| 1016 |
$self->{state} = ATTRIBUTE_NAME_STATE; |
$self->{state} = ATTRIBUTE_NAME_STATE; |
| 1058 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1059 |
} |
} |
| 1060 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1061 |
|
$self->{s_kwd} = ''; |
| 1062 |
# reconsume |
# reconsume |
| 1063 |
|
|
| 1064 |
return ($self->{ct}); # start tag or end tag |
return ($self->{ct}); # start tag or end tag |
| 1154 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1155 |
} |
} |
| 1156 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1157 |
|
$self->{s_kwd} = ''; |
| 1158 |
|
|
| 1159 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 1160 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 1173 |
} elsif (0x0041 <= $self->{nc} and |
} elsif (0x0041 <= $self->{nc} and |
| 1174 |
$self->{nc} <= 0x005A) { # A..Z |
$self->{nc} <= 0x005A) { # A..Z |
| 1175 |
|
|
| 1176 |
$self->{ca}->{name} .= chr ($self->{nc} + 0x0020); |
$self->{ca}->{name} |
| 1177 |
|
.= chr ($self->{nc} + ($self->{is_xml} ? 0 : 0x0020)); |
| 1178 |
## Stay in the state |
## Stay in the state |
| 1179 |
|
|
| 1180 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 1223 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1224 |
} |
} |
| 1225 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1226 |
|
$self->{s_kwd} = ''; |
| 1227 |
# reconsume |
# reconsume |
| 1228 |
|
|
| 1229 |
return ($self->{ct}); # start tag or end tag |
return ($self->{ct}); # start tag or end tag |
| 1300 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1301 |
} |
} |
| 1302 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1303 |
|
$self->{s_kwd} = ''; |
| 1304 |
|
|
| 1305 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 1306 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 1320 |
$self->{nc} <= 0x005A) { # A..Z |
$self->{nc} <= 0x005A) { # A..Z |
| 1321 |
|
|
| 1322 |
$self->{ca} |
$self->{ca} |
| 1323 |
= {name => chr ($self->{nc} + 0x0020), |
= {name => chr ($self->{nc} + ($self->{is_xml} ? 0 : 0x0020)), |
| 1324 |
value => '', |
value => '', |
| 1325 |
line => $self->{line}, column => $self->{column}}; |
line => $self->{line}, column => $self->{column}}; |
| 1326 |
$self->{state} = ATTRIBUTE_NAME_STATE; |
$self->{state} = ATTRIBUTE_NAME_STATE; |
| 1368 |
} else { |
} else { |
| 1369 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1370 |
} |
} |
| 1371 |
|
$self->{s_kwd} = ''; |
| 1372 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1373 |
# reconsume |
# reconsume |
| 1374 |
|
|
| 1470 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1471 |
} |
} |
| 1472 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1473 |
|
$self->{s_kwd} = ''; |
| 1474 |
|
|
| 1475 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 1476 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 1504 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1505 |
} |
} |
| 1506 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1507 |
|
$self->{s_kwd} = ''; |
| 1508 |
## reconsume |
## reconsume |
| 1509 |
|
|
| 1510 |
return ($self->{ct}); # start tag or end tag |
return ($self->{ct}); # start tag or end tag |
| 1587 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1588 |
} |
} |
| 1589 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1590 |
|
$self->{s_kwd} = ''; |
| 1591 |
## reconsume |
## reconsume |
| 1592 |
|
|
| 1593 |
return ($self->{ct}); # start tag or end tag |
return ($self->{ct}); # start tag or end tag |
| 1669 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1670 |
} |
} |
| 1671 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1672 |
|
$self->{s_kwd} = ''; |
| 1673 |
## reconsume |
## reconsume |
| 1674 |
|
|
| 1675 |
return ($self->{ct}); # start tag or end tag |
return ($self->{ct}); # start tag or end tag |
| 1750 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1751 |
} |
} |
| 1752 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1753 |
|
$self->{s_kwd} = ''; |
| 1754 |
|
|
| 1755 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 1756 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 1784 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1785 |
} |
} |
| 1786 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1787 |
|
$self->{s_kwd} = ''; |
| 1788 |
## reconsume |
## reconsume |
| 1789 |
|
|
| 1790 |
return ($self->{ct}); # start tag or end tag |
return ($self->{ct}); # start tag or end tag |
| 1853 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1854 |
} |
} |
| 1855 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1856 |
|
$self->{s_kwd} = ''; |
| 1857 |
|
|
| 1858 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 1859 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 1901 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1902 |
} |
} |
| 1903 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1904 |
|
$self->{s_kwd} = ''; |
| 1905 |
## Reconsume. |
## Reconsume. |
| 1906 |
return ($self->{ct}); # start tag or end tag |
return ($self->{ct}); # start tag or end tag |
| 1907 |
redo A; |
redo A; |
| 1932 |
} |
} |
| 1933 |
|
|
| 1934 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1935 |
|
$self->{s_kwd} = ''; |
| 1936 |
|
|
| 1937 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 1938 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 1965 |
die "$0: $self->{ct}->{type}: Unknown token type"; |
die "$0: $self->{ct}->{type}: Unknown token type"; |
| 1966 |
} |
} |
| 1967 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1968 |
|
$self->{s_kwd} = ''; |
| 1969 |
## Reconsume. |
## Reconsume. |
| 1970 |
return ($self->{ct}); # start tag or end tag |
return ($self->{ct}); # start tag or end tag |
| 1971 |
redo A; |
redo A; |
| 1986 |
if ($self->{nc} == 0x003E) { # > |
if ($self->{nc} == 0x003E) { # > |
| 1987 |
|
|
| 1988 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 1989 |
|
$self->{s_kwd} = ''; |
| 1990 |
|
|
| 1991 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 1992 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 2004 |
} elsif ($self->{nc} == -1) { |
} elsif ($self->{nc} == -1) { |
| 2005 |
|
|
| 2006 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2007 |
|
$self->{s_kwd} = ''; |
| 2008 |
## reconsume |
## reconsume |
| 2009 |
|
|
| 2010 |
return ($self->{ct}); # comment |
return ($self->{ct}); # comment |
| 2279 |
|
|
| 2280 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'bogus comment'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'bogus comment'); |
| 2281 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2282 |
|
$self->{s_kwd} = ''; |
| 2283 |
|
|
| 2284 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 2285 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 2299 |
|
|
| 2300 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed comment'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed comment'); |
| 2301 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2302 |
|
$self->{s_kwd} = ''; |
| 2303 |
## reconsume |
## reconsume |
| 2304 |
|
|
| 2305 |
return ($self->{ct}); # comment |
return ($self->{ct}); # comment |
| 2343 |
|
|
| 2344 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'bogus comment'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'bogus comment'); |
| 2345 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2346 |
|
$self->{s_kwd} = ''; |
| 2347 |
|
|
| 2348 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 2349 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 2363 |
|
|
| 2364 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed comment'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed comment'); |
| 2365 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2366 |
|
$self->{s_kwd} = ''; |
| 2367 |
## reconsume |
## reconsume |
| 2368 |
|
|
| 2369 |
return ($self->{ct}); # comment |
return ($self->{ct}); # comment |
| 2407 |
|
|
| 2408 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed comment'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed comment'); |
| 2409 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2410 |
|
$self->{s_kwd} = ''; |
| 2411 |
## reconsume |
## reconsume |
| 2412 |
|
|
| 2413 |
return ($self->{ct}); # comment |
return ($self->{ct}); # comment |
| 2453 |
} elsif ($self->{nc} == -1) { |
} elsif ($self->{nc} == -1) { |
| 2454 |
|
|
| 2455 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed comment'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed comment'); |
| 2456 |
|
$self->{s_kwd} = ''; |
| 2457 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2458 |
|
$self->{s_kwd} = ''; |
| 2459 |
## reconsume |
## reconsume |
| 2460 |
|
|
| 2461 |
return ($self->{ct}); # comment |
return ($self->{ct}); # comment |
| 2482 |
if ($self->{nc} == 0x003E) { # > |
if ($self->{nc} == 0x003E) { # > |
| 2483 |
|
|
| 2484 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2485 |
|
$self->{s_kwd} = ''; |
| 2486 |
|
|
| 2487 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 2488 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 2521 |
|
|
| 2522 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed comment'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed comment'); |
| 2523 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2524 |
|
$self->{s_kwd} = ''; |
| 2525 |
## reconsume |
## reconsume |
| 2526 |
|
|
| 2527 |
return ($self->{ct}); # comment |
return ($self->{ct}); # comment |
| 2590 |
|
|
| 2591 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'no DOCTYPE name'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'no DOCTYPE name'); |
| 2592 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2593 |
|
$self->{s_kwd} = ''; |
| 2594 |
|
|
| 2595 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 2596 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 2610 |
|
|
| 2611 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'no DOCTYPE name'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'no DOCTYPE name'); |
| 2612 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2613 |
|
$self->{s_kwd} = ''; |
| 2614 |
## reconsume |
## reconsume |
| 2615 |
|
|
| 2616 |
return ($self->{ct}); # DOCTYPE (quirks) |
return ($self->{ct}); # DOCTYPE (quirks) |
| 2654 |
} elsif ($self->{nc} == 0x003E) { # > |
} elsif ($self->{nc} == 0x003E) { # > |
| 2655 |
|
|
| 2656 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2657 |
|
$self->{s_kwd} = ''; |
| 2658 |
|
|
| 2659 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 2660 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 2674 |
|
|
| 2675 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed DOCTYPE'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed DOCTYPE'); |
| 2676 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2677 |
|
$self->{s_kwd} = ''; |
| 2678 |
## reconsume |
## reconsume |
| 2679 |
|
|
| 2680 |
$self->{ct}->{quirks} = 1; |
$self->{ct}->{quirks} = 1; |
| 2718 |
} elsif ($self->{nc} == 0x003E) { # > |
} elsif ($self->{nc} == 0x003E) { # > |
| 2719 |
|
|
| 2720 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2721 |
|
$self->{s_kwd} = ''; |
| 2722 |
|
|
| 2723 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 2724 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 2738 |
|
|
| 2739 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed DOCTYPE'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed DOCTYPE'); |
| 2740 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2741 |
|
$self->{s_kwd} = ''; |
| 2742 |
## reconsume |
## reconsume |
| 2743 |
|
|
| 2744 |
$self->{ct}->{quirks} = 1; |
$self->{ct}->{quirks} = 1; |
| 2967 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'no PUBLIC literal'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'no PUBLIC literal'); |
| 2968 |
|
|
| 2969 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2970 |
|
$self->{s_kwd} = ''; |
| 2971 |
|
|
| 2972 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 2973 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 2989 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed DOCTYPE'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed DOCTYPE'); |
| 2990 |
|
|
| 2991 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 2992 |
|
$self->{s_kwd} = ''; |
| 2993 |
## reconsume |
## reconsume |
| 2994 |
|
|
| 2995 |
$self->{ct}->{quirks} = 1; |
$self->{ct}->{quirks} = 1; |
| 3036 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed PUBLIC literal'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed PUBLIC literal'); |
| 3037 |
|
|
| 3038 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3039 |
|
$self->{s_kwd} = ''; |
| 3040 |
|
|
| 3041 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 3042 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 3058 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed PUBLIC literal'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed PUBLIC literal'); |
| 3059 |
|
|
| 3060 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3061 |
|
$self->{s_kwd} = ''; |
| 3062 |
## reconsume |
## reconsume |
| 3063 |
|
|
| 3064 |
$self->{ct}->{quirks} = 1; |
$self->{ct}->{quirks} = 1; |
| 3107 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed PUBLIC literal'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed PUBLIC literal'); |
| 3108 |
|
|
| 3109 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3110 |
|
$self->{s_kwd} = ''; |
| 3111 |
|
|
| 3112 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 3113 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 3129 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed PUBLIC literal'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed PUBLIC literal'); |
| 3130 |
|
|
| 3131 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3132 |
|
$self->{s_kwd} = ''; |
| 3133 |
## reconsume |
## reconsume |
| 3134 |
|
|
| 3135 |
$self->{ct}->{quirks} = 1; |
$self->{ct}->{quirks} = 1; |
| 3208 |
} elsif ($self->{nc} == 0x003E) { # > |
} elsif ($self->{nc} == 0x003E) { # > |
| 3209 |
|
|
| 3210 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3211 |
|
$self->{s_kwd} = ''; |
| 3212 |
|
|
| 3213 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 3214 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 3229 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed DOCTYPE'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed DOCTYPE'); |
| 3230 |
|
|
| 3231 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3232 |
|
$self->{s_kwd} = ''; |
| 3233 |
## reconsume |
## reconsume |
| 3234 |
|
|
| 3235 |
$self->{ct}->{quirks} = 1; |
$self->{ct}->{quirks} = 1; |
| 3307 |
|
|
| 3308 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'no SYSTEM literal'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'no SYSTEM literal'); |
| 3309 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3310 |
|
$self->{s_kwd} = ''; |
| 3311 |
|
|
| 3312 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 3313 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 3329 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed DOCTYPE'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed DOCTYPE'); |
| 3330 |
|
|
| 3331 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3332 |
|
$self->{s_kwd} = ''; |
| 3333 |
## reconsume |
## reconsume |
| 3334 |
|
|
| 3335 |
$self->{ct}->{quirks} = 1; |
$self->{ct}->{quirks} = 1; |
| 3376 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed SYSTEM literal'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed SYSTEM literal'); |
| 3377 |
|
|
| 3378 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3379 |
|
$self->{s_kwd} = ''; |
| 3380 |
|
|
| 3381 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 3382 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 3398 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed SYSTEM literal'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed SYSTEM literal'); |
| 3399 |
|
|
| 3400 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3401 |
|
$self->{s_kwd} = ''; |
| 3402 |
## reconsume |
## reconsume |
| 3403 |
|
|
| 3404 |
$self->{ct}->{quirks} = 1; |
$self->{ct}->{quirks} = 1; |
| 3447 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed SYSTEM literal'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed SYSTEM literal'); |
| 3448 |
|
|
| 3449 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3450 |
|
$self->{s_kwd} = ''; |
| 3451 |
|
|
| 3452 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 3453 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 3469 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed SYSTEM literal'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed SYSTEM literal'); |
| 3470 |
|
|
| 3471 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3472 |
|
$self->{s_kwd} = ''; |
| 3473 |
## reconsume |
## reconsume |
| 3474 |
|
|
| 3475 |
$self->{ct}->{quirks} = 1; |
$self->{ct}->{quirks} = 1; |
| 3516 |
} elsif ($self->{nc} == 0x003E) { # > |
} elsif ($self->{nc} == 0x003E) { # > |
| 3517 |
|
|
| 3518 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3519 |
|
$self->{s_kwd} = ''; |
| 3520 |
|
|
| 3521 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 3522 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 3536 |
|
|
| 3537 |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed DOCTYPE'); |
$self->{parse_error}->(level => $self->{level}->{must}, type => 'unclosed DOCTYPE'); |
| 3538 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3539 |
|
$self->{s_kwd} = ''; |
| 3540 |
## reconsume |
## reconsume |
| 3541 |
|
|
| 3542 |
$self->{ct}->{quirks} = 1; |
$self->{ct}->{quirks} = 1; |
| 3566 |
if ($self->{nc} == 0x003E) { # > |
if ($self->{nc} == 0x003E) { # > |
| 3567 |
|
|
| 3568 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3569 |
|
$self->{s_kwd} = ''; |
| 3570 |
|
|
| 3571 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 3572 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 3585 |
} elsif ($self->{nc} == -1) { |
} elsif ($self->{nc} == -1) { |
| 3586 |
|
|
| 3587 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3588 |
|
$self->{s_kwd} = ''; |
| 3589 |
## reconsume |
## reconsume |
| 3590 |
|
|
| 3591 |
return ($self->{ct}); # DOCTYPE |
return ($self->{ct}); # DOCTYPE |
| 3632 |
redo A; |
redo A; |
| 3633 |
} elsif ($self->{nc} == -1) { |
} elsif ($self->{nc} == -1) { |
| 3634 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3635 |
|
$self->{s_kwd} = ''; |
| 3636 |
|
|
| 3637 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 3638 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 3701 |
} elsif ($self->{state} == CDATA_SECTION_MSE2_STATE) { |
} elsif ($self->{state} == CDATA_SECTION_MSE2_STATE) { |
| 3702 |
if ($self->{nc} == 0x003E) { # > |
if ($self->{nc} == 0x003E) { # > |
| 3703 |
$self->{state} = DATA_STATE; |
$self->{state} = DATA_STATE; |
| 3704 |
|
$self->{s_kwd} = ''; |
| 3705 |
|
|
| 3706 |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
if ($self->{char_buffer_pos} < length $self->{char_buffer}) { |
| 3707 |
$self->{line_prev} = $self->{line}; |
$self->{line_prev} = $self->{line}; |
| 3809 |
if ($self->{prev_state} == DATA_STATE) { |
if ($self->{prev_state} == DATA_STATE) { |
| 3810 |
|
|
| 3811 |
$self->{state} = $self->{prev_state}; |
$self->{state} = $self->{prev_state}; |
| 3812 |
|
$self->{s_kwd} = ''; |
| 3813 |
## Reconsume. |
## Reconsume. |
| 3814 |
return ({type => CHARACTER_TOKEN, data => '&', |
return ({type => CHARACTER_TOKEN, data => '&', |
| 3815 |
line => $self->{line_prev}, |
line => $self->{line_prev}, |
| 3820 |
|
|
| 3821 |
$self->{ca}->{value} .= '&'; |
$self->{ca}->{value} .= '&'; |
| 3822 |
$self->{state} = $self->{prev_state}; |
$self->{state} = $self->{prev_state}; |
| 3823 |
|
$self->{s_kwd} = ''; |
| 3824 |
## Reconsume. |
## Reconsume. |
| 3825 |
redo A; |
redo A; |
| 3826 |
} |
} |
| 3871 |
if ($self->{prev_state} == DATA_STATE) { |
if ($self->{prev_state} == DATA_STATE) { |
| 3872 |
|
|
| 3873 |
$self->{state} = $self->{prev_state}; |
$self->{state} = $self->{prev_state}; |
| 3874 |
|
$self->{s_kwd} = ''; |
| 3875 |
## Reconsume. |
## Reconsume. |
| 3876 |
return ({type => CHARACTER_TOKEN, |
return ({type => CHARACTER_TOKEN, |
| 3877 |
data => '&#', |
data => '&#', |
| 3883 |
|
|
| 3884 |
$self->{ca}->{value} .= '&#'; |
$self->{ca}->{value} .= '&#'; |
| 3885 |
$self->{state} = $self->{prev_state}; |
$self->{state} = $self->{prev_state}; |
| 3886 |
|
$self->{s_kwd} = ''; |
| 3887 |
## Reconsume. |
## Reconsume. |
| 3888 |
redo A; |
redo A; |
| 3889 |
} |
} |
| 3949 |
if ($self->{prev_state} == DATA_STATE) { |
if ($self->{prev_state} == DATA_STATE) { |
| 3950 |
|
|
| 3951 |
$self->{state} = $self->{prev_state}; |
$self->{state} = $self->{prev_state}; |
| 3952 |
|
$self->{s_kwd} = ''; |
| 3953 |
## Reconsume. |
## Reconsume. |
| 3954 |
return ({type => CHARACTER_TOKEN, data => chr $code, |
return ({type => CHARACTER_TOKEN, data => chr $code, |
| 3955 |
line => $l, column => $c, |
line => $l, column => $c, |
| 3960 |
$self->{ca}->{value} .= chr $code; |
$self->{ca}->{value} .= chr $code; |
| 3961 |
$self->{ca}->{has_reference} = 1; |
$self->{ca}->{has_reference} = 1; |
| 3962 |
$self->{state} = $self->{prev_state}; |
$self->{state} = $self->{prev_state}; |
| 3963 |
|
$self->{s_kwd} = ''; |
| 3964 |
## Reconsume. |
## Reconsume. |
| 3965 |
redo A; |
redo A; |
| 3966 |
} |
} |
| 3986 |
if ($self->{prev_state} == DATA_STATE) { |
if ($self->{prev_state} == DATA_STATE) { |
| 3987 |
|
|
| 3988 |
$self->{state} = $self->{prev_state}; |
$self->{state} = $self->{prev_state}; |
| 3989 |
|
$self->{s_kwd} = ''; |
| 3990 |
## Reconsume. |
## Reconsume. |
| 3991 |
return ({type => CHARACTER_TOKEN, |
return ({type => CHARACTER_TOKEN, |
| 3992 |
data => '&' . $self->{s_kwd}, |
data => '&' . $self->{s_kwd}, |
| 3998 |
|
|
| 3999 |
$self->{ca}->{value} .= '&' . $self->{s_kwd}; |
$self->{ca}->{value} .= '&' . $self->{s_kwd}; |
| 4000 |
$self->{state} = $self->{prev_state}; |
$self->{state} = $self->{prev_state}; |
| 4001 |
|
$self->{s_kwd} = ''; |
| 4002 |
## Reconsume. |
## Reconsume. |
| 4003 |
redo A; |
redo A; |
| 4004 |
} |
} |
| 4101 |
if ($self->{prev_state} == DATA_STATE) { |
if ($self->{prev_state} == DATA_STATE) { |
| 4102 |
|
|
| 4103 |
$self->{state} = $self->{prev_state}; |
$self->{state} = $self->{prev_state}; |
| 4104 |
|
$self->{s_kwd} = ''; |
| 4105 |
## Reconsume. |
## Reconsume. |
| 4106 |
return ({type => CHARACTER_TOKEN, data => chr $code, |
return ({type => CHARACTER_TOKEN, data => chr $code, |
| 4107 |
line => $l, column => $c, |
line => $l, column => $c, |
| 4112 |
$self->{ca}->{value} .= chr $code; |
$self->{ca}->{value} .= chr $code; |
| 4113 |
$self->{ca}->{has_reference} = 1; |
$self->{ca}->{has_reference} = 1; |
| 4114 |
$self->{state} = $self->{prev_state}; |
$self->{state} = $self->{prev_state}; |
| 4115 |
|
$self->{s_kwd} = ''; |
| 4116 |
## Reconsume. |
## Reconsume. |
| 4117 |
redo A; |
redo A; |
| 4118 |
} |
} |
| 4225 |
if ($self->{prev_state} == DATA_STATE) { |
if ($self->{prev_state} == DATA_STATE) { |
| 4226 |
|
|
| 4227 |
$self->{state} = $self->{prev_state}; |
$self->{state} = $self->{prev_state}; |
| 4228 |
|
$self->{s_kwd} = ''; |
| 4229 |
## Reconsume. |
## Reconsume. |
| 4230 |
return ({type => CHARACTER_TOKEN, |
return ({type => CHARACTER_TOKEN, |
| 4231 |
data => $data, |
data => $data, |
| 4238 |
$self->{ca}->{value} .= $data; |
$self->{ca}->{value} .= $data; |
| 4239 |
$self->{ca}->{has_reference} = 1 if $has_ref; |
$self->{ca}->{has_reference} = 1 if $has_ref; |
| 4240 |
$self->{state} = $self->{prev_state}; |
$self->{state} = $self->{prev_state}; |
| 4241 |
|
$self->{s_kwd} = ''; |
| 4242 |
## Reconsume. |
## Reconsume. |
| 4243 |
redo A; |
redo A; |
| 4244 |
} |
} |