First pass of parser complete.

This commit is contained in:
Drew Galbraith 2023-08-29 15:17:49 -07:00
parent 44792e5c19
commit 7236c0b43a
6 changed files with 221 additions and 12 deletions

View file

@ -1,6 +1,8 @@
const std = @import("std");
const scanner = @import("scanner.zig");
const expr = @import("expr.zig");
const parser = @import("parser.zig");
const err = @import("error.zig");
pub fn main() !void {
@ -56,8 +58,17 @@ fn runPrompt(alloc: std.mem.Allocator) !void {
fn run(allocator: std.mem.Allocator, bytes: []u8) !void {
var scan = scanner.Scanner.init(allocator, bytes);
defer scan.deinit();
std.debug.print("{any}\n", .{scan.scanTokens()});
}
// Error reporting
// TODO: Move to a separate file.
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
defer arena.deinit();
var alloc = arena.allocator();
var parse = parser.Parser{
.tokens = scan.scanTokens(),
.allocator = alloc,
};
const expression = try parse.expression();
// std.debug.print("AST: {}", .{expression.*});
expr.AstPrint(expression.*);
std.debug.print("\n", .{});
}