From 75fc1506e59c1eaa52971d20df72c7cbeca5ac82 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Thu, 9 Jun 2022 23:17:53 +0200 Subject: Pass the sanity test --- src/interpreter.zig | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/interpreter.zig (limited to 'src/interpreter.zig') diff --git a/src/interpreter.zig b/src/interpreter.zig new file mode 100644 index 0000000..5702336 --- /dev/null +++ b/src/interpreter.zig @@ -0,0 +1,36 @@ +const std = @import("std"); +const field = @import("field.zig"); +const pointer = @import("pointer.zig"); + +pub const Interpreter = struct { + allocator: std.mem.Allocator, + field: *field.Field, + pointer: *pointer.Pointer, + + pub fn deinit(self: *Interpreter) void { + self.allocator.destroy(self); + } + pub fn init(allocator: std.mem.Allocator, f: *field.Field, p: *pointer.Pointer) !*Interpreter { + var i = try allocator.create(Interpreter); + errdefer allocator.destroy(i); + i.allocator = allocator; + i.field = f; + i.pointer = p; + return i; + } + pub fn run(self: *Interpreter) !i64 { + while (true) { + if (try self.pointer.exec()) |ret| { + if (ret.code) |code| { + return code; + } else { + return 0; + } + } + } + } +}; + +test "all" { + std.testing.refAllDecls(@This()); +} -- cgit v1.2.3