From 363cf48c00910afbe75107549372968ea1ba23b7 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 10 Jun 2023 15:43:02 +0100 Subject: Add instruction to define functions --- .../stackir/instructions/DefineFunctionInstruction.java | 17 +++++++++++++++++ .../compiler/stackir/instructions/Instruction.java | 6 +++++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/shedlang/compiler/stackir/instructions/DefineFunctionInstruction.java (limited to 'src/main/java') 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 positionalParams, + List namedParams, + List 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(); } -- cgit v1.2.3