summaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/hobgoblin/compiler
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-10-22 21:26:09 +0100
committerMichael Williamson <mike@zwobble.org>2026-10-22 21:26:09 +0100
commit76dba2d183609094788afafe0cebd2045b212882 (patch)
tree3dfbd91de37cb213207b016aeb9c848f82f04962 /src/main/java/org/zwobble/hobgoblin/compiler
parent7244772054d4ee47e33b4791c689f61fa0dc83dd (diff)
Parse query expression referencemain
Diffstat (limited to 'src/main/java/org/zwobble/hobgoblin/compiler')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionNode.java18
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionReferenceNode.java38
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java15
3 files changed, 71 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionNode.java
new file mode 100644
index 0000000..268e47a
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionNode.java
@@ -0,0 +1,18 @@
+// Generated by hobgoblin.
+
+package org.zwobble.hobgoblin.compiler.ast.untyped;
+
+// Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode imports
+// Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode imports
+
+public sealed interface UntypedQueryExpressionNode permits org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode {
+ public interface Builder {
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode build();
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode.Builder body
+ // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode.Builder body
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode body
+ // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode body
+}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionReferenceNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionReferenceNode.java
new file mode 100644
index 0000000..e45a6bf
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedQueryExpressionReferenceNode.java
@@ -0,0 +1,38 @@
+// Generated by hobgoblin.
+
+package org.zwobble.hobgoblin.compiler.ast.untyped;
+
+// Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode imports
+// Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode imports
+
+public record UntypedQueryExpressionReferenceNode(
+ String name,
+ org.zwobble.hobgoblin.compiler.sources.Source source
+) implements org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode {
+ public static org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder arbitrary() {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder("", org.zwobble.hobgoblin.compiler.sources.HobgoblinNativeSources.arbitrarySource());
+ }
+
+ public record Builder(
+ String name,
+ org.zwobble.hobgoblin.compiler.sources.Source source
+ ) implements org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionNode.Builder {
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode build() {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode(name, source);
+ }
+
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder withName(String name) {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder(name, source);
+ }
+
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder withSource(org.zwobble.hobgoblin.compiler.sources.Source source) {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder(name, source);
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder body
+ // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode.Builder body
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode body
+ // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedQueryExpressionReferenceNode body
+}
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 3563d0a..4003368 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java
@@ -455,6 +455,21 @@ public class Parser {
);
}
+ // == Query expressions ==
+
+ static UntypedQueryExpressionNode parseQueryExpression(TokenIterator tokens) {
+ var start = tokens.startPosition();
+
+ var name = parseIdentifier(tokens);
+
+ var end = tokens.endPosition();
+ var source = createSource(start, end);
+
+ return new UntypedQueryExpressionReferenceNode(name, source);
+ }
+
+ // == Qualified type names ==
+
public static QualifiedTypeName parseQualifiedTypeName(SourceText sourceText) {
var tokens = Tokenizer.tokenize(sourceText);
var tokenIterator = tokens.iterator();