diff options
author | kdx <kikoodx@paranoici.org> | 2024-03-10 02:30:10 +0100 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2024-03-10 02:30:10 +0100 |
commit | 1b029ac9e3163f5229589d37dbf247dbab7e7990 (patch) | |
tree | a7679d5c56247c005ad1f32f7bd9f9b74676a62d | |
parent | f4e4d82452044d8678b9fe5707c668387409e981 (diff) | |
download | o7z-1b029ac9e3163f5229589d37dbf247dbab7e7990.tar.gz |
express urself
-rw-r--r-- | src/Lexer.zig | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/Lexer.zig b/src/Lexer.zig index fc615f3..0b9196c 100644 --- a/src/Lexer.zig +++ b/src/Lexer.zig @@ -60,23 +60,20 @@ pub fn lex(self: *Self) !void { } if (contains(self.s[i], punct)) { - try self.tokens.append(Token.init(.punct, self.s[i .. i + 1])); + try self.newToken(i, 1, .punct); i += 1; continue; } if (match(self.s[i..], number)) |len| { const postfix = match(self.s[i + len ..], alnum) orelse 0; - try self.tokens.append(Token.init( - .number, - self.s[i .. i + len + postfix], - )); + try self.newToken(i, len + postfix, .number); i += len + postfix; continue; } if (match(self.s[i..], alnum)) |len| { - try self.tokens.append(Token.init(.word, self.s[i .. i + len])); + try self.newToken(i, len, .word); i += len; continue; } @@ -86,6 +83,10 @@ pub fn lex(self: *Self) !void { } } +fn newToken(self: *Self, i: usize, len: usize, tag: Token.Tag) !void { + return self.tokens.append(Token.init(tag, self.s[i .. i + len])); +} + fn until(s: []const u8, comptime c: []const u8) ?usize { for (s, 0..) |e, i| inline for (c) |f| |