summary refs log tree commit diff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorBaitinq <manuelpalenzuelamerino@gmail.com>2025-01-30 20:27:13 +0100
committerBaitinq <manuelpalenzuelamerino@gmail.com>2025-01-30 20:27:13 +0100
commit992d9feb3ded8b01a929c1e3a9204b134f025063 (patch)
treee208efd4cf243870328447f2a18fcc609062f239 /src/codegen.zig
parentCodegen: Cleanup (diff)
downloadinterpreter-992d9feb3ded8b01a929c1e3a9204b134f025063.tar.gz
interpreter-992d9feb3ded8b01a929c1e3a9204b134f025063.tar.bz2
interpreter-992d9feb3ded8b01a929c1e3a9204b134f025063.zip
Codegen: Get addition kind of working
Diffstat (limited to '')
-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,
         };
     }