aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/jq/compile.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/jq/compile.zig')
-rw-r--r--src/jq/compile.zig22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/jq/compile.zig b/src/jq/compile.zig
new file mode 100644
index 0000000..d81f8ac
--- /dev/null
+++ b/src/jq/compile.zig
@@ -0,0 +1,22 @@
+const std = @import("std");
+const Ast = @import("./parse.zig").Ast;
+
+pub const Opcode = enum {
+ nop,
+ identity,
+};
+
+pub const Instr = struct {
+ op: Opcode,
+};
+
+pub fn compile(allocator: std.mem.Allocator, compile_allocator: std.mem.Allocator, ast: *const Ast) ![]Instr {
+ _ = compile_allocator;
+ var instrs = try std.array_list.Aligned(Instr, null).initCapacity(allocator, 16);
+
+ switch (ast.kind) {
+ .identity => try instrs.append(allocator, .{ .op = .identity }),
+ }
+
+ return instrs.toOwnedSlice(allocator);
+}