diff options
author | Baitinq <manuelpalenzuelamerino@gmail.com> | 2025-01-30 20:27:13 +0100 |
---|---|---|
committer | Baitinq <manuelpalenzuelamerino@gmail.com> | 2025-01-30 20:27:13 +0100 |
commit | 992d9feb3ded8b01a929c1e3a9204b134f025063 (patch) | |
tree | e208efd4cf243870328447f2a18fcc609062f239 /src/codegen.zig | |
parent | Codegen: Cleanup (diff) | |
download | interpreter-992d9feb3ded8b01a929c1e3a9204b134f025063.tar.gz interpreter-992d9feb3ded8b01a929c1e3a9204b134f025063.tar.bz2 interpreter-992d9feb3ded8b01a929c1e3a9204b134f025063.zip |
Codegen: Get addition kind of working
Diffstat (limited to '')
-rw-r--r-- | src/codegen.zig | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index b8606a2..9278650 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -213,12 +213,16 @@ pub const CodeGen = struct { .IDENTIFIER => |i| self.symbol_table.get(i.name).?, else => unreachable, }, - // .ADDITIVE_EXPRESSION => |exp| { - // const lhs_value = self.get_expression_value(exp.lhs); - // const rhs_value = self.get_expression_value(exp.rhs); - // - // core.LLVMBuildAdd(self.builder, lhs_value, rhs_value); - // }, + .ADDITIVE_EXPRESSION => |exp| { + const lhs_value = try self.generate_expression_value(exp.lhs); + const rhs_value = try self.generate_expression_value(exp.rhs); + + const xd = core.LLVMBuildAdd(self.builder, lhs_value.value, rhs_value.value, "") orelse return CodeGenError.CompilationError; + return self.create_variable(.{ + .value = xd, + .type = core.LLVMInt64Type(), + }); + }, else => unreachable, }; } |