From 8296d3c6393e216c10c531f06aa076a72269c958 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 30 May 2026 17:35:39 +0100 Subject: Add parsing for qualified type name --- .../org/zwobble/hobgoblin/compiler/parser/Parser.java | 16 ++++++++++++++++ .../hobgoblin/compiler/types/QualifiedTypeName.java | 4 ++++ 2 files changed, 20 insertions(+) create mode 100644 src/main/java/org/zwobble/hobgoblin/compiler/types/QualifiedTypeName.java (limited to 'src/main/java/org') diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java index 05c429d..4beca21 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java @@ -5,6 +5,7 @@ import org.zwobble.hobgoblin.compiler.ast.untyped.*; import org.zwobble.hobgoblin.compiler.sources.FileFragmentSource; import org.zwobble.hobgoblin.compiler.sources.Source; import org.zwobble.hobgoblin.compiler.types.NamespaceName; +import org.zwobble.hobgoblin.compiler.types.QualifiedTypeName; import org.zwobble.sourcetext.SourcePosition; import org.zwobble.sourcetext.SourceText; @@ -239,6 +240,21 @@ public class Parser { ); } + public static QualifiedTypeName parseQualifiedTypeName(SourceText sourceText) { + var tokens = Tokenizer.tokenize(sourceText); + var tokenIterator = tokens.iterator(); + var namespaceName = parseQualifiedTypeName(tokenIterator); + tokenIterator.skip(TokenType.END); + return namespaceName; + } + + static QualifiedTypeName parseQualifiedTypeName(TokenIterator tokens) { + var namespaceName = parseNamespaceName(tokens); + tokens.skip(TokenType.SYMBOL_DOT); + var typeName = parseIdentifier(tokens); + return new QualifiedTypeName(namespaceName, typeName); + } + public static NamespaceName parseNamespaceName(SourceText sourceText) { var tokens = Tokenizer.tokenize(sourceText); var tokenIterator = tokens.iterator(); diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/types/QualifiedTypeName.java b/src/main/java/org/zwobble/hobgoblin/compiler/types/QualifiedTypeName.java new file mode 100644 index 0000000..b92b690 --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/types/QualifiedTypeName.java @@ -0,0 +1,4 @@ +package org.zwobble.hobgoblin.compiler.types; + +public record QualifiedTypeName(NamespaceName namespaceName, String name) { +} -- cgit v1.2.3