about summary refs log tree commit diff
path: root/src/tokenizer.zig
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2025-05-25 22:49:18 +0200
committerBaitinq <[email protected]>2025-05-25 22:49:53 +0200
commitf5904b62012ca475c14ad55b7f2c0b0c5c48b362 (patch)
tree890b3f1274b8dab2e7e2a2052d7d452fa3ca6db2 /src/tokenizer.zig
parentExamples: Fix example 21 (diff)
downloadinterpreter-f5904b62012ca475c14ad55b7f2c0b0c5c48b362.tar.gz
interpreter-f5904b62012ca475c14ad55b7f2c0b0c5c48b362.tar.bz2
interpreter-f5904b62012ca475c14ad55b7f2c0b0c5c48b362.zip
Feature: Start adding structs support
Diffstat (limited to 'src/tokenizer.zig')
-rw-r--r--src/tokenizer.zig4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/tokenizer.zig b/src/tokenizer.zig
index d150058..f6fbf11 100644
--- a/src/tokenizer.zig
+++ b/src/tokenizer.zig
@@ -15,6 +15,7 @@ pub const TokenType = union(enum) {
     BREAK: void,
     CONTINUE: void,
     ARROW: void,
+    STRUCT: void,
 
     // Identifiers
     IDENTIFIER: []u8,
@@ -36,6 +37,7 @@ pub const TokenType = union(enum) {
     BANG: void,
     LESS: void,
     GREATER: void,
+    DOT: void,
 
     // Punctuation
     SEMICOLON: void,
@@ -98,6 +100,7 @@ pub const Tokenizer = struct {
         if (self.accept_string("true")) return self.create_token(.{ .BOOLEAN = true });
         if (self.accept_string("false")) return self.create_token(.{ .BOOLEAN = false });
         if (self.accept_string("null")) return self.create_token(.{ .NULL = void{} });
+        if (self.accept_string("struct")) return self.create_token(.{ .STRUCT = void{} });
 
         if (self.accept_string("=>")) return self.create_token(.{ .ARROW = void{} });
         if (self.accept_string(";")) return self.create_token(.{ .SEMICOLON = void{} });
@@ -116,6 +119,7 @@ pub const Tokenizer = struct {
         if (self.accept_string("!")) return self.create_token(.{ .BANG = void{} });
         if (self.accept_string("<")) return self.create_token(.{ .LESS = void{} });
         if (self.accept_string(">")) return self.create_token(.{ .GREATER = void{} });
+        if (self.accept_string(".")) return self.create_token(.{ .DOT = void{} });
 
         if (self.accept_int_type()) |i| return self.create_token(.{ .NUMBER = i });
         if (self.accept_char_type()) |c| return self.create_token(.{ .CHAR = c });