| ... | ... | @@ -1696,216 +1696,215 @@ test "correctly parse pointer assignment" { |
| 1696 | 1696 | } |
| 1697 | 1697 | |
| 1698 | 1698 | test "tokenizer - number literals decimal" { |
| 1699 | | testTokenize("1", &[_]Token.Id{ .IntegerLiteral }); |
| 1700 | | testTokenize("2", &[_]Token.Id{ .IntegerLiteral }); |
| 1701 | | testTokenize("3", &[_]Token.Id{ .IntegerLiteral }); |
| 1702 | | testTokenize("4", &[_]Token.Id{ .IntegerLiteral }); |
| 1703 | | testTokenize("5", &[_]Token.Id{ .IntegerLiteral }); |
| 1704 | | testTokenize("6", &[_]Token.Id{ .IntegerLiteral }); |
| 1705 | | testTokenize("7", &[_]Token.Id{ .IntegerLiteral }); |
| 1706 | | testTokenize("8", &[_]Token.Id{ .IntegerLiteral }); |
| 1707 | | testTokenize("9", &[_]Token.Id{ .IntegerLiteral }); |
| 1708 | | testTokenize("0a", &[_]Token.Id{ .Invalid }); |
| 1709 | | testTokenize("9b", &[_]Token.Id{ .Invalid }); |
| 1710 | | testTokenize("1z", &[_]Token.Id{ .Invalid }); |
| 1711 | | testTokenize("1z_1", &[_]Token.Id{ .Invalid }); |
| 1712 | | testTokenize("9z3", &[_]Token.Id{ .Invalid }); |
| 1713 | | |
| 1714 | | testTokenize("0_0", &[_]Token.Id{ .IntegerLiteral }); |
| 1715 | | testTokenize("0001", &[_]Token.Id{ .IntegerLiteral }); |
| 1716 | | testTokenize("01234567890", &[_]Token.Id{ .IntegerLiteral }); |
| 1717 | | testTokenize("012_345_6789_0", &[_]Token.Id{ .IntegerLiteral }); |
| 1718 | | testTokenize("0_1_2_3_4_5_6_7_8_9_0", &[_]Token.Id{ .IntegerLiteral }); |
| 1719 | | |
| 1720 | | testTokenize("00_", &[_]Token.Id{ .Invalid }); |
| 1721 | | testTokenize("0_0_", &[_]Token.Id{ .Invalid }); |
| 1722 | | testTokenize("0__0", &[_]Token.Id{ .Invalid }); |
| 1723 | | testTokenize("0_0f", &[_]Token.Id{ .Invalid }); |
| 1724 | | testTokenize("0_0_f", &[_]Token.Id{ .Invalid }); |
| 1725 | | testTokenize("1_,", &[_]Token.Id{ .Invalid }); |
| 1726 | | |
| 1727 | | testTokenize("1.", &[_]Token.Id{ .FloatLiteral }); |
| 1728 | | testTokenize("0.0", &[_]Token.Id{ .FloatLiteral }); |
| 1729 | | testTokenize("1.0", &[_]Token.Id{ .FloatLiteral }); |
| 1730 | | testTokenize("10.0", &[_]Token.Id{ .FloatLiteral }); |
| 1731 | | testTokenize("1e0", &[_]Token.Id{ .FloatLiteral }); |
| 1732 | | testTokenize("1e100", &[_]Token.Id{ .FloatLiteral }); |
| 1733 | | testTokenize("1.e100", &[_]Token.Id{ .FloatLiteral }); |
| 1734 | | testTokenize("1.0e100", &[_]Token.Id{ .FloatLiteral }); |
| 1735 | | testTokenize("1.0e+100", &[_]Token.Id{ .FloatLiteral }); |
| 1736 | | testTokenize("1.0e-100", &[_]Token.Id{ .FloatLiteral }); |
| 1737 | | testTokenize("1_0_0_0.0_0_0_0_0_1e1_0_0_0", &[_]Token.Id{ .FloatLiteral }); |
| 1738 | | |
| 1739 | | testTokenize("1e", &[_]Token.Id{ .Invalid }); |
| 1740 | | testTokenize("1.0e1f0", &[_]Token.Id{ .Invalid }); |
| 1741 | | testTokenize("1.0p100", &[_]Token.Id{ .Invalid }); |
| 1699 | testTokenize("0", &[_]Token.Id{.IntegerLiteral}); |
| 1700 | testTokenize("1", &[_]Token.Id{.IntegerLiteral}); |
| 1701 | testTokenize("2", &[_]Token.Id{.IntegerLiteral}); |
| 1702 | testTokenize("3", &[_]Token.Id{.IntegerLiteral}); |
| 1703 | testTokenize("4", &[_]Token.Id{.IntegerLiteral}); |
| 1704 | testTokenize("5", &[_]Token.Id{.IntegerLiteral}); |
| 1705 | testTokenize("6", &[_]Token.Id{.IntegerLiteral}); |
| 1706 | testTokenize("7", &[_]Token.Id{.IntegerLiteral}); |
| 1707 | testTokenize("8", &[_]Token.Id{.IntegerLiteral}); |
| 1708 | testTokenize("9", &[_]Token.Id{.IntegerLiteral}); |
| 1709 | testTokenize("0a", &[_]Token.Id{.Invalid}); |
| 1710 | testTokenize("9b", &[_]Token.Id{.Invalid}); |
| 1711 | testTokenize("1z", &[_]Token.Id{.Invalid}); |
| 1712 | testTokenize("1z_1", &[_]Token.Id{.Invalid}); |
| 1713 | testTokenize("9z3", &[_]Token.Id{.Invalid}); |
| 1714 | |
| 1715 | testTokenize("0_0", &[_]Token.Id{.IntegerLiteral}); |
| 1716 | testTokenize("0001", &[_]Token.Id{.IntegerLiteral}); |
| 1717 | testTokenize("01234567890", &[_]Token.Id{.IntegerLiteral}); |
| 1718 | testTokenize("012_345_6789_0", &[_]Token.Id{.IntegerLiteral}); |
| 1719 | testTokenize("0_1_2_3_4_5_6_7_8_9_0", &[_]Token.Id{.IntegerLiteral}); |
| 1720 | |
| 1721 | testTokenize("00_", &[_]Token.Id{.Invalid}); |
| 1722 | testTokenize("0_0_", &[_]Token.Id{.Invalid}); |
| 1723 | testTokenize("0__0", &[_]Token.Id{.Invalid}); |
| 1724 | testTokenize("0_0f", &[_]Token.Id{.Invalid}); |
| 1725 | testTokenize("0_0_f", &[_]Token.Id{.Invalid}); |
| 1726 | testTokenize("1_,", &[_]Token.Id{.Invalid}); |
| 1727 | |
| 1728 | testTokenize("1.", &[_]Token.Id{.FloatLiteral}); |
| 1729 | testTokenize("0.0", &[_]Token.Id{.FloatLiteral}); |
| 1730 | testTokenize("1.0", &[_]Token.Id{.FloatLiteral}); |
| 1731 | testTokenize("10.0", &[_]Token.Id{.FloatLiteral}); |
| 1732 | testTokenize("1e0", &[_]Token.Id{.FloatLiteral}); |
| 1733 | testTokenize("1e100", &[_]Token.Id{.FloatLiteral}); |
| 1734 | testTokenize("1.e100", &[_]Token.Id{.FloatLiteral}); |
| 1735 | testTokenize("1.0e100", &[_]Token.Id{.FloatLiteral}); |
| 1736 | testTokenize("1.0e+100", &[_]Token.Id{.FloatLiteral}); |
| 1737 | testTokenize("1.0e-100", &[_]Token.Id{.FloatLiteral}); |
| 1738 | testTokenize("1_0_0_0.0_0_0_0_0_1e1_0_0_0", &[_]Token.Id{.FloatLiteral}); |
| 1739 | |
| 1740 | testTokenize("1e", &[_]Token.Id{.Invalid}); |
| 1741 | testTokenize("1.0e1f0", &[_]Token.Id{.Invalid}); |
| 1742 | testTokenize("1.0p100", &[_]Token.Id{.Invalid}); |
| 1742 | 1743 | testTokenize("1.0p-100", &[_]Token.Id{ .Invalid, .Minus, .IntegerLiteral }); |
| 1743 | | testTokenize("1.0p1f0", &[_]Token.Id{ .Invalid }); |
| 1744 | | testTokenize("1.0_,", &[_]Token.Id{ .Invalid }); |
| 1745 | | testTokenize("1.0e,", &[_]Token.Id{ .Invalid }); |
| 1744 | testTokenize("1.0p1f0", &[_]Token.Id{.Invalid}); |
| 1745 | testTokenize("1.0_,", &[_]Token.Id{.Invalid}); |
| 1746 | testTokenize("1.0e,", &[_]Token.Id{.Invalid}); |
| 1746 | 1747 | } |
| 1747 | 1748 | |
| 1748 | | |
| 1749 | 1749 | test "tokenizer - number literals binary" { |
| 1750 | | testTokenize("0b0", &[_]Token.Id{ .IntegerLiteral }); |
| 1751 | | testTokenize("0b1", &[_]Token.Id{ .IntegerLiteral }); |
| 1752 | | testTokenize("0b2", &[_]Token.Id{ .Invalid }); |
| 1753 | | testTokenize("0b3", &[_]Token.Id{ .Invalid }); |
| 1754 | | testTokenize("0b4", &[_]Token.Id{ .Invalid }); |
| 1755 | | testTokenize("0b5", &[_]Token.Id{ .Invalid }); |
| 1756 | | testTokenize("0b6", &[_]Token.Id{ .Invalid }); |
| 1757 | | testTokenize("0b7", &[_]Token.Id{ .Invalid }); |
| 1758 | | testTokenize("0b8", &[_]Token.Id{ .Invalid }); |
| 1759 | | testTokenize("0b9", &[_]Token.Id{ .Invalid }); |
| 1760 | | testTokenize("0ba", &[_]Token.Id{ .Invalid }); |
| 1761 | | testTokenize("0bb", &[_]Token.Id{ .Invalid }); |
| 1762 | | testTokenize("0bc", &[_]Token.Id{ .Invalid }); |
| 1763 | | testTokenize("0bd", &[_]Token.Id{ .Invalid }); |
| 1764 | | testTokenize("0be", &[_]Token.Id{ .Invalid }); |
| 1765 | | testTokenize("0bf", &[_]Token.Id{ .Invalid }); |
| 1766 | | testTokenize("0bz", &[_]Token.Id{ .Invalid }); |
| 1767 | | |
| 1768 | | testTokenize("0b0000_0000", &[_]Token.Id{ .IntegerLiteral }); |
| 1769 | | testTokenize("0b1111_1111", &[_]Token.Id{ .IntegerLiteral }); |
| 1770 | | testTokenize("0b10_10_10_10", &[_]Token.Id{ .IntegerLiteral }); |
| 1771 | | testTokenize("0b0_1_0_1_0_1_0_1", &[_]Token.Id{ .IntegerLiteral }); |
| 1750 | testTokenize("0b0", &[_]Token.Id{.IntegerLiteral}); |
| 1751 | testTokenize("0b1", &[_]Token.Id{.IntegerLiteral}); |
| 1752 | testTokenize("0b2", &[_]Token.Id{.Invalid}); |
| 1753 | testTokenize("0b3", &[_]Token.Id{.Invalid}); |
| 1754 | testTokenize("0b4", &[_]Token.Id{.Invalid}); |
| 1755 | testTokenize("0b5", &[_]Token.Id{.Invalid}); |
| 1756 | testTokenize("0b6", &[_]Token.Id{.Invalid}); |
| 1757 | testTokenize("0b7", &[_]Token.Id{.Invalid}); |
| 1758 | testTokenize("0b8", &[_]Token.Id{.Invalid}); |
| 1759 | testTokenize("0b9", &[_]Token.Id{.Invalid}); |
| 1760 | testTokenize("0ba", &[_]Token.Id{.Invalid}); |
| 1761 | testTokenize("0bb", &[_]Token.Id{.Invalid}); |
| 1762 | testTokenize("0bc", &[_]Token.Id{.Invalid}); |
| 1763 | testTokenize("0bd", &[_]Token.Id{.Invalid}); |
| 1764 | testTokenize("0be", &[_]Token.Id{.Invalid}); |
| 1765 | testTokenize("0bf", &[_]Token.Id{.Invalid}); |
| 1766 | testTokenize("0bz", &[_]Token.Id{.Invalid}); |
| 1767 | |
| 1768 | testTokenize("0b0000_0000", &[_]Token.Id{.IntegerLiteral}); |
| 1769 | testTokenize("0b1111_1111", &[_]Token.Id{.IntegerLiteral}); |
| 1770 | testTokenize("0b10_10_10_10", &[_]Token.Id{.IntegerLiteral}); |
| 1771 | testTokenize("0b0_1_0_1_0_1_0_1", &[_]Token.Id{.IntegerLiteral}); |
| 1772 | 1772 | testTokenize("0b1.", &[_]Token.Id{ .IntegerLiteral, .Period }); |
| 1773 | 1773 | testTokenize("0b1.0", &[_]Token.Id{ .IntegerLiteral, .Period, .IntegerLiteral }); |
| 1774 | 1774 | |
| 1775 | | testTokenize("0B0", &[_]Token.Id{ .Invalid }); |
| 1776 | | testTokenize("0b_", &[_]Token.Id{ .Invalid }); |
| 1777 | | testTokenize("0b_0", &[_]Token.Id{ .Invalid }); |
| 1778 | | testTokenize("0b1_", &[_]Token.Id{ .Invalid }); |
| 1779 | | testTokenize("0b0__1", &[_]Token.Id{ .Invalid }); |
| 1780 | | testTokenize("0b0_1_", &[_]Token.Id{ .Invalid }); |
| 1781 | | testTokenize("0b1e", &[_]Token.Id{ .Invalid }); |
| 1782 | | testTokenize("0b1p", &[_]Token.Id{ .Invalid }); |
| 1783 | | testTokenize("0b1e0", &[_]Token.Id{ .Invalid }); |
| 1784 | | testTokenize("0b1p0", &[_]Token.Id{ .Invalid }); |
| 1785 | | testTokenize("0b1_,", &[_]Token.Id{ .Invalid }); |
| 1775 | testTokenize("0B0", &[_]Token.Id{.Invalid}); |
| 1776 | testTokenize("0b_", &[_]Token.Id{.Invalid}); |
| 1777 | testTokenize("0b_0", &[_]Token.Id{.Invalid}); |
| 1778 | testTokenize("0b1_", &[_]Token.Id{.Invalid}); |
| 1779 | testTokenize("0b0__1", &[_]Token.Id{.Invalid}); |
| 1780 | testTokenize("0b0_1_", &[_]Token.Id{.Invalid}); |
| 1781 | testTokenize("0b1e", &[_]Token.Id{.Invalid}); |
| 1782 | testTokenize("0b1p", &[_]Token.Id{.Invalid}); |
| 1783 | testTokenize("0b1e0", &[_]Token.Id{.Invalid}); |
| 1784 | testTokenize("0b1p0", &[_]Token.Id{.Invalid}); |
| 1785 | testTokenize("0b1_,", &[_]Token.Id{.Invalid}); |
| 1786 | 1786 | } |
| 1787 | 1787 | |
| 1788 | 1788 | test "tokenizer - number literals octal" { |
| 1789 | | testTokenize("0o0", &[_]Token.Id{ .IntegerLiteral }); |
| 1790 | | testTokenize("0o1", &[_]Token.Id{ .IntegerLiteral }); |
| 1791 | | testTokenize("0o2", &[_]Token.Id{ .IntegerLiteral }); |
| 1792 | | testTokenize("0o3", &[_]Token.Id{ .IntegerLiteral }); |
| 1793 | | testTokenize("0o4", &[_]Token.Id{ .IntegerLiteral }); |
| 1794 | | testTokenize("0o5", &[_]Token.Id{ .IntegerLiteral }); |
| 1795 | | testTokenize("0o6", &[_]Token.Id{ .IntegerLiteral }); |
| 1796 | | testTokenize("0o7", &[_]Token.Id{ .IntegerLiteral }); |
| 1797 | | testTokenize("0o8", &[_]Token.Id{ .Invalid }); |
| 1798 | | testTokenize("0o9", &[_]Token.Id{ .Invalid }); |
| 1799 | | testTokenize("0oa", &[_]Token.Id{ .Invalid }); |
| 1800 | | testTokenize("0ob", &[_]Token.Id{ .Invalid }); |
| 1801 | | testTokenize("0oc", &[_]Token.Id{ .Invalid }); |
| 1802 | | testTokenize("0od", &[_]Token.Id{ .Invalid }); |
| 1803 | | testTokenize("0oe", &[_]Token.Id{ .Invalid }); |
| 1804 | | testTokenize("0of", &[_]Token.Id{ .Invalid }); |
| 1805 | | testTokenize("0oz", &[_]Token.Id{ .Invalid }); |
| 1806 | | |
| 1807 | | testTokenize("0o01234567", &[_]Token.Id{ .IntegerLiteral }); |
| 1808 | | testTokenize("0o0123_4567", &[_]Token.Id{ .IntegerLiteral }); |
| 1809 | | testTokenize("0o01_23_45_67", &[_]Token.Id{ .IntegerLiteral }); |
| 1810 | | testTokenize("0o0_1_2_3_4_5_6_7", &[_]Token.Id{ .IntegerLiteral }); |
| 1789 | testTokenize("0o0", &[_]Token.Id{.IntegerLiteral}); |
| 1790 | testTokenize("0o1", &[_]Token.Id{.IntegerLiteral}); |
| 1791 | testTokenize("0o2", &[_]Token.Id{.IntegerLiteral}); |
| 1792 | testTokenize("0o3", &[_]Token.Id{.IntegerLiteral}); |
| 1793 | testTokenize("0o4", &[_]Token.Id{.IntegerLiteral}); |
| 1794 | testTokenize("0o5", &[_]Token.Id{.IntegerLiteral}); |
| 1795 | testTokenize("0o6", &[_]Token.Id{.IntegerLiteral}); |
| 1796 | testTokenize("0o7", &[_]Token.Id{.IntegerLiteral}); |
| 1797 | testTokenize("0o8", &[_]Token.Id{.Invalid}); |
| 1798 | testTokenize("0o9", &[_]Token.Id{.Invalid}); |
| 1799 | testTokenize("0oa", &[_]Token.Id{.Invalid}); |
| 1800 | testTokenize("0ob", &[_]Token.Id{.Invalid}); |
| 1801 | testTokenize("0oc", &[_]Token.Id{.Invalid}); |
| 1802 | testTokenize("0od", &[_]Token.Id{.Invalid}); |
| 1803 | testTokenize("0oe", &[_]Token.Id{.Invalid}); |
| 1804 | testTokenize("0of", &[_]Token.Id{.Invalid}); |
| 1805 | testTokenize("0oz", &[_]Token.Id{.Invalid}); |
| 1806 | |
| 1807 | testTokenize("0o01234567", &[_]Token.Id{.IntegerLiteral}); |
| 1808 | testTokenize("0o0123_4567", &[_]Token.Id{.IntegerLiteral}); |
| 1809 | testTokenize("0o01_23_45_67", &[_]Token.Id{.IntegerLiteral}); |
| 1810 | testTokenize("0o0_1_2_3_4_5_6_7", &[_]Token.Id{.IntegerLiteral}); |
| 1811 | 1811 | testTokenize("0o7.", &[_]Token.Id{ .IntegerLiteral, .Period }); |
| 1812 | 1812 | testTokenize("0o7.0", &[_]Token.Id{ .IntegerLiteral, .Period, .IntegerLiteral }); |
| 1813 | 1813 | |
| 1814 | | testTokenize("0O0", &[_]Token.Id{ .Invalid }); |
| 1815 | | testTokenize("0o_", &[_]Token.Id{ .Invalid }); |
| 1816 | | testTokenize("0o_0", &[_]Token.Id{ .Invalid }); |
| 1817 | | testTokenize("0o1_", &[_]Token.Id{ .Invalid }); |
| 1818 | | testTokenize("0o0__1", &[_]Token.Id{ .Invalid }); |
| 1819 | | testTokenize("0o0_1_", &[_]Token.Id{ .Invalid }); |
| 1820 | | testTokenize("0o1e", &[_]Token.Id{ .Invalid }); |
| 1821 | | testTokenize("0o1p", &[_]Token.Id{ .Invalid }); |
| 1822 | | testTokenize("0o1e0", &[_]Token.Id{ .Invalid }); |
| 1823 | | testTokenize("0o1p0", &[_]Token.Id{ .Invalid }); |
| 1824 | | testTokenize("0o_,", &[_]Token.Id{ .Invalid }); |
| 1814 | testTokenize("0O0", &[_]Token.Id{.Invalid}); |
| 1815 | testTokenize("0o_", &[_]Token.Id{.Invalid}); |
| 1816 | testTokenize("0o_0", &[_]Token.Id{.Invalid}); |
| 1817 | testTokenize("0o1_", &[_]Token.Id{.Invalid}); |
| 1818 | testTokenize("0o0__1", &[_]Token.Id{.Invalid}); |
| 1819 | testTokenize("0o0_1_", &[_]Token.Id{.Invalid}); |
| 1820 | testTokenize("0o1e", &[_]Token.Id{.Invalid}); |
| 1821 | testTokenize("0o1p", &[_]Token.Id{.Invalid}); |
| 1822 | testTokenize("0o1e0", &[_]Token.Id{.Invalid}); |
| 1823 | testTokenize("0o1p0", &[_]Token.Id{.Invalid}); |
| 1824 | testTokenize("0o_,", &[_]Token.Id{.Invalid}); |
| 1825 | 1825 | } |
| 1826 | 1826 | |
| 1827 | 1827 | test "tokenizer - number literals hexadeciaml" { |
| 1828 | | testTokenize("0x0", &[_]Token.Id{ .IntegerLiteral }); |
| 1829 | | testTokenize("0x1", &[_]Token.Id{ .IntegerLiteral }); |
| 1830 | | testTokenize("0x2", &[_]Token.Id{ .IntegerLiteral }); |
| 1831 | | testTokenize("0x3", &[_]Token.Id{ .IntegerLiteral }); |
| 1832 | | testTokenize("0x4", &[_]Token.Id{ .IntegerLiteral }); |
| 1833 | | testTokenize("0x5", &[_]Token.Id{ .IntegerLiteral }); |
| 1834 | | testTokenize("0x6", &[_]Token.Id{ .IntegerLiteral }); |
| 1835 | | testTokenize("0x7", &[_]Token.Id{ .IntegerLiteral }); |
| 1836 | | testTokenize("0x8", &[_]Token.Id{ .IntegerLiteral }); |
| 1837 | | testTokenize("0x9", &[_]Token.Id{ .IntegerLiteral }); |
| 1838 | | testTokenize("0xa", &[_]Token.Id{ .IntegerLiteral }); |
| 1839 | | testTokenize("0xb", &[_]Token.Id{ .IntegerLiteral }); |
| 1840 | | testTokenize("0xc", &[_]Token.Id{ .IntegerLiteral }); |
| 1841 | | testTokenize("0xd", &[_]Token.Id{ .IntegerLiteral }); |
| 1842 | | testTokenize("0xe", &[_]Token.Id{ .IntegerLiteral }); |
| 1843 | | testTokenize("0xf", &[_]Token.Id{ .IntegerLiteral }); |
| 1844 | | testTokenize("0xA", &[_]Token.Id{ .IntegerLiteral }); |
| 1845 | | testTokenize("0xB", &[_]Token.Id{ .IntegerLiteral }); |
| 1846 | | testTokenize("0xC", &[_]Token.Id{ .IntegerLiteral }); |
| 1847 | | testTokenize("0xD", &[_]Token.Id{ .IntegerLiteral }); |
| 1848 | | testTokenize("0xE", &[_]Token.Id{ .IntegerLiteral }); |
| 1849 | | testTokenize("0xF", &[_]Token.Id{ .IntegerLiteral }); |
| 1850 | | testTokenize("0x0z", &[_]Token.Id{ .Invalid }); |
| 1851 | | testTokenize("0xz", &[_]Token.Id{ .Invalid }); |
| 1852 | | |
| 1853 | | testTokenize("0x0123456789ABCDEF", &[_]Token.Id{ .IntegerLiteral }); |
| 1854 | | testTokenize("0x0123_4567_89AB_CDEF", &[_]Token.Id{ .IntegerLiteral }); |
| 1855 | | testTokenize("0x01_23_45_67_89AB_CDE_F", &[_]Token.Id{ .IntegerLiteral }); |
| 1856 | | testTokenize("0x0_1_2_3_4_5_6_7_8_9_A_B_C_D_E_F", &[_]Token.Id{ .IntegerLiteral }); |
| 1857 | | |
| 1858 | | testTokenize("0X0", &[_]Token.Id{ .Invalid }); |
| 1859 | | testTokenize("0x_", &[_]Token.Id{ .Invalid }); |
| 1860 | | testTokenize("0x_1", &[_]Token.Id{ .Invalid }); |
| 1861 | | testTokenize("0x1_", &[_]Token.Id{ .Invalid }); |
| 1862 | | testTokenize("0x0__1", &[_]Token.Id{ .Invalid }); |
| 1863 | | testTokenize("0x0_1_", &[_]Token.Id{ .Invalid }); |
| 1864 | | testTokenize("0x_,", &[_]Token.Id{ .Invalid }); |
| 1865 | | |
| 1866 | | testTokenize("0x1.", &[_]Token.Id{ .FloatLiteral }); |
| 1867 | | testTokenize("0x1.0", &[_]Token.Id{ .FloatLiteral }); |
| 1868 | | testTokenize("0xF.", &[_]Token.Id{ .FloatLiteral }); |
| 1869 | | testTokenize("0xF.0", &[_]Token.Id{ .FloatLiteral }); |
| 1870 | | testTokenize("0xF.F", &[_]Token.Id{ .FloatLiteral }); |
| 1871 | | testTokenize("0xF.Fp0", &[_]Token.Id{ .FloatLiteral }); |
| 1872 | | testTokenize("0xF.FP0", &[_]Token.Id{ .FloatLiteral }); |
| 1873 | | testTokenize("0x1p0", &[_]Token.Id{ .FloatLiteral }); |
| 1874 | | testTokenize("0xfp0", &[_]Token.Id{ .FloatLiteral }); |
| 1875 | | |
| 1876 | | testTokenize("0x0123456.789ABCDEF", &[_]Token.Id{ .FloatLiteral }); |
| 1877 | | testTokenize("0x0_123_456.789_ABC_DEF", &[_]Token.Id{ .FloatLiteral }); |
| 1878 | | testTokenize("0x0_1_2_3_4_5_6.7_8_9_A_B_C_D_E_F", &[_]Token.Id{ .FloatLiteral }); |
| 1879 | | testTokenize("0x0.0p0", &[_]Token.Id{ .FloatLiteral }); |
| 1880 | | testTokenize("0xff.ffp10", &[_]Token.Id{ .FloatLiteral }); |
| 1881 | | testTokenize("0xff.ffP10", &[_]Token.Id{ .FloatLiteral }); |
| 1882 | | testTokenize("0xff.p10", &[_]Token.Id{ .FloatLiteral }); |
| 1883 | | testTokenize("0xffp10", &[_]Token.Id{ .FloatLiteral }); |
| 1884 | | testTokenize("0xff_ff.ff_ffp1_0_0_0", &[_]Token.Id{ .FloatLiteral }); |
| 1885 | | testTokenize("0xf_f_f_f.f_f_f_fp+1_000", &[_]Token.Id{ .FloatLiteral }); |
| 1886 | | testTokenize("0xf_f_f_f.f_f_f_fp-1_00_0", &[_]Token.Id{ .FloatLiteral }); |
| 1887 | | |
| 1888 | | testTokenize("0x1e", &[_]Token.Id{ .IntegerLiteral }); |
| 1889 | | testTokenize("0x1e0", &[_]Token.Id{ .IntegerLiteral }); |
| 1890 | | testTokenize("0x1p", &[_]Token.Id{ .Invalid }); |
| 1891 | | testTokenize("0xfp0z1", &[_]Token.Id{ .Invalid }); |
| 1892 | | testTokenize("0xff.ffpff", &[_]Token.Id{ .Invalid }); |
| 1893 | | testTokenize("0x0_.0", &[_]Token.Id{ .Invalid }); |
| 1894 | | testTokenize("0x0._0", &[_]Token.Id{ .Invalid }); |
| 1895 | | testTokenize("0x0.0_", &[_]Token.Id{ .Invalid }); |
| 1896 | | testTokenize("0x0_p0", &[_]Token.Id{ .Invalid }); |
| 1897 | | testTokenize("0x0_.p0", &[_]Token.Id{ .Invalid }); |
| 1898 | | testTokenize("0x0._p0", &[_]Token.Id{ .Invalid }); |
| 1899 | | testTokenize("0x0.0_p0", &[_]Token.Id{ .Invalid }); |
| 1900 | | testTokenize("0x0._0p0", &[_]Token.Id{ .Invalid }); |
| 1901 | | testTokenize("0x0.0_p0", &[_]Token.Id{ .Invalid }); |
| 1902 | | testTokenize("0x0.0p_0", &[_]Token.Id{ .Invalid }); |
| 1903 | | testTokenize("0x0.0p+_0", &[_]Token.Id{ .Invalid }); |
| 1904 | | testTokenize("0x0.0p-_0", &[_]Token.Id{ .Invalid }); |
| 1905 | | testTokenize("0x0.0p0_", &[_]Token.Id{ .Invalid }); |
| 1828 | testTokenize("0x0", &[_]Token.Id{.IntegerLiteral}); |
| 1829 | testTokenize("0x1", &[_]Token.Id{.IntegerLiteral}); |
| 1830 | testTokenize("0x2", &[_]Token.Id{.IntegerLiteral}); |
| 1831 | testTokenize("0x3", &[_]Token.Id{.IntegerLiteral}); |
| 1832 | testTokenize("0x4", &[_]Token.Id{.IntegerLiteral}); |
| 1833 | testTokenize("0x5", &[_]Token.Id{.IntegerLiteral}); |
| 1834 | testTokenize("0x6", &[_]Token.Id{.IntegerLiteral}); |
| 1835 | testTokenize("0x7", &[_]Token.Id{.IntegerLiteral}); |
| 1836 | testTokenize("0x8", &[_]Token.Id{.IntegerLiteral}); |
| 1837 | testTokenize("0x9", &[_]Token.Id{.IntegerLiteral}); |
| 1838 | testTokenize("0xa", &[_]Token.Id{.IntegerLiteral}); |
| 1839 | testTokenize("0xb", &[_]Token.Id{.IntegerLiteral}); |
| 1840 | testTokenize("0xc", &[_]Token.Id{.IntegerLiteral}); |
| 1841 | testTokenize("0xd", &[_]Token.Id{.IntegerLiteral}); |
| 1842 | testTokenize("0xe", &[_]Token.Id{.IntegerLiteral}); |
| 1843 | testTokenize("0xf", &[_]Token.Id{.IntegerLiteral}); |
| 1844 | testTokenize("0xA", &[_]Token.Id{.IntegerLiteral}); |
| 1845 | testTokenize("0xB", &[_]Token.Id{.IntegerLiteral}); |
| 1846 | testTokenize("0xC", &[_]Token.Id{.IntegerLiteral}); |
| 1847 | testTokenize("0xD", &[_]Token.Id{.IntegerLiteral}); |
| 1848 | testTokenize("0xE", &[_]Token.Id{.IntegerLiteral}); |
| 1849 | testTokenize("0xF", &[_]Token.Id{.IntegerLiteral}); |
| 1850 | testTokenize("0x0z", &[_]Token.Id{.Invalid}); |
| 1851 | testTokenize("0xz", &[_]Token.Id{.Invalid}); |
| 1852 | |
| 1853 | testTokenize("0x0123456789ABCDEF", &[_]Token.Id{.IntegerLiteral}); |
| 1854 | testTokenize("0x0123_4567_89AB_CDEF", &[_]Token.Id{.IntegerLiteral}); |
| 1855 | testTokenize("0x01_23_45_67_89AB_CDE_F", &[_]Token.Id{.IntegerLiteral}); |
| 1856 | testTokenize("0x0_1_2_3_4_5_6_7_8_9_A_B_C_D_E_F", &[_]Token.Id{.IntegerLiteral}); |
| 1857 | |
| 1858 | testTokenize("0X0", &[_]Token.Id{.Invalid}); |
| 1859 | testTokenize("0x_", &[_]Token.Id{.Invalid}); |
| 1860 | testTokenize("0x_1", &[_]Token.Id{.Invalid}); |
| 1861 | testTokenize("0x1_", &[_]Token.Id{.Invalid}); |
| 1862 | testTokenize("0x0__1", &[_]Token.Id{.Invalid}); |
| 1863 | testTokenize("0x0_1_", &[_]Token.Id{.Invalid}); |
| 1864 | testTokenize("0x_,", &[_]Token.Id{.Invalid}); |
| 1865 | |
| 1866 | testTokenize("0x1.", &[_]Token.Id{.FloatLiteral}); |
| 1867 | testTokenize("0x1.0", &[_]Token.Id{.FloatLiteral}); |
| 1868 | testTokenize("0xF.", &[_]Token.Id{.FloatLiteral}); |
| 1869 | testTokenize("0xF.0", &[_]Token.Id{.FloatLiteral}); |
| 1870 | testTokenize("0xF.F", &[_]Token.Id{.FloatLiteral}); |
| 1871 | testTokenize("0xF.Fp0", &[_]Token.Id{.FloatLiteral}); |
| 1872 | testTokenize("0xF.FP0", &[_]Token.Id{.FloatLiteral}); |
| 1873 | testTokenize("0x1p0", &[_]Token.Id{.FloatLiteral}); |
| 1874 | testTokenize("0xfp0", &[_]Token.Id{.FloatLiteral}); |
| 1875 | |
| 1876 | testTokenize("0x0123456.789ABCDEF", &[_]Token.Id{.FloatLiteral}); |
| 1877 | testTokenize("0x0_123_456.789_ABC_DEF", &[_]Token.Id{.FloatLiteral}); |
| 1878 | testTokenize("0x0_1_2_3_4_5_6.7_8_9_A_B_C_D_E_F", &[_]Token.Id{.FloatLiteral}); |
| 1879 | testTokenize("0x0.0p0", &[_]Token.Id{.FloatLiteral}); |
| 1880 | testTokenize("0xff.ffp10", &[_]Token.Id{.FloatLiteral}); |
| 1881 | testTokenize("0xff.ffP10", &[_]Token.Id{.FloatLiteral}); |
| 1882 | testTokenize("0xff.p10", &[_]Token.Id{.FloatLiteral}); |
| 1883 | testTokenize("0xffp10", &[_]Token.Id{.FloatLiteral}); |
| 1884 | testTokenize("0xff_ff.ff_ffp1_0_0_0", &[_]Token.Id{.FloatLiteral}); |
| 1885 | testTokenize("0xf_f_f_f.f_f_f_fp+1_000", &[_]Token.Id{.FloatLiteral}); |
| 1886 | testTokenize("0xf_f_f_f.f_f_f_fp-1_00_0", &[_]Token.Id{.FloatLiteral}); |
| 1887 | |
| 1888 | testTokenize("0x1e", &[_]Token.Id{.IntegerLiteral}); |
| 1889 | testTokenize("0x1e0", &[_]Token.Id{.IntegerLiteral}); |
| 1890 | testTokenize("0x1p", &[_]Token.Id{.Invalid}); |
| 1891 | testTokenize("0xfp0z1", &[_]Token.Id{.Invalid}); |
| 1892 | testTokenize("0xff.ffpff", &[_]Token.Id{.Invalid}); |
| 1893 | testTokenize("0x0_.0", &[_]Token.Id{.Invalid}); |
| 1894 | testTokenize("0x0._0", &[_]Token.Id{.Invalid}); |
| 1895 | testTokenize("0x0.0_", &[_]Token.Id{.Invalid}); |
| 1896 | testTokenize("0x0_p0", &[_]Token.Id{.Invalid}); |
| 1897 | testTokenize("0x0_.p0", &[_]Token.Id{.Invalid}); |
| 1898 | testTokenize("0x0._p0", &[_]Token.Id{.Invalid}); |
| 1899 | testTokenize("0x0.0_p0", &[_]Token.Id{.Invalid}); |
| 1900 | testTokenize("0x0._0p0", &[_]Token.Id{.Invalid}); |
| 1901 | testTokenize("0x0.0_p0", &[_]Token.Id{.Invalid}); |
| 1902 | testTokenize("0x0.0p_0", &[_]Token.Id{.Invalid}); |
| 1903 | testTokenize("0x0.0p+_0", &[_]Token.Id{.Invalid}); |
| 1904 | testTokenize("0x0.0p-_0", &[_]Token.Id{.Invalid}); |
| 1905 | testTokenize("0x0.0p0_", &[_]Token.Id{.Invalid}); |
| 1906 | 1906 | } |
| 1907 | 1907 | |
| 1908 | | |
| 1909 | 1908 | fn testTokenize(source: []const u8, expected_tokens: []const Token.Id) void { |
| 1910 | 1909 | var tokenizer = Tokenizer.init(source); |
| 1911 | 1910 | for (expected_tokens) |expected_token_id| { |