diff options
| author | Baitinq <[email protected]> | 2025-05-10 16:05:51 +0200 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-05-10 16:05:51 +0200 |
| commit | ff00882673bae48ff2ddbc9f66e79efd624824ef (patch) | |
| tree | 8f885c4914cee352d9a2cabcd80c870b90dddbf5 /src/parser.zig | |
| parent | Examples: Add example sorting array (diff) | |
| download | pry-lang-ff00882673bae48ff2ddbc9f66e79efd624824ef.tar.gz pry-lang-ff00882673bae48ff2ddbc9f66e79efd624824ef.tar.bz2 pry-lang-ff00882673bae48ff2ddbc9f66e79efd624824ef.zip | |
Feature: Support returning void from functions
Diffstat (limited to 'src/parser.zig')
| -rw-r--r-- | src/parser.zig | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/parser.zig b/src/parser.zig index 748d08b..e89479f 100644 --- a/src/parser.zig +++ b/src/parser.zig @@ -90,7 +90,7 @@ pub const Node = union(enum) { }, }, RETURN_STATEMENT: struct { - expression: *Node, + expression: ?*Node, }, }; @@ -601,17 +601,17 @@ pub const Parser = struct { return node_list.items; } - // ReturnStatement ::= RETURN Expression + // ReturnStatement ::= RETURN (Expression)? fn parse_return_statement(self: *Parser) ParserError!*Node { errdefer if (!self.try_context) std.debug.print("Error parsing return statement {any}\n", .{self.peek_token()}); _ = try self.parse_token(tokenizer.TokenType.RETURN); - const expression = try self.parse_expression(); + const maybe_expression = self.accept_parse(parse_expression); return self.create_node(.{ .RETURN_STATEMENT = .{ - .expression = @constCast(expression), + .expression = maybe_expression, }, }); } |