aboutsummaryrefslogtreecommitdiff
path: root/src/z/parser/lexer.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/z/parser/lexer.zig')
-rw-r--r--src/z/parser/lexer.zig3
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;
}
};
}