From d52bb965c5f9c2548dfef67cca1b089db26ad71c Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 7 Jun 2023 20:42:16 +0100 Subject: Parse namespace body --- .../java/org/shedlang/compiler/ast/UntypedNamespaceNode.java | 3 +++ src/main/java/org/shedlang/compiler/parser/Parser.java | 11 +++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'src/main/java') 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 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 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 tokens) { -- cgit v1.2.3