const std = @import("std"); pub const Result = enum { Ok, TokenizeError, ParseError, CompileError, }; pub fn run(allocator: *std.mem.Allocator, slice: []const u8) Result { return Result.Ok; } pub fn main() anyerror!void { const allocator = std.heap.direct_allocator; var args_it = std.process.args(); _ = args_it.skip(); const filepath = try (args_it.next(allocator) orelse @panic("expected file path")); var file = try std.fs.File.openRead(filepath); defer file.close(); const total_bytes = try file.getEndPos(); var slice = try allocator.alloc(u8, total_bytes); defer allocator.free(slice); _ = try file.read(slice); //switch (try run(allocator, slice)) { switch (run(allocator, slice)) { .Ok => {}, .TokenizeError, .ParseError, .CompileError, => |res| { std.debug.warn("error: {}\n", res); std.os.exit(1); }, } }