const std = @import("std"); pub const Grammar = @import("grammar.zig"); pub const gss = @import("gss.zig"); pub const recognizer = @import("recognizer.zig"); pub const argument = @import("argument.zig"); pub const command = @import("command/root.zig"); pub const Generator = @import("generator.zig").Generator; pub const Scheduler = @import("scheduler.zig").Scheduler; const Args = argument.Args; const BenchmarkArgs = argument.BenchmarkArgs; const GenerateArgs = argument.GenerateArgs; pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; const allocator = gpa.allocator(); defer { if (gpa.deinit() == .leak) { @panic("memory leak detected"); } } var arguments = Args.parse(allocator); defer arguments.deinit(); try switch(arguments) { .benchmark => |*args| command.benchmark(args, allocator), .generate => |*args| command.generate(args, allocator), }; } test { std.testing.refAllDecls(@This()); }