From 7b85276fc98643b1138df6f322b8bd657339ea96 Mon Sep 17 00:00:00 2001 From: Mathias Magnusson Date: Wed, 28 May 2025 23:00:32 +0200 Subject: initial commit --- src/main.zig | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/main.zig (limited to 'src/main.zig') 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; +} -- cgit v1.2.3