aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-07 19:27:16 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-07 19:27:16 +0100
commitea029c89aff87d3d4b352a495d06b1fe67ec4432 (patch)
tree2fd7c63b29b2050f5d7fd8fc386ec7bb4837e3b1 /src/main/java
parent3cb64a2536dabcb89f449e81fa5453e528ecd446 (diff)
Add parser for type level references
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/ast/UntypedTypeLevelExpressionNode.java4
-rw-r--r--src/main/java/org/shedlang/compiler/ast/UntypedTypeLevelReferenceNode.java9
-rw-r--r--src/main/java/org/shedlang/compiler/parser/Parser.java11
3 files changed, 24 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/UntypedTypeLevelExpressionNode.java b/src/main/java/org/shedlang/compiler/ast/UntypedTypeLevelExpressionNode.java
new file mode 100644
index 00000000..2d9ed626
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/ast/UntypedTypeLevelExpressionNode.java
@@ -0,0 +1,4 @@
+package org.shedlang.compiler.ast;
+
+public sealed interface UntypedTypeLevelExpressionNode extends UntypedNode permits UntypedTypeLevelReferenceNode {
+}
diff --git a/src/main/java/org/shedlang/compiler/ast/UntypedTypeLevelReferenceNode.java b/src/main/java/org/shedlang/compiler/ast/UntypedTypeLevelReferenceNode.java
new file mode 100644
index 00000000..261b6e8f
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/ast/UntypedTypeLevelReferenceNode.java
@@ -0,0 +1,9 @@
+package org.shedlang.compiler.ast;
+
+import org.shedlang.compiler.sources.Source;
+
+public record UntypedTypeLevelReferenceNode(
+ String name,
+ Source source
+) implements UntypedTypeLevelExpressionNode {
+}
diff --git a/src/main/java/org/shedlang/compiler/parser/Parser.java b/src/main/java/org/shedlang/compiler/parser/Parser.java
index 74f9a79b..68def52d 100644
--- a/src/main/java/org/shedlang/compiler/parser/Parser.java
+++ b/src/main/java/org/shedlang/compiler/parser/Parser.java
@@ -153,6 +153,17 @@ public class Parser {
}
}
+ static UntypedTypeLevelExpressionNode parseTopLevelTypeLevelExpression(TokenIterator<TokenType> tokens) {
+ var start = tokens.position();
+
+ var name = tokens.nextValue(TokenType.IDENTIFIER);
+
+ var end = tokens.position();
+ var source = start.to(end);
+
+ return new UntypedTypeLevelReferenceNode(name, source);
+ }
+
static UntypedNamespaceNode parseNamespace(TokenIterator<TokenType> tokens) {
var start = tokens.position();
var end = tokens.position();