aboutsummaryrefslogtreecommitdiff
path: root/src/parse.zig
diff options
context:
space:
mode:
authorMathias Magnusson <mathias@magnusson.space>2025-06-03 20:09:20 +0200
committerMathias Magnusson <mathias@magnusson.space>2025-06-03 20:09:20 +0200
commit078e2aa87a03a4c6adc1a1bb28fb020cc6013400 (patch)
treefc36b2052f8f8bc6618b83988d7610baa006c33b /src/parse.zig
parente62fd7f3b3cc00776f04d726224e00573a2ac9f7 (diff)
downloadhuginn-078e2aa87a03a4c6adc1a1bb28fb020cc6013400.tar.gz
remove semicolons
much bloat they are, indeed
Diffstat (limited to 'src/parse.zig')
-rw-r--r--src/parse.zig15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/parse.zig b/src/parse.zig
index b509fe7..422b4f5 100644
--- a/src/parse.zig
+++ b/src/parse.zig
@@ -55,9 +55,9 @@ pub const Stmt = struct {
fn format(self: Stmt, writer: anytype, source: []const u8, indent: usize) !void {
try writer.writeByteNTimes(' ', indent);
return switch (self.type) {
- .expr => |expr| writer.print("{};", .{fmt(expr, source, indent)}),
+ .expr => |expr| writer.print("{}", .{fmt(expr, source, indent)}),
.block => |b| writer.print("{}", .{fmt(b, source, indent)}),
- .declare_var => |declare_var| writer.print("let {s} = {};", .{
+ .declare_var => |declare_var| writer.print("let {s} = {}", .{
declare_var.ident.getIdent(source),
fmt(declare_var.value, source, indent),
}),
@@ -113,7 +113,7 @@ pub const Expr = struct {
}
};
-const ParseError = error{ OutOfMemory, ExpectedRightParen, UnexpectedToken, ExpectedSemicolon };
+const ParseError = error{ OutOfMemory, ExpectedRightParen, UnexpectedToken };
pub fn block(allocator: Allocator, lexer: *Lexer) !Block {
const left_curly = try mustEat(lexer, .left_curly);
@@ -135,9 +135,8 @@ pub fn statement(allocator: Allocator, lexer: *Lexer) ParseError!Stmt {
const ident = try mustEat(lexer, .identifier);
_ = try mustEat(lexer, .equal);
const value = try expression(allocator, lexer);
- const semicolon = try mustEat(lexer, .semicolon);
return .{
- .loc = let.loc.combine(semicolon.loc),
+ .loc = let.loc.combine(value.loc),
.type = .{ .declare_var = .{ .ident = ident.loc, .value = value } },
};
},
@@ -149,11 +148,9 @@ pub fn statement(allocator: Allocator, lexer: *Lexer) ParseError!Stmt {
};
},
else => {
- var expr = try expression(allocator, lexer);
- const semicolon = lexer.next();
- if (semicolon.type != .semicolon) return error.ExpectedSemicolon;
+ const expr = try expression(allocator, lexer);
return .{
- .loc = expr.loc.combine(semicolon.loc),
+ .loc = expr.loc,
.type = .{ .expr = expr },
};
},