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; }