| ... | @@ -271,6 +271,7 @@ pub const Tokenizer = struct { | ... | @@ -271,6 +271,7 @@ pub const Tokenizer = struct { |
| 271 | self.pending_invalid_token = null; | 271 | self.pending_invalid_token = null; |
| 272 | return token; | 272 | return token; |
| 273 | } | 273 | } |
| | 274 | const start_index = self.index; |
| 274 | var state = State.Start; | 275 | var state = State.Start; |
| 275 | var result = Token { | 276 | var result = Token { |
| 276 | .id = Token.Id.Eof, | 277 | .id = Token.Id.Eof, |
| ... | @@ -279,7 +280,7 @@ pub const Tokenizer = struct { | ... | @@ -279,7 +280,7 @@ pub const Tokenizer = struct { |
| 279 | .line = self.line, | 280 | .line = self.line, |
| 280 | .column = self.column, | 281 | .column = self.column, |
| 281 | }; | 282 | }; |
| 282 | while (self.index < self.buffer.len) { | 283 | while (self.index < self.buffer.len) : (self.index += 1) { |
| 283 | const c = self.buffer[self.index]; | 284 | const c = self.buffer[self.index]; |
| 284 | switch (state) { | 285 | switch (state) { |
| 285 | State.Start => switch (c) { | 286 | State.Start => switch (c) { |
| ... | @@ -877,14 +878,6 @@ pub const Tokenizer = struct { | ... | @@ -877,14 +878,6 @@ pub const Tokenizer = struct { |
| 877 | else => break, | 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 | } else if (self.index == self.buffer.len) { | 881 | } else if (self.index == self.buffer.len) { |
| 889 | switch (state) { | 882 | switch (state) { |
| 890 | State.Start, | 883 | State.Start, |
| ... | @@ -983,6 +976,16 @@ pub const Tokenizer = struct { | ... | @@ -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 | if (result.id == Token.Id.Eof) { | 989 | if (result.id == Token.Id.Eof) { |
| 987 | if (self.pending_invalid_token) |token| { | 990 | if (self.pending_invalid_token) |token| { |
| 988 | self.pending_invalid_token = null; | 991 | self.pending_invalid_token = null; |