diff options
| author | Baitinq <[email protected]> | 2025-03-21 20:22:45 +0100 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-03-22 20:30:56 +0100 |
| commit | 95999cb6a286871e245e8b9e20d79bc6cd22252c (patch) | |
| tree | b9ae565e1284fc58c255725fb78ee877a3bd960f /src/parser.zig | |
| parent | Misc: Improve error handling (diff) | |
| download | interpreter-95999cb6a286871e245e8b9e20d79bc6cd22252c.tar.gz interpreter-95999cb6a286871e245e8b9e20d79bc6cd22252c.tar.bz2 interpreter-95999cb6a286871e245e8b9e20d79bc6cd22252c.zip | |
Feature: Add initial support for linking external symbols
Diffstat (limited to 'src/parser.zig')
| -rw-r--r-- | src/parser.zig | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/parser.zig b/src/parser.zig index b0a469c..d2067a1 100644 --- a/src/parser.zig +++ b/src/parser.zig @@ -142,7 +142,7 @@ pub const Parser = struct { }); } - // AssignmentStatement ::= "let" IDENTIFIER EQUALS Expression + // AssignmentStatement ::= "let" IDENTIFIER EQUALS (Type | Expression) fn parse_assignment_statement(self: *Parser) ParserError!*Node { errdefer if (!self.try_context) std.debug.print("Error parsing assignment statement {any}\n", .{self.peek_token()}); @@ -155,6 +155,16 @@ pub const Parser = struct { _ = try self.parse_token(tokenizer.TokenType.EQUALS); + if (self.accept_parse(parse_type)) |typ| { + return self.create_node(.{ + .ASSIGNMENT_STATEMENT = .{ + .is_declaration = is_declaration, + .name = try self.arena.dupe(u8, identifier.type.IDENTIFIER), + .expression = @constCast(typ), + }, + }); + } + const expression = try self.parse_expression(); return self.create_node(.{ |