From f613e2b150cbe3a0bb7be56c2cc5406f6ef89918 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 7 Jun 2023 19:29:46 +0100 Subject: Add AST for function definition --- .../compiler/ast/UntypedFunctionDefinitionNode.java | 14 ++++++++++++++ .../compiler/ast/UntypedNamespaceStatementNode.java | 4 ++++ .../java/org/shedlang/compiler/ast/UntypedParamNode.java | 10 ++++++++++ .../java/org/shedlang/compiler/ast/UntypedParamsNode.java | 12 ++++++++++++ 4 files changed, 40 insertions(+) create mode 100644 src/main/java/org/shedlang/compiler/ast/UntypedFunctionDefinitionNode.java create mode 100644 src/main/java/org/shedlang/compiler/ast/UntypedNamespaceStatementNode.java create mode 100644 src/main/java/org/shedlang/compiler/ast/UntypedParamNode.java create mode 100644 src/main/java/org/shedlang/compiler/ast/UntypedParamsNode.java (limited to 'src/main/java') 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 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 positional, + List named, + Source source +) implements UntypedNode { +} -- cgit v1.2.3