diff options
| author | Baitinq <[email protected]> | 2025-01-30 20:27:13 +0100 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-01-30 20:27:13 +0100 |
| commit | 7216a6268d4e4a778b07ee27f0ec276a1ad4bbe1 (patch) | |
| tree | e208efd4cf243870328447f2a18fcc609062f239 /src | |
| parent | Codegen: Cleanup (diff) | |
| download | pry-lang-7216a6268d4e4a778b07ee27f0ec276a1ad4bbe1.tar.gz pry-lang-7216a6268d4e4a778b07ee27f0ec276a1ad4bbe1.tar.bz2 pry-lang-7216a6268d4e4a778b07ee27f0ec276a1ad4bbe1.zip | |
Codegen: Get addition kind of working
Diffstat (limited to 'src')
| -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, }; } |