diff options
| author | Elias Haugsbakk <[email protected]> | 2026-09-20 21:07:25 +0200 |
|---|---|---|
| committer | Elias Haugsbakk <[email protected]> | 2026-09-20 21:07:25 +0200 |
| commit | 79fc3dd706b968a9249dfd2db6b5175e4e4a85d4 (patch) | |
| tree | e42e55e1aaef5b0b4e1f322888b47ec6e6fbdb5f /src/main/java/no/eliashaugsbakk/kompilator/IRGeneration/Instr.java | |
| parent | 1422d647cddb577fafc19ee97e33a394aefc560b (diff) | |
update IRGeneration generates records. Variables implemented.
Diffstat (limited to 'src/main/java/no/eliashaugsbakk/kompilator/IRGeneration/Instr.java')
| -rw-r--r-- | src/main/java/no/eliashaugsbakk/kompilator/IRGeneration/Instr.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/IRGeneration/Instr.java b/src/main/java/no/eliashaugsbakk/kompilator/IRGeneration/Instr.java new file mode 100644 index 0000000..09ed4f6 --- /dev/null +++ b/src/main/java/no/eliashaugsbakk/kompilator/IRGeneration/Instr.java @@ -0,0 +1,33 @@ +package no.eliashaugsbakk.kompilator.IRGeneration; + +import java.util.List; + +public sealed interface Instr permits Alloc, Assign, Call { +} + + +// allocate a new variable: set x: string = "Hello"; mut y: string?; +// +// Alloc("x", "string", false, "Hello") // Alloc("y", "string", true, "null") +record Alloc(String name, String type, boolean mutable, String initializer) implements Instr { + @Override + public String toString() { + return "Alloc[name=" + name + ", type=" + type + ", mutable=" + mutable + ", initializer=\"" + initializer + "\"]"; + } +} + + +// assign a value to a variable: x = "Hello"; +// Assign("x", "Hello") +record Assign(String name, String value) implements Instr { + @Override + public String toString() { + return "Assign[name=" + name + ", value=\"" + value + "\"]"; + } +} + + +// call a function: skriv("hello"); +// Call("skriv", ["t1"]) +record Call(String fn, List<String> args) implements Instr { +} |
