From 792f271de057315eb5ba1e0bac3a7c6b90da450a Mon Sep 17 00:00:00 2001 From: Baitinq Date: Mon, 6 Jan 2025 12:47:53 +0100 Subject: Start writing parser --- src/main.zig | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/main.zig') diff --git a/src/main.zig b/src/main.zig index 3be7b14..128ad7e 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,11 +1,14 @@ const std = @import("std"); const tokenizer = @import("tokenizer.zig"); +const parser = @import("parser.zig"); pub fn main() !void { const pathLen = std.mem.len(std.os.argv[1]); const path = std.os.argv[1][0..pathLen]; std.debug.print("Tokenizing! {s}\n", .{path}); + //TODO: Repl mode + const file = try std.fs.cwd().openFile(path, .{}); var gpa = std.heap.GeneralPurposeAllocator(.{}){}; @@ -20,10 +23,20 @@ pub fn main() !void { std.debug.print("Buf:\n{s}\n", .{buf}); + var token_list = std.ArrayList(tokenizer.Token).init(allocator); + defer token_list.deinit(); + var sourceTokenizer = try tokenizer.Tokenizer.init(buf); while (sourceTokenizer.next()) |token| { + try token_list.append(token); + } + + for (token_list.items) |token| { std.debug.print("{any}\n", .{token}); } + + const ast = try parser.Parser.parse(token_list.items); + std.debug.print("AST: {any}\n", .{ast}); } test { -- cgit 1.4.1