refactor: statement parsing
This commit is contained in:
parent
9374caa7ed
commit
3671c221a9
@ -29,26 +29,16 @@ pub const Statement = struct {
|
|||||||
};
|
};
|
||||||
errdefer allocator.destroy(vardef);
|
errdefer allocator.destroy(vardef);
|
||||||
|
|
||||||
var parse_failed = false;
|
if (try vardef.init(tokens, pos, allocator)) |vardef_end| {
|
||||||
const vardef_end = vardef.init(tokens, pos, allocator) catch |err| switch (err) {
|
// variable definition parsed
|
||||||
error.Unmatched => blk: {
|
// return the parsed variable definition
|
||||||
parse_failed = true;
|
target.* = .{
|
||||||
break :blk 0;
|
.alloc = allocator,
|
||||||
},
|
.value = .{ .variableBinding = vardef },
|
||||||
else => {
|
};
|
||||||
return err;
|
return vardef_end;
|
||||||
},
|
|
||||||
};
|
|
||||||
if (vardef_end) |v| {
|
|
||||||
if (!parse_failed) {
|
|
||||||
// return the parsed variable definition
|
|
||||||
target.* = .{
|
|
||||||
.alloc = allocator,
|
|
||||||
.value = .{ .variableBinding = vardef },
|
|
||||||
};
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// TODO: handle other errors of vardef parsing
|
||||||
|
|
||||||
// fail
|
// fail
|
||||||
return ParseError.Unmatched;
|
return ParseError.Unmatched;
|
||||||
|
Loading…
Reference in New Issue
Block a user