about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2025-01-30 20:27:13 +0100
committerBaitinq <[email protected]>2025-01-30 20:27:13 +0100
commit7216a6268d4e4a778b07ee27f0ec276a1ad4bbe1 (patch)
treee208efd4cf243870328447f2a18fcc609062f239 /src
parentCodegen: Cleanup (diff)
downloadinterpreter-7216a6268d4e4a778b07ee27f0ec276a1ad4bbe1.tar.gz
interpreter-7216a6268d4e4a778b07ee27f0ec276a1ad4bbe1.tar.bz2
interpreter-7216a6268d4e4a778b07ee27f0ec276a1ad4bbe1.zip
Codegen: Get addition kind of working
Diffstat (limited to 'src')
-rw-r--r--src/codegen.zig16
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,
         };
     }