Parent Directory
|
Revision Log
|
Patch
| revision 1.74 by wakaba, Sun Mar 2 23:51:00 2008 UTC | revision 1.75 by wakaba, Mon Mar 3 00:13:22 2008 UTC | |
|---|---|---|
| # | Line 346 sub _initialize_tokenizer ($) { | Line 346 sub _initialize_tokenizer ($) { |
| 346 | ## ->{tag_name} (START_TAG_TOKEN, END_TAG_TOKEN) | ## ->{tag_name} (START_TAG_TOKEN, END_TAG_TOKEN) |
| 347 | ## ->{public_identifier} (DOCTYPE_TOKEN) | ## ->{public_identifier} (DOCTYPE_TOKEN) |
| 348 | ## ->{system_identifier} (DOCTYPE_TOKEN) | ## ->{system_identifier} (DOCTYPE_TOKEN) |
| 349 | ## ->{correct} == 1 or 0 (DOCTYPE_TOKEN) | ## ->{quirks} == 1 or 0 (DOCTYPE_TOKEN): "force-quirks" flag |
| 350 | ## ->{attributes} isa HASH (START_TAG_TOKEN, END_TAG_TOKEN) | ## ->{attributes} isa HASH (START_TAG_TOKEN, END_TAG_TOKEN) |
| 351 | ## ->{name} | ## ->{name} |
| 352 | ## ->{value} | ## ->{value} |
| # | Line 1447 sub _get_next_token ($) { | Line 1447 sub _get_next_token ($) { |
| 1447 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1448 | !!!next-input-character; | !!!next-input-character; |
| 1449 | ||
| 1450 | !!!emit ({type => DOCTYPE_TOKEN}); # incorrect | !!!emit ({type => DOCTYPE_TOKEN, quirks => 1}); |
| 1451 | ||
| 1452 | redo A; | redo A; |
| 1453 | } elsif ($self->{next_input_character} == -1) { | } elsif ($self->{next_input_character} == -1) { |
| # | Line 1455 sub _get_next_token ($) { | Line 1455 sub _get_next_token ($) { |
| 1455 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1456 | ## reconsume | ## reconsume |
| 1457 | ||
| 1458 | !!!emit ({type => DOCTYPE_TOKEN}); # incorrect | !!!emit ({type => DOCTYPE_TOKEN, quirks => 1}); |
| 1459 | ||
| 1460 | redo A; | redo A; |
| 1461 | } else { | } else { |
| 1462 | $self->{current_token} | $self->{current_token} |
| 1463 | = {type => DOCTYPE_TOKEN, | = {type => DOCTYPE_TOKEN, |
| 1464 | name => chr ($self->{next_input_character}), | name => chr ($self->{next_input_character}), |
| 1465 | correct => 1}; | #quirks => 0, |
| 1466 | }; | |
| 1467 | ## ISSUE: "Set the token's name name to the" in the spec | ## ISSUE: "Set the token's name name to the" in the spec |
| 1468 | $self->{state} = DOCTYPE_NAME_STATE; | $self->{state} = DOCTYPE_NAME_STATE; |
| 1469 | !!!next-input-character; | !!!next-input-character; |
| # | Line 1490 sub _get_next_token ($) { | Line 1491 sub _get_next_token ($) { |
| 1491 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1492 | ## reconsume | ## reconsume |
| 1493 | ||
| 1494 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1495 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1496 | ||
| 1497 | redo A; | redo A; |
| # | Line 1522 sub _get_next_token ($) { | Line 1523 sub _get_next_token ($) { |
| 1523 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1524 | ## reconsume | ## reconsume |
| 1525 | ||
| 1526 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1527 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1528 | ||
| 1529 | redo A; | redo A; |
| # | Line 1586 sub _get_next_token ($) { | Line 1587 sub _get_next_token ($) { |
| 1587 | } | } |
| 1588 | ||
| 1589 | !!!parse-error (type => 'string after DOCTYPE name'); | !!!parse-error (type => 'string after DOCTYPE name'); |
| 1590 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1591 | ||
| 1592 | $self->{state} = BOGUS_DOCTYPE_STATE; | $self->{state} = BOGUS_DOCTYPE_STATE; |
| 1593 | # next-input-character is already done | # next-input-character is already done |
| # | Line 1615 sub _get_next_token ($) { | Line 1616 sub _get_next_token ($) { |
| 1616 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1617 | !!!next-input-character; | !!!next-input-character; |
| 1618 | ||
| 1619 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1620 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1621 | ||
| 1622 | redo A; | redo A; |
| # | Line 1625 sub _get_next_token ($) { | Line 1626 sub _get_next_token ($) { |
| 1626 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1627 | ## reconsume | ## reconsume |
| 1628 | ||
| 1629 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1630 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1631 | ||
| 1632 | redo A; | redo A; |
| 1633 | } else { | } else { |
| 1634 | !!!parse-error (type => 'string after PUBLIC'); | !!!parse-error (type => 'string after PUBLIC'); |
| 1635 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1636 | ||
| 1637 | $self->{state} = BOGUS_DOCTYPE_STATE; | $self->{state} = BOGUS_DOCTYPE_STATE; |
| 1638 | !!!next-input-character; | !!!next-input-character; |
| # | Line 1648 sub _get_next_token ($) { | Line 1649 sub _get_next_token ($) { |
| 1649 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1650 | !!!next-input-character; | !!!next-input-character; |
| 1651 | ||
| 1652 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1653 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1654 | ||
| 1655 | redo A; | redo A; |
| # | Line 1658 sub _get_next_token ($) { | Line 1659 sub _get_next_token ($) { |
| 1659 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1660 | ## reconsume | ## reconsume |
| 1661 | ||
| 1662 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1663 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1664 | ||
| 1665 | redo A; | redo A; |
| # | Line 1680 sub _get_next_token ($) { | Line 1681 sub _get_next_token ($) { |
| 1681 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1682 | !!!next-input-character; | !!!next-input-character; |
| 1683 | ||
| 1684 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1685 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1686 | ||
| 1687 | redo A; | redo A; |
| # | Line 1690 sub _get_next_token ($) { | Line 1691 sub _get_next_token ($) { |
| 1691 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1692 | ## reconsume | ## reconsume |
| 1693 | ||
| 1694 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1695 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1696 | ||
| 1697 | redo A; | redo A; |
| # | Line 1732 sub _get_next_token ($) { | Line 1733 sub _get_next_token ($) { |
| 1733 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1734 | ## reconsume | ## reconsume |
| 1735 | ||
| 1736 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1737 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1738 | ||
| 1739 | redo A; | redo A; |
| 1740 | } else { | } else { |
| 1741 | !!!parse-error (type => 'string after PUBLIC literal'); | !!!parse-error (type => 'string after PUBLIC literal'); |
| 1742 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1743 | ||
| 1744 | $self->{state} = BOGUS_DOCTYPE_STATE; | $self->{state} = BOGUS_DOCTYPE_STATE; |
| 1745 | !!!next-input-character; | !!!next-input-character; |
| # | Line 1767 sub _get_next_token ($) { | Line 1768 sub _get_next_token ($) { |
| 1768 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1769 | !!!next-input-character; | !!!next-input-character; |
| 1770 | ||
| 1771 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1772 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1773 | ||
| 1774 | redo A; | redo A; |
| # | Line 1777 sub _get_next_token ($) { | Line 1778 sub _get_next_token ($) { |
| 1778 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1779 | ## reconsume | ## reconsume |
| 1780 | ||
| 1781 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1782 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1783 | ||
| 1784 | redo A; | redo A; |
| 1785 | } else { | } else { |
| 1786 | !!!parse-error (type => 'string after SYSTEM'); | !!!parse-error (type => 'string after SYSTEM'); |
| 1787 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1788 | ||
| 1789 | $self->{state} = BOGUS_DOCTYPE_STATE; | $self->{state} = BOGUS_DOCTYPE_STATE; |
| 1790 | !!!next-input-character; | !!!next-input-character; |
| # | Line 1800 sub _get_next_token ($) { | Line 1801 sub _get_next_token ($) { |
| 1801 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1802 | !!!next-input-character; | !!!next-input-character; |
| 1803 | ||
| 1804 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1805 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1806 | ||
| 1807 | redo A; | redo A; |
| # | Line 1810 sub _get_next_token ($) { | Line 1811 sub _get_next_token ($) { |
| 1811 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1812 | ## reconsume | ## reconsume |
| 1813 | ||
| 1814 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1815 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1816 | ||
| 1817 | redo A; | redo A; |
| # | Line 1832 sub _get_next_token ($) { | Line 1833 sub _get_next_token ($) { |
| 1833 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1834 | !!!next-input-character; | !!!next-input-character; |
| 1835 | ||
| 1836 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1837 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1838 | ||
| 1839 | redo A; | redo A; |
| # | Line 1842 sub _get_next_token ($) { | Line 1843 sub _get_next_token ($) { |
| 1843 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1844 | ## reconsume | ## reconsume |
| 1845 | ||
| 1846 | delete $self->{current_token}->{correct}; | $self->{current_token}->{quirks} = 1; |
| 1847 | !!!emit ($self->{current_token}); # DOCTYPE | !!!emit ($self->{current_token}); # DOCTYPE |
| 1848 | ||
| 1849 | redo A; | redo A; |
| # | Line 1874 sub _get_next_token ($) { | Line 1875 sub _get_next_token ($) { |
| 1875 | $self->{state} = DATA_STATE; | $self->{state} = DATA_STATE; |
| 1876 | ## reconsume | ## reconsume |
| 1877 |