aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-08-19 12:57:10 +0100
committerMichael Williamson <mike@zwobble.org>2023-08-19 12:57:10 +0100
commit71fc5352c8c183b91f540ec1134dda24a32ce26c (patch)
tree9b45efa4e05cbfa1d60f81d9b77da1da37dffa3c /src/main/java
parentf2787ed9b40deabbbc9cbe2a6d38cafd1436fc6f (diff)
Add typed while node
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/ast/typed/TypedFunctionStatementNode.java2
-rw-r--r--src/main/java/org/shedlang/compiler/ast/typed/TypedWhileNode.java14
-rw-r--r--src/main/java/org/shedlang/compiler/stackir/StackCompiler.java3
3 files changed, 18 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/typed/TypedFunctionStatementNode.java b/src/main/java/org/shedlang/compiler/ast/typed/TypedFunctionStatementNode.java
index 843d8c3e..b2995bff 100644
--- a/src/main/java/org/shedlang/compiler/ast/typed/TypedFunctionStatementNode.java
+++ b/src/main/java/org/shedlang/compiler/ast/typed/TypedFunctionStatementNode.java
@@ -1,5 +1,5 @@
package org.shedlang.compiler.ast.typed;
-public sealed interface TypedFunctionStatementNode extends TypedNode permits TypedAssignNode, TypedBlockReturnNode, TypedExpressionStatementNode, TypedFunctionReturnNode, TypedValNode, TypedVarNode {
+public sealed interface TypedFunctionStatementNode extends TypedNode permits TypedWhileNode, TypedAssignNode, TypedBlockReturnNode, TypedExpressionStatementNode, TypedFunctionReturnNode, TypedValNode, TypedVarNode {
TypedFunctionStatementBehaviour behaviour();
}
diff --git a/src/main/java/org/shedlang/compiler/ast/typed/TypedWhileNode.java b/src/main/java/org/shedlang/compiler/ast/typed/TypedWhileNode.java
new file mode 100644
index 00000000..f9e95900
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/ast/typed/TypedWhileNode.java
@@ -0,0 +1,14 @@
+package org.shedlang.compiler.ast.typed;
+
+import org.shedlang.compiler.sources.Source;
+
+public record TypedWhileNode(
+ TypedExpressionNode condition,
+ TypedBlockNode body,
+ Source source
+) implements TypedFunctionStatementNode {
+ @Override
+ public TypedFunctionStatementBehaviour behaviour() {
+ return TypedFunctionStatementBehaviour.CONTINUE;
+ }
+}
diff --git a/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java b/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java
index 5b58d975..cd38d602 100644
--- a/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java
+++ b/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java
@@ -226,6 +226,9 @@ public class StackCompiler {
case TypedVarNode var ->
compileVar(var, context);
+
+ case TypedWhileNode while_ ->
+ throw new UnsupportedOperationException("TODO");
};
}