diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-07 20:42:16 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-07 20:42:16 +0100 |
| commit | d52bb965c5f9c2548dfef67cca1b089db26ad71c (patch) | |
| tree | aa58f1c114d194fba9f78b2dd1c548b94495a7de /src/main/java | |
| parent | d73f24563db38a46318acf0d4b0378ac787fb593 (diff) | |
Parse namespace body
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/ast/UntypedNamespaceNode.java | 3 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/parser/Parser.java | 11 |
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) { |
