diff options
author | Mathias Magnusson <mathias@magnusson.space> | 2025-06-01 01:06:51 +0200 |
---|---|---|
committer | Mathias Magnusson <mathias@magnusson.space> | 2025-06-01 01:07:13 +0200 |
commit | a86252879b27a4951e13aaa6a28ff7fce2505ff8 (patch) | |
tree | 9e691d83fa0bf6eda29e8fd15ffdbff0755a185f | |
parent | f26bc6965372783cd5942a99e1e5b6f0026f8333 (diff) | |
download | huginn-a86252879b27a4951e13aaa6a28ff7fce2505ff8.tar.gz |
add (slightly) prett(ier) printing for exprs
-rw-r--r-- | src/parse.zig | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/parse.zig b/src/parse.zig index 24d6e42..7daa3f8 100644 --- a/src/parse.zig +++ b/src/parse.zig @@ -24,9 +24,28 @@ pub const Expr = struct { const Op = enum { plus, minus, + + pub fn format(self: Op, comptime fmt: []const u8, options: std.fmt.FormatOptions, writer: anytype) !void { + _ = fmt; + _ = options; + try writer.writeByte(switch (self) { + .plus => '+', + .minus => '-', + }); + } }; }; }; + + pub fn format(self: Expr, comptime fmt: []const u8, options: std.fmt.FormatOptions, writer: anytype) !void { + _ = fmt; + _ = options; + switch (self.type) { + .integer_literal => try writer.print("<int>", .{}), + .bin_op => |bin_op| try writer.print("({} {} {})", .{ bin_op.lhs, bin_op.op, bin_op.rhs }), + .invalid => try writer.print("<invalid>", .{}), + } + } }; pub fn expression(allocator: Allocator, lexer: *Peekable(Lexer)) error{OutOfMemory}!*Expr { |