aboutsummaryrefslogtreecommitdiff
path: root/src/Lexer.zig
diff options
context:
space:
mode:
authorMathias Magnusson <mathias@magnusson.space>2025-06-04 01:12:01 +0200
committerMathias Magnusson <mathias@magnusson.space>2025-06-04 01:12:01 +0200
commit55f45123f21e63e883d0afe16d97dcb5dafdd296 (patch)
tree657052d329915f76e4bf302b8c4c44a781582a41 /src/Lexer.zig
parent8a9d15683101ab1ea8584f3d5595e5319d7b9a24 (diff)
downloadhuginn-55f45123f21e63e883d0afe16d97dcb5dafdd296.tar.gz
begin implementing if expressions
registers are used over block boundaries though, which doesn't work very well so i turned off register freeing to make it look like it works (unless you create more than 12 values total)
Diffstat (limited to 'src/Lexer.zig')
-rw-r--r--src/Lexer.zig4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/Lexer.zig b/src/Lexer.zig
index cb146c7..f59737e 100644
--- a/src/Lexer.zig
+++ b/src/Lexer.zig
@@ -19,6 +19,8 @@ pub const Token = struct {
// Keywords
let,
+ @"if",
+ @"else",
};
};
@@ -120,7 +122,7 @@ fn identifierOrKeyword(self: *Self) Token {
}
const value = self.source[self.start..self.pos];
return self.create(switch (std.meta.stringToEnum(Token.Type, value) orelse .invalid) {
- .let => .let,
+ .let, .@"if", .@"else" => |t| t,
else => .identifier,
});
}