From 53d41b31e714765d356f2130b694dd1739d85ffd Mon Sep 17 00:00:00 2001 From: Luna Date: Wed, 18 Sep 2019 11:37:08 -0300 Subject: [PATCH 1/2] add examples/hello.ry --- examples/hello.ry | 11 +++++++++++ src/main.zig | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 examples/hello.ry diff --git a/examples/hello.ry b/examples/hello.ry new file mode 100644 index 0000000..1bf8dba --- /dev/null +++ b/examples/hello.ry @@ -0,0 +1,11 @@ +import std; + +fn add(a: i32, b: i32) i32 { + return a + b; +} + +// type is void by default +fn main() { + std.fmt.print("piss\n"); + // std.fmt.print("2 + 2 = %d\n", add(1, 2)); +} diff --git a/src/main.zig b/src/main.zig index 128820d..5a8e280 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,5 +1,9 @@ const std = @import("std"); pub fn main() anyerror!void { - std.debug.warn("All your base are belong to us.\n"); + const allocator = std.heap.direct_allocator; + var args_it = std.process.args(); + _ = args_it.skip(); + + const filepath = try (args_it.next(allocator) orelse @panic("expected file path")); } From 3b8943731eb8deecd7a95a690bcae8e6aef9c1ca Mon Sep 17 00:00:00 2001 From: Luna Date: Wed, 18 Sep 2019 12:11:08 -0300 Subject: [PATCH 2/2] main: add Result enum --- src/main.zig | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/main.zig b/src/main.zig index 5a8e280..45c2407 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,9 +1,43 @@ const std = @import("std"); +pub const Result = enum { + Ok, + TokenizeError, + ParseError, + CompileError, +}; + +pub fn run(allocator: *std.mem.Allocator, slice: []const u8) Result { + return Result.Ok; +} + pub fn main() anyerror!void { const allocator = std.heap.direct_allocator; var args_it = std.process.args(); _ = args_it.skip(); const filepath = try (args_it.next(allocator) orelse @panic("expected file path")); + + var file = try std.fs.File.openRead(filepath); + defer file.close(); + + const total_bytes = try file.getEndPos(); + + var slice = try allocator.alloc(u8, total_bytes); + defer allocator.free(slice); + + _ = try file.read(slice); + + //switch (try run(allocator, slice)) { + switch (run(allocator, slice)) { + .Ok => {}, + + .TokenizeError, + .ParseError, + .CompileError, + => |res| { + std.debug.warn("error: {}\n", res); + std.os.exit(1); + }, + } }