aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-07 20:42:16 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-07 20:42:16 +0100
commitd52bb965c5f9c2548dfef67cca1b089db26ad71c (patch)
treeaa58f1c114d194fba9f78b2dd1c548b94495a7de /src/main/java
parentd73f24563db38a46318acf0d4b0378ac787fb593 (diff)
Parse namespace body
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/ast/UntypedNamespaceNode.java3
-rw-r--r--src/main/java/org/shedlang/compiler/parser/Parser.java11
2 files changed, 12 insertions, 2 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/UntypedNamespaceNode.java b/src/main/java/org/shedlang/compiler/ast/UntypedNamespaceNode.java
index 055e1a9e..c0e24f48 100644
--- a/src/main/java/org/shedlang/compiler/ast/UntypedNamespaceNode.java
+++ b/src/main/java/org/shedlang/compiler/ast/UntypedNamespaceNode.java
@@ -2,7 +2,10 @@ package org.shedlang.compiler.ast;
import org.shedlang.compiler.sources.Source;
+import java.util.List;
+
public record UntypedNamespaceNode(
+ List<UntypedNamespaceStatementNode> body,
Source source
) implements UntypedNode {
}
diff --git a/src/main/java/org/shedlang/compiler/parser/Parser.java b/src/main/java/org/shedlang/compiler/parser/Parser.java
index 5b17e80d..4cdcd7bf 100644
--- a/src/main/java/org/shedlang/compiler/parser/Parser.java
+++ b/src/main/java/org/shedlang/compiler/parser/Parser.java
@@ -242,10 +242,17 @@ public class Parser {
public static UntypedNamespaceNode parseNamespace(TokenIterator<TokenType> tokens) {
var start = tokens.position();
- var end = tokens.position();
+ var body = parseMany(
+ () -> tokens.isNext(TokenType.END),
+ () -> parseNamespaceStatement(tokens),
+ () -> true
+ );
+
+ var end = tokens.position();
var source = start.to(end);
- return new UntypedNamespaceNode(source);
+
+ return new UntypedNamespaceNode(body, source);
}
private static UntypedExpressionNode parseReference(TokenIterator<TokenType> tokens) {