diff options
author | Mathias Magnusson <mathias@magnusson.space> | 2025-05-28 23:00:32 +0200 |
---|---|---|
committer | Mathias Magnusson <mathias@magnusson.space> | 2025-05-28 23:00:32 +0200 |
commit | 7b85276fc98643b1138df6f322b8bd657339ea96 (patch) | |
tree | 3d36e1d4961f92caa0fe0e00bb8e27a0fd1242b5 /src/main.zig | |
download | huginn-7b85276fc98643b1138df6f322b8bd657339ea96.tar.gz |
initial commit
Diffstat (limited to 'src/main.zig')
-rw-r--r-- | src/main.zig | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/main.zig b/src/main.zig new file mode 100644 index 0000000..e897d41 --- /dev/null +++ b/src/main.zig @@ -0,0 +1,46 @@ +pub const peekable = peek.peekable; +pub const Peekable = peek.Peekable; + +pub fn main() !void { + var arena: std.heap.ArenaAllocator = .init(std.heap.smp_allocator); + defer arena.deinit(); + const allocator = arena.allocator(); + + var bw = std.io.bufferedWriter(std.io.getStdOut().writer()); + const stdout = bw.writer(); + + // var br = std.io.bufferedReader(std.io.getStdIn().reader()); + // const stdin = br.reader(); + // + // var line: std.ArrayList(u8) = .init(alloc); + // defer line.deinit(); + // while (true) { + // try stdin.streamUntilDelimiter(line.writer(), '\n', null); + // + // const lexer = Lexer{.source = line}; + // + // try stdout.print("{s}\n", .{line.items}); + // } + + const source = "69 + (32 + 1) + 2"; + // var lexer = Lexer{ .source = source }; + // while (true) { + // const token = lexer.next().?; + // try stdout.print("{}\n", .{token}); + // if (token.type == .Eof) break; + // } + // try stdout.print("\n", .{}); + var lexer2 = peekable(Lexer{ .source = source }); + try stdout.print("{}\n", .{try parse.expression(allocator, &lexer2)}); + + try bw.flush(); // Don't forget to flush! +} + +const std = @import("std"); +const Lexer = @import("./lexer.zig"); +const parse = @import("./parse.zig"); +const peek = @import("./peek.zig"); + +test { + _ = peek; +} |