diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-10 15:43:02 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-10 15:43:02 +0100 |
| commit | 363cf48c00910afbe75107549372968ea1ba23b7 (patch) | |
| tree | 1705bad1805ca9197c2ee753616b263ca2b4c9e0 /src/main/java | |
| parent | d195d95f685b6f161915b564b948a95888f40871 (diff) | |
Add instruction to define functions
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/stackir/instructions/DefineFunctionInstruction.java | 17 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java | 6 |
2 files changed, 22 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/stackir/instructions/DefineFunctionInstruction.java b/src/main/java/org/shedlang/compiler/stackir/instructions/DefineFunctionInstruction.java new file mode 100644 index 00000000..fef0583f --- /dev/null +++ b/src/main/java/org/shedlang/compiler/stackir/instructions/DefineFunctionInstruction.java @@ -0,0 +1,17 @@ +package org.shedlang.compiler.stackir.instructions; + +import org.shedlang.compiler.sources.Source; + +import java.util.List; + +public record DefineFunctionInstruction( + String name, + List<Param> positionalParams, + List<Param> namedParams, + List<Instruction> body, + Source source +) implements Instruction { + public record Param(String name, Source source) { + + } +} diff --git a/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java b/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java index 0b5d9dd8..2ff0eebc 100644 --- a/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java +++ b/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java @@ -1,5 +1,9 @@ package org.shedlang.compiler.stackir.instructions; +import org.shedlang.compiler.sources.Source; + public sealed interface Instruction - permits CallInstruction, DiscardInstruction, LocalLoadInstruction, LocalStoreInstruction, PushBoolInstruction, PushIntInstruction, PushStringInstruction { + permits CallInstruction, DefineFunctionInstruction, DiscardInstruction, LocalLoadInstruction, LocalStoreInstruction, PushBoolInstruction, PushIntInstruction, PushStringInstruction { + + Source source(); } |
