| ... | ... | @@ -1160,7 +1160,7 @@ pub const Tokenizer = struct { |
| 1160 | 1160 | }, |
| 1161 | 1161 | '.' => { |
| 1162 | 1162 | state = .num_dot_dec; |
| 1163 | | result.tag = .float_literal; |
| 1163 | result.tag = .invalid; |
| 1164 | 1164 | }, |
| 1165 | 1165 | 'e', 'E' => { |
| 1166 | 1166 | state = .float_exponent_unsigned; |
| ... | ... | @@ -1189,7 +1189,7 @@ pub const Tokenizer = struct { |
| 1189 | 1189 | }, |
| 1190 | 1190 | '.' => { |
| 1191 | 1191 | state = .num_dot_hex; |
| 1192 | | result.tag = .float_literal; |
| 1192 | result.tag = .invalid; |
| 1193 | 1193 | }, |
| 1194 | 1194 | 'p', 'P' => { |
| 1195 | 1195 | state = .float_exponent_unsigned; |
| ... | ... | @@ -1211,9 +1211,11 @@ pub const Tokenizer = struct { |
| 1211 | 1211 | break; |
| 1212 | 1212 | }, |
| 1213 | 1213 | 'e', 'E' => { |
| 1214 | result.tag = .float_literal; |
| 1214 | 1215 | state = .float_exponent_unsigned; |
| 1215 | 1216 | }, |
| 1216 | 1217 | '0'...'9' => { |
| 1218 | result.tag = .float_literal; |
| 1217 | 1219 | state = .float_fraction_dec; |
| 1218 | 1220 | }, |
| 1219 | 1221 | else => { |
| ... | ... | @@ -1231,6 +1233,7 @@ pub const Tokenizer = struct { |
| 1231 | 1233 | break; |
| 1232 | 1234 | }, |
| 1233 | 1235 | 'p', 'P' => { |
| 1236 | result.tag = .float_literal; |
| 1234 | 1237 | state = .float_exponent_unsigned; |
| 1235 | 1238 | }, |
| 1236 | 1239 | '0'...'9', 'a'...'f', 'A'...'F' => { |
| ... | ... | @@ -1852,7 +1855,6 @@ test "tokenizer - number literals decimal" { |
| 1852 | 1855 | try testTokenize("0_0_f_00", &.{ .invalid, .identifier }); |
| 1853 | 1856 | try testTokenize("1_,", &.{ .invalid, .comma }); |
| 1854 | 1857 | |
| 1855 | | try testTokenize("1.", &.{.float_literal}); |
| 1856 | 1858 | try testTokenize("0.0", &.{.float_literal}); |
| 1857 | 1859 | try testTokenize("1.0", &.{.float_literal}); |
| 1858 | 1860 | try testTokenize("10.0", &.{.float_literal}); |
| ... | ... | @@ -1864,8 +1866,8 @@ test "tokenizer - number literals decimal" { |
| 1864 | 1866 | try testTokenize("1.0e+100", &.{.float_literal}); |
| 1865 | 1867 | try testTokenize("1.0e-100", &.{.float_literal}); |
| 1866 | 1868 | try testTokenize("1_0_0_0.0_0_0_0_0_1e1_0_0_0", &.{.float_literal}); |
| 1867 | | try testTokenize("1.+", &.{ .float_literal, .plus }); |
| 1868 | 1869 | |
| 1870 | try testTokenize("1.", &.{.invalid}); |
| 1869 | 1871 | try testTokenize("1e", &.{.invalid}); |
| 1870 | 1872 | try testTokenize("1.0e1f0", &.{ .invalid, .identifier }); |
| 1871 | 1873 | try testTokenize("1.0p100", &.{ .invalid, .identifier }); |
| ... | ... | @@ -1877,6 +1879,7 @@ test "tokenizer - number literals decimal" { |
| 1877 | 1879 | try testTokenize("1.a", &.{ .invalid, .identifier }); |
| 1878 | 1880 | try testTokenize("1.z", &.{ .invalid, .identifier }); |
| 1879 | 1881 | try testTokenize("1._0", &.{ .invalid, .identifier }); |
| 1882 | try testTokenize("1.+", &.{ .invalid, .plus }); |
| 1880 | 1883 | try testTokenize("1._+", &.{ .invalid, .identifier, .plus }); |
| 1881 | 1884 | try testTokenize("1._e", &.{ .invalid, .identifier }); |
| 1882 | 1885 | try testTokenize("1.0e", &.{.invalid}); |
| ... | ... | @@ -2004,16 +2007,18 @@ test "tokenizer - number literals hexadecimal" { |
| 2004 | 2007 | try testTokenize("0x0_1_", &.{.invalid}); |
| 2005 | 2008 | try testTokenize("0x_,", &.{ .invalid, .identifier, .comma }); |
| 2006 | 2009 | |
| 2007 | | try testTokenize("0x1.", &.{.float_literal}); |
| 2008 | 2010 | try testTokenize("0x1.0", &.{.float_literal}); |
| 2009 | | try testTokenize("0xF.", &.{.float_literal}); |
| 2010 | 2011 | try testTokenize("0xF.0", &.{.float_literal}); |
| 2011 | 2012 | try testTokenize("0xF.F", &.{.float_literal}); |
| 2012 | 2013 | try testTokenize("0xF.Fp0", &.{.float_literal}); |
| 2013 | 2014 | try testTokenize("0xF.FP0", &.{.float_literal}); |
| 2014 | 2015 | try testTokenize("0x1p0", &.{.float_literal}); |
| 2015 | 2016 | try testTokenize("0xfp0", &.{.float_literal}); |
| 2016 | | try testTokenize("0x1.+0xF.", &.{ .float_literal, .plus, .float_literal }); |
| 2017 | try testTokenize("0x1.0+0xF.0", &.{ .float_literal, .plus, .float_literal }); |
| 2018 | |
| 2019 | try testTokenize("0x1.", &.{.invalid}); |
| 2020 | try testTokenize("0xF.", &.{.invalid}); |
| 2021 | try testTokenize("0x1.+0xF.", &.{ .invalid, .plus, .invalid }); |
| 2017 | 2022 | |
| 2018 | 2023 | try testTokenize("0x0123456.789ABCDEF", &.{.float_literal}); |
| 2019 | 2024 | try testTokenize("0x0_123_456.789_ABC_DEF", &.{.float_literal}); |