diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-07 19:29:46 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-07 19:30:06 +0100 |
| commit | f613e2b150cbe3a0bb7be56c2cc5406f6ef89918 (patch) | |
| tree | 2685fd84aa1d12e55a218a0551544a14a3932a74 /src/main/java | |
| parent | ea029c89aff87d3d4b352a495d06b1fe67ec4432 (diff) | |
Add AST for function definition
Diffstat (limited to 'src/main/java')
4 files changed, 40 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/UntypedFunctionDefinitionNode.java b/src/main/java/org/shedlang/compiler/ast/UntypedFunctionDefinitionNode.java new file mode 100644 index 00000000..395a5f4a --- /dev/null +++ b/src/main/java/org/shedlang/compiler/ast/UntypedFunctionDefinitionNode.java @@ -0,0 +1,14 @@ +package org.shedlang.compiler.ast; + +import org.shedlang.compiler.sources.Source; + +import java.util.Optional; + +public record UntypedFunctionDefinitionNode( + String name, + UntypedParamsNode params, + Optional<UntypedTypeLevelExpressionNode> effect, + UntypedTypeLevelExpressionNode returnType, + Source source +) implements UntypedNamespaceStatementNode { +} diff --git a/src/main/java/org/shedlang/compiler/ast/UntypedNamespaceStatementNode.java b/src/main/java/org/shedlang/compiler/ast/UntypedNamespaceStatementNode.java new file mode 100644 index 00000000..06de16b6 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/ast/UntypedNamespaceStatementNode.java @@ -0,0 +1,4 @@ +package org.shedlang.compiler.ast; + +public sealed interface UntypedNamespaceStatementNode extends UntypedNode permits UntypedFunctionDefinitionNode { +} diff --git a/src/main/java/org/shedlang/compiler/ast/UntypedParamNode.java b/src/main/java/org/shedlang/compiler/ast/UntypedParamNode.java new file mode 100644 index 00000000..7bb6212b --- /dev/null +++ b/src/main/java/org/shedlang/compiler/ast/UntypedParamNode.java @@ -0,0 +1,10 @@ +package org.shedlang.compiler.ast; + +import org.shedlang.compiler.sources.Source; + +public record UntypedParamNode( + String name, + UntypedTypeLevelExpressionNode type, + Source source +) implements UntypedNode { +} diff --git a/src/main/java/org/shedlang/compiler/ast/UntypedParamsNode.java b/src/main/java/org/shedlang/compiler/ast/UntypedParamsNode.java new file mode 100644 index 00000000..f5c9e4a0 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/ast/UntypedParamsNode.java @@ -0,0 +1,12 @@ +package org.shedlang.compiler.ast; + +import org.shedlang.compiler.sources.Source; + +import java.util.List; + +public record UntypedParamsNode( + List<UntypedParamNode> positional, + List<UntypedParamNode> named, + Source source +) implements UntypedNode { +} |
