From 29d59fd1346c54a1bc6163fb860783eed7888d45 Mon Sep 17 00:00:00 2001 From: Ayo Reis Date: Sun, 15 Feb 2026 16:39:31 +0000 Subject: [PATCH] Switch to Zig Build System --- .gitignore | 2 ++ README.md | 4 ---- build.zig | 23 +++++++++++++++++++++++ build.zig.zon | 12 ++++++++++++ Scanner.zig => src/Scanner.zig | 2 +- Token.zig => src/Token.zig | 0 lox.zig => src/main.zig | 0 token_type.zig => src/token_type.zig | 0 8 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 .gitignore create mode 100644 build.zig create mode 100644 build.zig.zon rename Scanner.zig => src/Scanner.zig (99%) rename Token.zig => src/Token.zig (100%) rename lox.zig => src/main.zig (100%) rename token_type.zig => src/token_type.zig (100%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..db3cb54 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.zig-cache/ +/zig-out/ diff --git a/README.md b/README.md index 1de96d0..84b40e2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ # Zlox An implementation of the [Lox language](https://craftinginterpreters.com/the-lox-language.html) in Zig. - -```shell -zig run lox.zig -``` diff --git a/build.zig b/build.zig new file mode 100644 index 0000000..c7ccf9a --- /dev/null +++ b/build.zig @@ -0,0 +1,23 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const exe = b.addExecutable(.{ + .name = "zlox", + .root_module = b.createModule(.{ + .root_source_file = b.path("src/main.zig"), + .target = b.standardTargetOptions(.{}), + .optimize = b.standardOptimizeOption(.{}), + }), + }); + + b.installArtifact(exe); + + const run_step = b.step("run", "Run the app"); + const run_cmd = b.addRunArtifact(exe); + run_step.dependOn(&run_cmd.step); + run_cmd.step.dependOn(b.getInstallStep()); + + if (b.args) |args| { + run_cmd.addArgs(args); + } +} diff --git a/build.zig.zon b/build.zig.zon new file mode 100644 index 0000000..b44d9fa --- /dev/null +++ b/build.zig.zon @@ -0,0 +1,12 @@ +.{ + .name = .zlox, + .version = "0.0.0", + .fingerprint = 0xd8b023c660b945d7, + .minimum_zig_version = "0.15.2", + + .paths = .{ + "build.zig", + "build.zig.zon", + "src", + }, +} diff --git a/Scanner.zig b/src/Scanner.zig similarity index 99% rename from Scanner.zig rename to src/Scanner.zig index 622c98e..c542e45 100644 --- a/Scanner.zig +++ b/src/Scanner.zig @@ -7,7 +7,7 @@ const Token = @import("Token.zig"); const Literal = Token.Literal; const Scanner = @This(); const TokenType = @import("token_type.zig").TokenType; -const lox = @import("lox.zig"); +const lox = @import("main.zig"); source: []const u8, tokens: std.ArrayList(Token) = .empty, diff --git a/Token.zig b/src/Token.zig similarity index 100% rename from Token.zig rename to src/Token.zig diff --git a/lox.zig b/src/main.zig similarity index 100% rename from lox.zig rename to src/main.zig diff --git a/token_type.zig b/src/token_type.zig similarity index 100% rename from token_type.zig rename to src/token_type.zig -- 2.53.0