diff options
| author | Nic Gaffney <gaffney_nic@protonmail.com> | 2025-02-18 17:13:13 -0600 |
|---|---|---|
| committer | Nic Gaffney <gaffney_nic@protonmail.com> | 2025-02-18 17:13:13 -0600 |
| commit | 296564bbced8c3fa197ede9b16af60a4f88e350f (patch) | |
| tree | 7d3e4c1c4a8b68e2ee4a9d38dddf9b6b982aaadf /src/main.zig | |
| parent | 8f2595c71bce8d2f14de334d6e1b6378cc9f7cbf (diff) | |
| parent | 7db4d88fe0455a6f3bd58414afa0565cd4a74f9d (diff) | |
| download | calico-296564bbced8c3fa197ede9b16af60a4f88e350f.tar.gz | |
Merge branch 'repairBranch'
Restored lost progress from previous `git push --force`
Diffstat (limited to 'src/main.zig')
| -rw-r--r-- | src/main.zig | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/main.zig b/src/main.zig index 9e53ecd..b51b170 100644 --- a/src/main.zig +++ b/src/main.zig @@ -49,20 +49,26 @@ pub fn main() !void { const tokens = try tokenizer.tokenize(); // Parse - var symbTable = try initSymbolTable(allocator); - defer symbTable.deinit(); + // var arena = std.heap.ArenaAllocator.init(allocator); + const symbTable = try initSymbolTable(arena.allocator()); - var parser = parse.Parser.init(allocator, tokens, symbTable); - defer parser.deinit(); + var parser = parse.Parser.init(arena.allocator(), tokens, symbTable); const tree = try parser.parse(); var treeNode = tree.asNode(); - var pop = symb.Populator.init(allocator); + var pop = symb.Populator.init(arena.allocator()); try pop.populateSymtable(&treeNode); + // var iter = symbTable.scope.?.symbs.iterator(); + // while (iter.next()) |entry| { + // std.debug.print("{s} -> {any}\n", .{ entry.key_ptr.*, entry.value_ptr.* }); + // } // Codegen - var generator = gen.Generator.init(allocator, tree); + const fname = try allocator.dupeZ(u8, inputFileName.?); + defer allocator.free(fname); + var generator = gen.Generator.init(arena.allocator(), tree, @ptrCast(fname)); defer generator.deinit(); const code = try generator.generate(); + // std.debug.print("{s}\n", .{code}); try outWriter.writeAll(code); const binFile = try getFileName(allocator, out_name, ""); @@ -83,6 +89,10 @@ inline fn getFileName(allocator: std.mem.Allocator, out_name: []const u8, fileTy pub fn initSymbolTable(allocator: std.mem.Allocator) !*symb.SymbolTable { var table = try symb.SymbolTable.init(allocator); const intSymb: symb.SymbType = symb.SymbType.Integer; + const charSymb: symb.SymbType = symb.SymbType.Character; + const strSymb: symb.SymbType = symb.SymbType.String; if (!try table.insert("i32", intSymb.toSymb())) return error.FailedToInsert; + if (!try table.insert("u8", charSymb.toSymb())) return error.FailedToInsert; + if (!try table.insert("[u8]", strSymb.toSymb())) return error.FailedToInsert; return table; } |
