diff options
Diffstat (limited to 'src/z/parser/lexer.zig')
| -rw-r--r-- | src/z/parser/lexer.zig | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/z/parser/lexer.zig b/src/z/parser/lexer.zig index 66d4211..5beefde 100644 --- a/src/z/parser/lexer.zig +++ b/src/z/parser/lexer.zig @@ -43,6 +43,7 @@ pub fn Lexer(TokenKind: type) type { last_buffer: []const u8, tokens: []const Token(TokenKind) = &.{}, context: TokenKind.Context = .{}, + last_context: TokenKind.Context = .{}, pub fn init(buffer: []const u8) Self { return .{ @@ -114,11 +115,13 @@ pub fn Lexer(TokenKind: type) type { pub fn revert(self: *Self) void { self.buffer = self.last_buffer; + self.context = self.last_context; } pub fn commit(self: *Self, tok: Token(TokenKind)) void { self.tokens = self.tokens ++ [_]Token(TokenKind){tok.stop(self)}; self.last_buffer = self.buffer; + self.last_context = self.context; } }; } |