aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig46
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;
+}