pub fn print(allocator: Allocator, expr: *const Expr) Allocator.Error![]const u8 {
return switch (expr.*) {
- .binary => |binary| try parenthesize(allocator, binary.operator.lexeme, &.{ binary.left, binary.right }),
- .grouping => |grouping| try parenthesize(allocator, "group", &.{grouping.expression}),
+ .binary => |binary| parenthesize(allocator, binary.operator.lexeme, &.{ binary.left, binary.right }),
+ .grouping => |grouping| parenthesize(allocator, "group", &.{grouping.expression}),
.literal => |literal| switch (literal.value) {
- .nil => try allocator.dupe(u8, "nil"),
- .boolean => |boolean| try std.fmt.allocPrint(allocator, "{}", .{boolean}),
- .string => |string| try allocator.dupe(u8, string),
- .number => |number| try std.fmt.allocPrint(allocator, "{}", .{number}),
+ .string => |string| allocator.dupe(u8, string),
+ .number => |number| std.fmt.allocPrint(allocator, "{}", .{number}),
+ .boolean => |boolean| std.fmt.allocPrint(allocator, "{}", .{boolean}),
+ .nil => allocator.dupe(u8, "nil"),
},
- .unary => |unary| try parenthesize(allocator, unary.operator.lexeme, &.{unary.right}),
+ .unary => |unary| parenthesize(allocator, unary.operator.lexeme, &.{unary.right}),
};
}
}
try builder.append(allocator, ')');
- return try builder.toOwnedSlice(allocator);
+ return builder.toOwnedSlice(allocator);
}