feat: minimal virtual machine / runtime port from ink-c

This commit is contained in:
Brett Broadhurst 2026-03-02 11:51:08 -07:00
parent 619eb3b338
commit 849908f251
Failed to generate hash of commit
5 changed files with 833 additions and 35 deletions

View file

@ -1,40 +1,9 @@
const std = @import("std");
const tokenizer = @import("tokenizer.zig");
pub const Story = @import("Story.zig");
pub const Ast = @import("Ast.zig");
pub const Story = struct {
pub const LoadOptions = struct {
dump_writer: *std.Io.Writer,
dump_use_color: bool = true,
};
pub fn loadFromString(
gpa: std.mem.Allocator,
source_bytes: [:0]const u8,
options: LoadOptions,
) !Story {
var arena_allocator = std.heap.ArenaAllocator.init(gpa);
defer arena_allocator.deinit();
const arena = arena_allocator.allocator();
var ast = try Ast.parse(gpa, arena, source_bytes, "<STDIN>", 0);
defer ast.deinit(gpa);
try ast.render(gpa, options.dump_writer, .{
.use_color = options.dump_use_color,
});
if (ast.errors.len > 0) {
try ast.renderErrors(gpa, options.dump_writer, .{
.use_color = options.dump_use_color,
});
return error.Invalid;
}
return .{};
}
pub fn deinit(_: *Story) void {}
};
test {
_ = tokenizer;
_ = Ast;
_ = Story;
}