From 71fc5352c8c183b91f540ec1134dda24a32ce26c Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 19 Aug 2023 12:57:10 +0100 Subject: Add typed while node --- .../compiler/ast/typed/TypedFunctionStatementNode.java | 2 +- .../org/shedlang/compiler/ast/typed/TypedWhileNode.java | 14 ++++++++++++++ .../java/org/shedlang/compiler/stackir/StackCompiler.java | 3 +++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/shedlang/compiler/ast/typed/TypedWhileNode.java (limited to 'src/main/java') 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"); }; } -- cgit v1.2.3