summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2024-03-10 02:30:10 +0100
committerkdx <kikoodx@paranoici.org>2024-03-10 02:30:10 +0100
commit1b029ac9e3163f5229589d37dbf247dbab7e7990 (patch)
treea7679d5c56247c005ad1f32f7bd9f9b74676a62d
parentf4e4d82452044d8678b9fe5707c668387409e981 (diff)
downloado7z-1b029ac9e3163f5229589d37dbf247dbab7e7990.tar.gz
express urself
-rw-r--r--src/Lexer.zig13
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|