| ... | ... | @@ -271,6 +271,7 @@ pub const Tokenizer = struct { |
| 271 | 271 | self.pending_invalid_token = null; |
| 272 | 272 | return token; |
| 273 | 273 | } |
| 274 | const start_index = self.index; |
| 274 | 275 | var state = State.Start; |
| 275 | 276 | var result = Token { |
| 276 | 277 | .id = Token.Id.Eof, |
| ... | ... | @@ -279,7 +280,7 @@ pub const Tokenizer = struct { |
| 279 | 280 | .line = self.line, |
| 280 | 281 | .column = self.column, |
| 281 | 282 | }; |
| 282 | | while (self.index < self.buffer.len) { |
| 283 | while (self.index < self.buffer.len) : (self.index += 1) { |
| 283 | 284 | const c = self.buffer[self.index]; |
| 284 | 285 | switch (state) { |
| 285 | 286 | State.Start => switch (c) { |
| ... | ... | @@ -877,14 +878,6 @@ pub const Tokenizer = struct { |
| 877 | 878 | else => break, |
| 878 | 879 | }, |
| 879 | 880 | } |
| 880 | | |
| 881 | | self.index += 1; |
| 882 | | if (c == '\n') { |
| 883 | | self.line += 1; |
| 884 | | self.column = 0; |
| 885 | | } else { |
| 886 | | self.column += 1; |
| 887 | | } |
| 888 | 881 | } else if (self.index == self.buffer.len) { |
| 889 | 882 | switch (state) { |
| 890 | 883 | State.Start, |
| ... | ... | @@ -983,6 +976,16 @@ pub const Tokenizer = struct { |
| 983 | 976 | }, |
| 984 | 977 | } |
| 985 | 978 | } |
| 979 | |
| 980 | for (self.buffer[start_index..self.index]) |c| { |
| 981 | if (c == '\n') { |
| 982 | self.line += 1; |
| 983 | self.column = 0; |
| 984 | } else { |
| 985 | self.column += 1; |
| 986 | } |
| 987 | } |
| 988 | |
| 986 | 989 | if (result.id == Token.Id.Eof) { |
| 987 | 990 | if (self.pending_invalid_token) |token| { |
| 988 | 991 | self.pending_invalid_token = null; |