From 3671c221a964c0c0207bd72d2c5d5ef95fbb2194 Mon Sep 17 00:00:00 2001 From: Fernando Araoz Date: Mon, 27 Jan 2025 19:49:06 -0500 Subject: [PATCH] refactor: statement parsing --- src/02_syntax/statement.zig | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/src/02_syntax/statement.zig b/src/02_syntax/statement.zig index 7db845d..687d5cb 100644 --- a/src/02_syntax/statement.zig +++ b/src/02_syntax/statement.zig @@ -29,26 +29,16 @@ pub const Statement = struct { }; errdefer allocator.destroy(vardef); - var parse_failed = false; - const vardef_end = vardef.init(tokens, pos, allocator) catch |err| switch (err) { - error.Unmatched => blk: { - parse_failed = true; - break :blk 0; - }, - else => { - return err; - }, - }; - if (vardef_end) |v| { - if (!parse_failed) { - // return the parsed variable definition - target.* = .{ - .alloc = allocator, - .value = .{ .variableBinding = vardef }, - }; - return v; - } + if (try vardef.init(tokens, pos, allocator)) |vardef_end| { + // variable definition parsed + // return the parsed variable definition + target.* = .{ + .alloc = allocator, + .value = .{ .variableBinding = vardef }, + }; + return vardef_end; } + // TODO: handle other errors of vardef parsing // fail return ParseError.Unmatched;