diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-08-19 12:57:10 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-08-19 12:57:10 +0100 |
| commit | 71fc5352c8c183b91f540ec1134dda24a32ce26c (patch) | |
| tree | 9b45efa4e05cbfa1d60f81d9b77da1da37dffa3c /src/main/java | |
| parent | f2787ed9b40deabbbc9cbe2a6d38cafd1436fc6f (diff) | |
Add typed while node
Diffstat (limited to 'src/main/java')
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"); }; } |
